Weblogic 数据源命名JBossEAP 6.2与Web逻辑

Weblogic 数据源命名JBossEAP 6.2与Web逻辑,weblogic,datasource,jndi,jboss-eap-6,Weblogic,Datasource,Jndi,Jboss Eap 6,我正在将一套相关应用程序从WebLogic移植到JBoss EAP v6.2 我已经使用JBoss命令行界面建立了数据源连接,并将其连接到oracle数据库。此数据库的名称为“mydatasource”,JNDI名称为 “java:jboss/datasources/mydatasource”符合jboss标准。我可以测试和验证这个数据库连接 但是,当我尝试移植代码并运行它时,连接无法工作。在WebLogic中工作的代码很简单: InitialContext ic = new Initi

我正在将一套相关应用程序从WebLogic移植到JBoss EAP v6.2

我已经使用JBoss命令行界面建立了数据源连接,并将其连接到oracle数据库。此数据库的名称为“mydatasource”,JNDI名称为 “java:jboss/datasources/mydatasource”符合jboss标准。我可以测试和验证这个数据库连接

但是,当我尝试移植代码并运行它时,连接无法工作。在WebLogic中工作的代码很简单:

    InitialContext ic = new InitialContext() ;
    DataSource ds = (DataSource)ic.lookup(dataSource) ;
数据源中的值为“mydatasource”

这在Web逻辑中起作用,但在JBoss中会引发NameNotFoundException

javax.naming.NameNotFoundException: mydatasource-- service jboss.naming.context.java.mydatasource
显然,在两台服务器之间设置InitialContext的方式存在差异

但是这个端口涉及大量小型应用程序,所有这些应用程序都通过上面的代码连接到数据源。我不想重写所有的代码

是否有一种通过配置(InitialContextFactory,也许)来定义初始上下文的方法,这样上面的代码就可以在不重写的情况下工作,或者是否有另一种命名JBoss将接受的数据源的方法,允许上面的代码在不重写的情况下工作

或者我们必须咬紧牙关接受这段代码需要重写吗


更新:是的,我知道只需将“java:jboss/datasources/mydatasource”传递给InitialContext查找即可解决问题,但是我正在通过配置寻找解决方案,而不是通过编码(如果有这样的解决方案)。

通过配置正确实现这一点的方法是使用

java:comp/env/jdbc/myDataSource

然后使用web.xml中的resource ref将其映射到declare数据源,并使用weblogic.xml或jboss-web.xml将其实际映射到真实数据源

在weblogic管理控制台中,当您定义datasource时,它可以是jdbc/realDataSource


对于weblogic

数据源的值是多少?它必须是
java:jboss/datasources/mydatasource
,因为这是您给它起的名字。在服务器启动时,您应该在日志中看到绑定数据源名称的列表。是的,这就是问题所在。不知何故,在Web逻辑中,InitialContext能够只解析“mydatasource”,而无需任何原始样板文件。我不想更改代码,但我可能不得不更改。让它成为“java:jboss/datasources/mydatasource”可以很容易地解决这个问题,但我一直在寻找通过配置而不是编码来处理这个问题的方法,因为我可能需要在数百个地方制作相同的mod。@Kalpesh_-Soni:谢谢。我对你的“JNDI路径Tomcat vs.Jboss”链接很感兴趣,特别是“选项2”,但我有一个问题,那页没有提到它适用于哪个版本的Jboss。有什么东西不能与JBoss EAP 6.2一起使用吗?我应该提到注释,是的,在迁移旧应用程序时,您应该尽可能多地使用注释,并尽可能少地使用xml,jboss eap 6+是经过java ee 6认证的,@Resource@EJB@WebServlet将起作用-这里是一个大图,可以注入不同类型的资源@Kalpesh_Soni:您的回答是正确的,尽管最终我们没有使用注释,因为我们移植的大部分代码都允许动态运行时查找变量数据源名称,这将与注释不兼容。虽然这段代码可以而且可能应该被重写,但这并不存在。我们将使用jboss-web.xml来管理WebLogic和jboss之间的不同命名约定,这就是我提出这个问题的动机。谢谢