数据源命名JBossEAP 6.2 vs Web逻辑



我正在将一套相关的应用程序从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) ;

在dataSource中的值为"mydatasource"。

这在Web Logic中工作,但在JBoss中它抛出NameNotFoundException

javax.naming.NameNotFoundException: mydatasource-- service jboss.naming.context.java.mydatasource

显然,在两个服务器之间如何设置InitialContext是不同的。

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

是否有一种方法通过配置(InitialContextFactory,也许)来定义初始上下文,使上面的代码无需重写即可工作,或者是否有另一种方法来命名JBoss将接受的数据源,从而允许上面的代码无需重写即可工作?

还是我们必须咬紧牙关接受这段代码需要重写?

更新:是的,我知道简单地传递"java:jboss/datasources/mydatasource"到InitialContext查找解决了问题,但是我正在通过配置寻找解决方案,而不是通过编码,如果有这样的解决方案。

通过配置正确地做到这一点的方法是使用

java: comp/env/jdbc/一个

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

在weblogic管理控制台,当你定义数据源时,它可以是jdbc/realDataSource

JNDI路径Tomcat vs. Jboss

For weblogic http://docs.oracle.com/cd/E13222_01/wls/docs103/jdbc_admin/packagedjdbc.html

最新更新