0

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

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

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

    InitialContext ic = new InitialContext() ;
    DataSource ds = (DataSource)ic.lookup(dataSource) ;

数据源中的值为“mydatasource”。

这在 Web Logic 中有效,但在 JBoss 中它会抛出 NameNotFoundException

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

显然,两台服务器之间的 InitialContext 设置方式有所不同。

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

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

还是我们必须硬着头皮接受这段代码需要重写?

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

4

1 回答 1

1

通过配置正确执行此操作的方法是使用

java:comp/env/jdbc/myDataSource

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

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

JNDI 路径 Tomcat 与 Jboss

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

于 2014-08-19T22:07:30.603 回答