我正在将一套相关的应用程序从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查找即可解决问题,但我正在通过配置寻找解决方案,而不是通过编码,如果有这样的解决方案。
答案 0 :(得分:1)
通过配置正确执行此操作的方法是使用
的java:comp / env的/ JDBC / myDataSource
然后在web.xml中使用resource-ref将其映射到declare数据源,并使用weblogic.xml或jboss-web.xml将其实际映射到真实数据源
在weblogic管理控制台中,当您定义数据源时,它可以是jdbc / realDataSource
对于weblogic http://docs.oracle.com/cd/E13222_01/wls/docs103/jdbc_admin/packagedjdbc.html