2016-08-11 53 views
0

我想war文件部署到TomEE但失敗:TomEE部署失敗的數據源沒有找到

產生的原因:

javax.naming.NameNotFoundException: 
     Name openejb/Resource/application_name/mysql_ds" not found. 

如果我重新啓動服務器,部署去罰款,但只有一次,那麼遇到同樣的錯誤。

我已經在WEB-INF/resources.xml中文件

<tomee> 
    <Resource id="mysql_ds" type="javax.sql.DataSource"> 
     JdbcDriver = com.mysql.jdbc.Driver 
     JdbcUrl  = jdbc:mysql://IP:3306/db?serverTimezone=UTC&amp;autoReconnect=true 
     UserName = user 
     Password = password 
     JtaManaged = true 
    </Resource> 
</tomee> 

定義數據源同時我要指出,還有另外一個克隆的應用程序(開發模式)相同的配置,它工作正常。

回答

2

您可以使用WEB-INF/resources.xml來定義一個或多個數據源或tomee.xml文件<tomee-home>/conf文件夾內,如TomEE項目文檔的corresponding section指出:

一個DataSource可以通過XML中聲明所述/conf/tomee.xml文件或在WEB-INF/resources.xml中文件

然而,對於resources.xml語法從容器廣泛的定義略有不同。對於你的web應用程序捆綁resources.xml應當表述如下:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <Resource id="mysql_ds" type="javax.sql.DataSource"> 
     JdbcDriver = com.mysql.jdbc.Driver 
     JdbcUrl  = jdbc:mysql://IP:3306/db?serverTimezone=UTC&amp;autoReconnect=true 
     UserName = user 
     Password = password 
     JtaManaged = true 
    </Resource> 
</resources> 

注意哦,該標籤<resources>是從你的問題給出不同<tomee>。這應該適用於默認的TomEE環境。另見:由rmannibucau評論。

希望它有幫助。

+1

請注意,如果發現衝突的定義,資源將根據上下文進行解析(使用類加載器),因此您仍然可以在2個不同的Web應用程序中部署2個衝突資源。 –

+0

@rmannibucau這是一個很好的提示/澄清這種情況下,thx。 – MWiesner