Tag: jndi

如何从Web容器外部查找JNDI数据源?

我有以下环境设置: Java 1.5 Sun Application Server 8.2 Oracle 10 XE Struts 2 过冬 我很想知道如何编写可以引用应用程序服务器提供的JNDI数据源的Java客户端(即Web应用程序之外)的代码。 Sun Application Server的端口都是默认端口。 服务器配置中有一个名为jdbc / xxxx的JNDI数据源,但我注意到Web应用程序的Hibernate配置使用名称java:comp / env / jdbc / xxxx。 到目前为止,我见过的大多数例子都涉及代码 Context ctx = new InitialContext(); ctx.lookup(“jdbc/xxxx”); 但似乎我要么使用错误的JNDI名称,要么我需要配置jndi.properties或其他配置文件来正确指向监听器? 我有来自Sun Application Server的appserv-rt.jar,里面有一个jndi.properties,但似乎没什么帮助。 这里有一个类似的问题,但它没有给出任何代码/指的是让iBatis自动获取JNDI数据源: 从Web容器外部访问数据源(通过JNDI)

使用由Tomcat创建的另一个应用程序创建的JNDI数据源

我的应用程序中有一个包含dataSource属性的.properties文件。 我使用以下代码设置了对此dataSource的JNDI引用: // first I create MyDataSource from the properties found in the .properties file //then : Context initContext = new InitialContext(); initContext.createSubcontext(“jdbc”); initContext.createSubcontext(“jdbc/oracle”); initContext.rebind(jdbc/oracle/myDataSource, MyDataSource); 如果我在此应用程序中使用查找,则会找到dataSource: Context initContext = new InitialContext(); BasicDataSource dataSource = (BasicDataSource) initContext.lookup(“jdbc/oracle/myDataSource”) //everything works fine and I can use my dataSource to getConnection, //requests, etc… 现在我想在另一个应用程序中使用此dataSource。 但是,如果我执行与之前相同的查找,我找不到myDataSource(而在tomcat中仍然存在先前的应用程序,并且在启动时通过侦听器完成jndi绑定)。 我如何在第二个应用程序中获取myDataSource,因为我不能在server.xml或context.xml文件中使用Tomcat的资源(出于不同的原因,我必须使用这个.properties文件)? 谢谢

在Java EE6中在类级别声明@Resource和@EJB

是否有任何情况(鉴于Java EE6具有java:global /,app /,模块/命名标准),需要声明EJB或资源,如下例所示? @EJB (name = “ejb/PlaceBid”, beanInterface = PlaceBid.class) public class ActionBazaarBidControllerServlet extends HttpServlet { } 在ActionBazaarBidControllerServlet使用的辅助类中查找PlaceBid PlaceBid placeBid = (PlaceBid)context.lookup(“java:comp/env/ejb/PlaceBid”);

LDAP如何在Java中搜索/validation此LDAP

我正在玩LDAP和Java搜索。 这是我的LDIF导出与一个简单的组织 version: 1 dn: dc=example,dc=com objectClass: organization objectClass: dcObject objectClass: top dc: example o: MyOrganization description: Test Description dn: ou=people, dc=example,dc=com objectClass: organizationalUnit objectClass: top ou: people description: All users in demo company dn: cn=Johnny Doe,ou=people,dc=example,dc=com objectClass: organizationalPerson objectClass: person objectClass: inetOrgPerson objectClass: top cn: Johnny Doe sn: Johnny homephone: 123-456-7890 mail: johnny@johnny.com ou: […]

如何使用给定的JNDI名称连接到Websphere数据源?

