Properties environment = new Properties();
environment.put(Context.PROVIDER_URL, "localhost:1099");
environment.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
environment.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
environment.put(Context.PROVIDER_URL, "localhost:1099");
environment.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
environment.put(Context.URL_PKG_PREFIXES, "org.jboss.naming:org.jnp.interfaces");
.....
initialContext = new InitialContext(environment);
按照我的理解这段程序相当于从"localhost"这个容器中取得当前的环境变量.既然是本地的为什么还要把environment参数传进去呢.
直接initialContext = new InitialContext(); 不行吗?其实是可以的,只要修改ejb-jar.xml:
http://java.sun.com/dtd/ejb-jar_2_0.dtd">
注意红色的内容,那就是问题的关键.至于其中的原理,我仍在思考.
改变了ejb-jar.xml相应的需要修改Hello.java:
将原来的:
Object obj = initialContext.lookup("ejb/HelloEntity");
替换为:
Object obj = initialContext.lookup("java:comp/env/"+HelloEntityHome.class.getName());
按照我的理解comp是容器,env是环境,意思是从当前环境中lookup "HelloEntityHome.class.getName()".