部署在Weblogic上的远程Ejb bean从Tomcat Web应用程序调用

时间:2015-01-05 06:14:14

标签: java tomcat ejb jndi weblogic12c

我使用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); 
}

如何使其发挥作用。

由于

2 个答案:

答案 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。