2016-12-27 64 views
0

宣布我部署一个WAR到JBoss EAP 7.在我的抗战的META-INF/context.xml文件我有以下几点:javax.naming.NameNotFoundException在context.xml中

<Context unloadDelay="500000"> 
    <Resource name="jdbc/sybase/somedb" 
      auth="Container" 
      type="javax.sql.DataSource" 
      driverClassName="net.sourceforge.jtds.jdbc.Driver" 
      url="jdbc:jtds:sybase://localhost:12501/somedb" 
      username="username" password="secret" 
      validationQuery="select 1"    
      maxActive="2" maxIdle="0" maxWait="-1"/>   
... 

从我的Java代码我尝试获取数据源做:

InitialContext cxt = new InitialContext(); 
DataSource ds = (DataSource) cxt.lookup("java:/comp/env/jdbc/sybase/somedb"); 

确切上面的代码工作,名称为发现的背景下,当我部署到Tomcat 8而不是当我deplo Ÿ到JBoss EAP 7.在后一种情况下,我得到:

Caused by: javax.naming.NameNotFoundException: comp/env/jdbc/sybase/somedb -- service jboss.naming.context.java.comp.env.jdbc.sybase.somedb 
at org.jboss.as.naming.ServiceBasedNamingStore.lookup(ServiceBasedNamingStore.java:106) 
at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:207) 
at org.jboss.as.naming.InitialContext$DefaultInitialContext.lookup(InitialContext.java:235) 
at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:193) 
at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:189) 
at javax.naming.InitialContext.lookup(InitialContext.java:417) 
at javax.naming.InitialContext.lookup(InitialContext.java:417) 

什么我做错了,如何解决上述问题?

回答

2

META-INF/context.xml文件是Tomcat的部署描述符(不是Java EE规范中定义),所以它是没有看到或JBoss的EAP解析7

有许多替代这个包括解决is there a standard way to define a JDBC Datasource for Java EE containers

如果您要问RedHat支持,他们可能会建议您使用服务器管理工​​具(如管理控制台或jboss-cli.sh)创建数据源。这将您的应用程序从数据源定义中分离出来,以便您可以指定特定于环境的设置(例如池大小和主机名),而无需重新打包WAR.file。该方法还要求您与应用程序分开部署JDBC驱动程序jar。

相关问题