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