2014-04-01 28 views
0

我試圖將一個對象設置爲JNDI,然後對其進行遠程訪問。我正在使用TomEE 1.6.0。我設置使用的servlet這樣的sinple字符串:遠程JNDI訪問TomEE中的單個資源

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException 
{ 
    try 
    { 
     Context ctx=new InitialContext(); 
     ctx.bind("myKey","MY STRING"); 
    } 
    catch(NamingException ex) 
    { 
     ex.printStackTrace(); 
    } 
} 

運行,並且調用這個servlet之後,我嘗試使用這個獨立的主獲得通過JNDI的遠程訪問。

public static void main(String[] args) throws Exception 
{ 
    Context ctx = getContext(); 
    String nom = (String)ctx.lookup("java:/comp/env/nombre"); 

    System.out.println(nom); 
} 

private static Context getContext() throws Exception 
{ 
    Hashtable<String,String> t = new Hashtable<>(); 
    t.put("java.naming.factory.initial","org.apache.openejb.client.RemoteInitialContextFactory"); 
    t.put("java.naming.provider.url","http://127.0.0.1:8080/tomee/ejb"); 

    return new InitialContext(t); 
} 

但它拋出一個像這樣的的NameNotFoundException:

Exception in thread "main" javax.naming.NameNotFoundException: /comp/env/nombre does not exist in the system. Check that the app was successfully deployed. 
    at org.apache.openejb.client.JNDIContext.lookup(JNDIContext.java:319) 
    at javax.naming.InitialContext.lookup(InitialContext.java:411) 
    at demo.TestJNDI.main(TestJNDI.java:13) 

所以,我的問題有兩個:

1 - 我怎麼知道這是使用TomEE發佈此默認的JNDI名稱串? 2 - 如何將此字符串設置爲任何XML文件而不是servlet?

謝謝!

回答

0

不知道你期望做什麼,但遠程上下文主要是ejb /資源之一。 comp/env顯然是本地的應用程序

+0

嗨,我想要的是通過聲明它在一些XML像tomee.xml或任何其他,然後可以通過JNDI上下文訪問此對象。 I.e:在tomee.xml中聲明:。在此之後,在一個獨立的主要訪問myobject給它的jndi名稱。謝謝! – pablosz