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

mas*_*ime 19 java jndi datasource jdbc

我有以下环境设置:

  • 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");
Run Code Online (Sandbox Code Playgroud)

但似乎我要么使用错误的JNDI名称,要么我需要配置jndi.properties或其他配置文件来正确指向监听器?我有来自Sun Application Server的appserv-rt.jar,里面有一个jndi.properties,但似乎没什么帮助.

这里有一个类似的问题,但它没有给出任何代码/指的是让iBatis自动获取JNDI数据源:从Web容器外部访问数据源(通过JNDI)

djs*_*dog 17

我陷入了这个完全相同的问题.我写了一个小教程.基本上,您必须创建自己的DataSource对象实现,并将它们添加到您自己的自定义初始上下文中.这里有源代码示例:

在本地运行使用Application Server数据源的Bean