帮助在Tomcat 5.5.x中使用嵌入式JBoss配置JNDI
时间:2020-03-06 14:36:56 来源:igfitidea点击:
当我在代码中尝试以下查找时:
Context initCtx = new InitialContext(); Context envCtx = (Context) initCtx.lookup("java:comp/env"); return (DataSource) envCtx.lookup("jdbc/mydb");
我得到以下异常:
java.sql.SQLException: QueryResults: Unable to initialize naming context: Name java:comp is not bound in this Context at com.onsitemanager.database.ThreadLocalConnection.getConnection (ThreadLocalConnection.java:130) at ...
我按照JBoss Wiki指示安装了嵌入式JBoss。然后,我使用配置Wiki页面中指定的"默认情况下扫描每个WAR"部署配置了Tomcat。
引用配置页面:
JNDI Embedded JBoss components like connection pooling, EJB, JPA, and transactions make extensive use of JNDI to publish services. Embedded JBoss overrides Tomcat's JNDI implementation by layering itself on top of Tomcat's JNDI instantiation. There are a few > reasons for this: To avoid having to declare each and every one of these services within server.xml To allow seemeless integration of the java:comp namespace between web apps and EJBs. Tomcat's JNDI implementation has a few critical bugs in it that hamper some JBoss components ability to work We want to provide the option for you of remoting EJBs and other services that can > be remotely looked up
任何人都对如何配置JBoss命名服务有任何想法,根据上面的引用,该服务将覆盖Tomcat的JNDI实现,以便我可以在java:comp / env上进行查找?
仅供参考我的环境Tomcat 5.5.9,Seam 2.0.2sp,嵌入式JBoss(Beta 3),
注意:我确实有一个-ds.xml文件,用于正确设置数据库连接,并可以按照说明在类路径上对其进行访问。
另请注意:我已经在嵌入式Jboss论坛和seam用户论坛中发布了此问题。
解决方案
java:comp / env被称为企业命名上下文(ENC),并且不是全局可见的。浏览此处获取更多信息。我们将需要找到数据源重新注册到的全局JNDI名称。
最简单的方法是导航到JBoss的基于Web的JMX控制台,然后查找" JNDIView"(不确定当前使用的名称)mbean。该mbean应该具有可以调用的list方法,该方法将显示所有JNDI绑定对象的上下文路径。
感谢我们提供响应工具包。...是的,我可以直接访问java:jdbc / mydb来访问我的数据源,但是我使用的是通过ENC连接的现有代码库。这是我发现的一些有趣的信息。
- 上面的代码适用于JBoss 4.2.2.GA,下面是使用的JNDI ctx参数:java.naming.factory.initial = org.jnp.interfaces.NamingContextFactory java.naming.factory.url.pkgs = org.jboss.naming :org.jnp.interfaces:org.jboss.naming:org.jnp.interfaces
- 上面的代码适用于Tomcat 5.5.x,下面是使用的JNDI ctx参数:java.naming.factory.initial = org.apache.naming.java.javaURLContextFactory java.naming.factory.url.pkgs = org.apache.naming
- 上面的代码在Tomcat 5.5.x中的Embedded JBoss(Beta 3)中失败,并带有上面的错误消息。 java.naming.factory.initial = org.apache.naming.java.javaURLContextFactory java.naming.factory.url.pkgs = org.apache.naming以上代码失败,并使用tomcat 5.5.x中的JBoss Embedded导致上述错误
有人对配置嵌入式JBoss JNDI配置有什么想法吗?