2015-08-13 80 views
0

我已經花了幾天的時間閱讀了JNDI如何使用它,我有幾個問題我沒有100%清楚。瞭解用於Java批處理應用程序的JNDI

背景:

我想配置一個數字,將使用JNDI來檢索Web服務器(Tomcat的7)特性獨立的Java批處理程序。從閱讀,我的理解,這是在server.xml

<GlobalNamingResources>....</GlobalNamingResources> 

測試指定的項目可能:

我的這個測試至今已經創造概念類型設置的證明。我已經在GlobalNamingResorces中使用以下屬性配置了一個Tomcat服務器。

<Environment name="testProp" value="Hello GlobalNamingResources" 
     type="java.lang.String" override="false"/> 

我創建了一個簡單的Java程序,試圖從tomcat中檢索這個屬性。這是一個javax.naming.NoInitialContextException異常失敗。

public static void main(String[] args) { 
    Properties props = new Properties(); 
    props.setProperty("java.naming.provider.url", "http://localhost:9080"); 

    try { 
     InitialContext initCtx = new InitialContext(props); 
     Context envCtx = (Context) initCtx.lookup("java:comp/env"); 

     Object object = envCtx.lookup("testProp"); 

    } catch (NamingException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

} 

任何人都可以告訴我,我想要做什麼是可能的嗎?

我在正確的軌道上完成此?

對於Inital Context Creation,這是需要在我的Java Batch中還是位於服務器上的東西?

+0

不確定這是可能的在Tomcat中。 –

回答

1

不確定在Tomcat中遠程訪問JNDI是可能的。如果this是最新的,那麼顯然不是。 「問我能否遠程訪問Tomcat的JNDI」這個問題可能比詢問Java批處理(如果我理解正確的話)要好的多。你可能會得到更快的迴應。

但是...既然您已經在使用Tomcat,那麼您可能會對即將推出的TomEE版本感興趣,該版本面向包括Java Batch支持在內的EE 7支持。另一種選擇是我工作的產品WebSphere Liberty

+0

是的,你說得對,這對於Tomcat來說是不可能的。我能夠做到這一點的唯一方法就是使用備用服務器部署。我最終使用[Wildfly](https://docs.jboss.org/author/display/WFLY9/Remote+JNDI+Configuration)。 Tomcat是首選,因爲它是我們已經使用的服務器類型 – Newmanater

+0

很高興聽到。我並不完全遵循版本控制,但我認爲它是包含BatchEE(因此批量支持)的TomEE 2.0.0。 –