我正在尝试将对象设置为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?
谢谢!
答案 0 :(得分:0)
不确定您的期望,但远程上下文主要是ejb /资源。 comp / env显然是应用程序的本地