我正在使用Websphere Portal 7.0并使用RAD 8.0创建一个portlet。 我的portlet正在尝试与远程服务器建立db2连接。 我在本地编写了一个java程序来与服务器建立基本的JDBC连接,并从表中获取记录。 代码工作正常; 但是,当我将代码添加到我的portlet以及db2jcc4.jar时,连接不起作用。 我使用的是基本的: Connection connection = DriverManager.getConnection(“jdbc:db2://server:port/db:user=user;password=pw;”); 我认为使用Websphere数据源是正确的方法。 我知道数据源的JNDI名称,但我没有找到关于如何建立连接的明确示例。 有几个例子使用了一个DataSource类(我输入了这个类,这看起来好像它来自一个原生的java包,所以我在这里使用什么导入?)加上一个Context。 我遇到过如下代码: Context ctx = new InitialContext(); ctx.lookup(“jdbc/xxxx”); …有人可以为我打破这个吗? 编辑1 我根据列出的答案更新了我的代码。 我真的觉得我越走越近了。 这是我的getConnection()方法: private Connection getConnection() throws SQLException { javax.naming.InitialContext ctx = null; javax.sql.DataSource ds = null; System.out.println(“Attempting connection…” + DateUtil.now() ); try { ctx = new javax.naming.InitialContext(); ds = […]

尝试在Tomcat中将LDAP配置为JNDI资源

我有一个ldap服务器,我用它来validationtomcat Web应用程序中的用户。 我正在使用JNDIRealm,它在上下文文件中配置,这很好用。 我还需要在ldap中搜索用户信息。 我已经想出了如何使用“jndi方法”做到这一点,并且我通过使用哈希表创建自己的jndi上下文使其在tomcat之外正常工作。 但是,我不想在代码中配置jndi属性,而是想在Realm配置旁边的上下文文件中创建一个JNDI Rsource。 我想我会做这样的事情: 但是tomcat告诉我资源无法创建或者当我尝试用这样的东西初始化时: Context initctx = new InitialContext(); DirContext ctx = (DirContext) initctx.lookup(“java:comp/env/ldap”); Tomcat告诉我“无法创建资源实例”。 我还在我的web.xml文件中添加了正确的resource-ref,所以我不认为这是问题所在。 由于LDAP与JNDI方法一起使用,我假设它应该能够配置为资源,对吧? 我错过了什么?

如何在声明中将(绑定)对象放到jndi中?

我们有一个普通的独立spring应用程序,我们需要将jdbc数据源放在jndi中。 (我们使用jboss treecache,它需要数据源在jndi中)。 一些谷歌搜索发现大多数jndi查找示例与spring,其中一个对象已经放在jndi(通过tomcat或应用程序服务器等),但我们需要:我有一个简单的数据源Spring bean,我注入其他服务,但我无法将其注入TreeCache,因为它只需要来自jndi。 找到org.springframework.jndi.JndiTemplate ,可以声明为bean,例如: com.sun.jndi.fscontext.RefFSContextFactory file:///c:\windows\temp 但是没有找到如何在java代码中绑定它: fsJndiTemplate.bind(name, obj)来自其他bean的init-method。 有没有办法以声明方式做到这一点?

无法将连接强制转换为oracle.jdbc.OracleConnection

为什么java.sql.Connection无法在下面的代码中强制转换为oracle.jdbc.OracleConnection? 我的主要目标是传递给Oracle连接新用户名并将其保存在例如’osuser’列的’SESSION’表中,因为我想跟踪数据库用户更改并在表中显示它。 @Repository public class AuditLogDAOImpl implements AuditLogDAO { @PersistenceContext(unitName=”myUnitName”) EntityManager em; @Resource(name = “dataSource”) DataSource dataSource; public void init() { try { Connection connection = DataSourceUtils.getConnection(dataSource); OracleConnection oracleConnection = (OracleConnection) connection; //Here I got cast exception! String metrics[] = new String[OracleConnection.END_TO_END_STATE_INDEX_MAX]; metrics[OracleConnection.END_TO_END_CLIENTID_INDEX] = “my_new_username”; oracleConnection.setEndToEndMetrics(metrics, (short) 0); java.util.Properties props = new java.util.Properties(); props.put(“osuser”, “newValue”); […]

在jUnit中设置JNDI数据源

我正在尝试设置一些jUnit测试。 我们的数据库由服务器使用JNDI连接。 我们有一个xml描述了root.xml中的设置。 如何设置jUnit以连接数据库? 我宁愿让它只读取root.xml中的内容,但我仍然可以设置它,无论如何都可行。

JNDI路径Tomcat与Jboss

我有DataSource,它在context.xml中的T​​omcat 6上配置为MyDataSource。 而我是通过以下方式获取它: DataSource dataSource; try { dataSource = (DataSource) new InitialContext().lookup(“java:comp/env/MyDataSource”); } catch (NamingException e) { throw new DaoConfigurationException( “DataSource ‘” + url + “‘ is missing in JNDI.”, e); } 一切正常。 现在我将此代码导出到Jboss AP 6.我将dataSource及其连接池配置为local-tx dataSource,名称相同。 当我执行上面的代码时,我得到NamingExceptionexception。 经过一番调查,我发现在Jboss下调用我的DataSource的正确方法是 dataSource = (DataSource) new InitialContext().lookup(“java:/MyDataSource”); 任何人都可以解释一下我为什么要在Jboss下的JNDI路径中省略“comp / env”?