远程JNDI访问TomEE中的单个资源

时间:2014-04-01 19:34:22

标签: tomcat7 jndi tomee

我正在尝试将对象设置为JNDI,然后远程访问它。我正在使用TomEE 1.6.0。我正在使用这样的servlet设置一个sinple字符串:

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之后,我尝试使用这个独立的main来通过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?

谢谢!

1 个答案:

答案 0 :(得分:0)

不确定您的期望,但远程上下文主要是ejb /资源。 comp / env显然是应用程序的本地