我使用EJB 3.1创建了一个远程EJB bean,并将其部署在Web逻辑12c上。现在通过一个简单的Java客户端,我可以访问远程bean。它工作正常。
Java客户端代码:
Context ctx = null;
Hashtable ht = new Hashtable();
ht.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
ht.put(Context.PROVIDER_URL, "t3://localhost:7001");
try {
InitialContext ic = new InitialContext(ht);
}
我的下一个方法是在Tomcat 7中部署的Web应用程序中调用此远程bean。但它抛出异常
引起:java.lang.ClassNotFoundException:weblogic.jndi.WLInitialContextFactory。
我使用以下代码来调用ejb bean: 属性property = new Properties();
properties.put(Context.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
properties.put("java.naming.factory.url.pkgs", "weblogic.jndi.factories:weblogic.corba.j2ee.naming.url");
properties.put(Context.PROVIDER_URL, "t3://localhost:7001");
properties.put( Context.SECURITY_PRINCIPAL, "weblogic");
properties.put( Context.SECURITY_CREDENTIALS, "weblogic1");
try {
Context ic = new InitialContext(properties);
}
如何使其发挥作用。
由于
答案 0 :(得分:3)
您的Web应用程序类路径中应该有wlthint3client.jar或wlfullclient.jar。两者都可以从weblogic发行版中获得。
有关其使用情况的更多信息,请访问here
答案 1 :(得分:0)
为我工作,在类路径上添加wlclient.jar 和 wlthint3client.jar(按此顺序)。
在我的情况下,我试图从测试类调用EJB。为了得到实例,我这样做了:
weblogic.ejb.spi.BusinessObject obj = (weblogic.ejb.spi.BusinessObject) context.lookup("MyEJBRemoteMappedName#br.com.ejbclient.MyEJBRemote");
br.com.ejbclient.MyEJBRemote myEJB = (br.com.ejbclient.MyEJBRemote) obj._WL_getBusinessObjectHandle().getBusinessObject();
我正在使用wls12130。