DataSource命名JBoss EAP 6.2与Weblogic

时间:2014-08-19 20:20:37

标签: weblogic datasource jndi jboss-eap-6

我正在将一套相关的应用程序从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查找即可解决问题,但我正在通过配置寻找解决方案,而不是通过编码,如果有这样的解决方案。

1 个答案:

答案 0 :(得分:1)

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

的java:comp / env的/ JDBC / myDataSource

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

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

JNDI path Tomcat vs. Jboss

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