2016-12-27 71 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。

相關問題