簡體   English   中英

幫助在Tomcat 5.5.x中使用嵌入式JBoss配置JNDI

[英]Help configuring JNDI with embedded JBoss in Tomcat 5.5.x

當我在我的代碼中嘗試以下查找時:

Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
return (DataSource) envCtx.lookup("jdbc/mydb"); 

我得到以下異常:

java.sql.SQLException: QueryResults: Unable to initialize naming context: 
    Name java:comp is not bound in this Context at 
    com.onsitemanager.database.ThreadLocalConnection.getConnection
    (ThreadLocalConnection.java:130) at     
    ...

我按照JBoss wiki說明安裝了嵌入式JBoss。 我使用配置維基頁面中指定的“默認掃描每個WAR”部署來配置Tomcat。

引用配置頁面:

JNDI

嵌入式JBoss組件(如連接池,EJB,JPA和事務)廣泛使用JNDI來發布服務。 嵌入式JBoss通過在Tomcat的JNDI實例化之上分層來覆蓋Tomcat的JNDI實現。 有幾個原因:

  1. 避免必須在server.xml中聲明這些服務中的每一個
  2. 允許在web應用程序和EJB之間無縫集成java:comp命名空間。
  3. Tomcat的JNDI實現中存在一些嚴重錯誤,阻礙了一些JBoss組件的工作能力
  4. 我們希望為您提供遠程查找遠程查找EJB和其他服務的選項

任何人都有任何關於我如何配置JBoss命名服務的想法,根據上面的報價覆蓋Tomcat的JNDI實現,以便我可以在java:comp / env上查找?

僅供參考 - 我的環境Tomcat 5.5.9,Seam 2.0.2sp,嵌入式JBoss(Beta 3),

注意:我的數據庫連接正確設置了-ds.xml文件,並且可以按照說明在類路徑上訪問。

另請注意:我已在嵌入式Jboss論壇和縫用戶論壇中發布此問題。

感謝響應工具包....是的,我可以通過直接訪問java:jdbc / mydb來訪問我的數據源,但我正在使用通過ENC連接的現有代碼庫。 這是我發現的一些有趣的信息....

  1. 上面的代碼適用於JBoss 4.2.2.GA ,這里是使用的JNDI ctx參數:
    java.naming.factory.initial = org.jnp.interfaces.NamingContextFactory java.naming.factory.url.pkgs = org.jboss.naming:org.jnp.interfaces:org.jboss.naming:org.jnp.interfaces

  2. 上面的代碼適用於Tomcat 5.5.x ,這里是使用的JNDI ctx參數:
    java.naming.factory.initial = org.apache.naming.java.javaURLContextFactory java.naming.factory.url.pkgs = org.apache.naming

  3. 上面的代碼在Tomcat 5.5.x中使用嵌入式JBoss(Beta 3)失敗,但上面的錯誤消息。
    java.naming.factory.initial = org.apache.naming.java.javaURLContextFactory java.naming.factory.url.pkgs = org.apache.naming上面的代碼在tomcat 5.5.x中使用JBoss Embedded時出現上述錯誤失敗

任何人都有任何想法我需要做什么配置嵌入式JBoss JNDI配置?

java:comp / env稱為企業命名上下文(ENC),並不是全局可見的。 有關更多信息,請參見此處 您需要找到數據源注冊的全局JNDI名稱。

最簡單的方法是導航到JBoss的基於Web的JMX控制台,並尋找一個'JNDIView'(不完全確定名稱 - 目前在家里)mbean。 這個mbean應該有一個可以調用的列表方法,它將顯示所有JNDI綁定對象的上下文路徑。

我在Jboss Embedded上遇到了類似的問題,我終於修復了文件:test-Datasource-ds.xml

加入

<mbean code="org.jboss.naming.NamingAlias" name="jboss.jmx:alias=testDatasource">
    <attribute name="FromName">jdbc/Example DataSource</attribute>
    <attribute name="ToName">java:/testDatasource</attribute>
</mbean>

問題是jboss為聲明的所有數據源添加前綴java:/。 所以最后我有一個名為testDatasource的數據源,用該指令覆蓋了jdbc / Example DataSource

希望它有效

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM