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