我在同一个EAR中的Tomee plume中部署了一个webservice项目和一个EJB 3.0项目。 从webservice类我使用远程接口调用EJB bean类。 我使用了多个InitialContextFactory对象,但似乎没有任何效果。每次我得到
javax.naming.NameNotFoundException:找不到名称“TestRemote”
部署时,此日志即将进入服务器。
08-Sep-2017 16:23:09.587 INFO [main] org.apache.openejb.assembler.classic.JndiBuilder.bind Jndi(name = TestRemote) - > EJB(部署-ID =试验)
以下是我的webservice类
中的代码 Properties properties = new Properties();
properties.put("java.naming.factory.initial", "org.apache.openejb.core.OpenEJBInitialContextFactory");
properties.put("java.naming.provider.url", "http://localhost:8081");
InitialContext ic = new InitialContext(properties);
TestRemote PSBR = (TestRemote) ic.lookup("TestRemote");
除了OpenEJBInitialContextFactory,我尝试过 org.apache.openejb.core.LocalInitialContextFactory 和 RemoteInitialContextFactory ,但每次都会遇到相同的错误。
答案 0 :(得分:0)
我使用了这段代码,并在system.properties中进行了更改,并得到了解决。
properties.put(Context.INITIAL_CONTEXT_FACTORY, "org.apache.openejb.client.RemoteInitialContextFactory");
properties.put(Context.PROVIDER_URL, "http://127.0.0.1:8081/tomee/ejb");
并在system.properties中更改。
# allowed packages to be deserialized, by security we denied all by default, tune tomee.serialization.class.whitelist packages to change it
tomee.remote.support = true
tomee.serialization.class.whitelist = *
tomee.serialization.class.blacklist = -