【问题标题】:How to make EJB3 remote interface available to client?如何使 EJB3 远程接口对客户端可用?
【发布时间】:2014-01-15 05:32:24
【问题描述】:

我正在尝试从使用 JNDI 查找在单独 JVM 上运行的客户端访问远程 EJB3 bean。以下是我的 bean 类:

@Path("/payment/")
@Consumes({ "application/xml", "application/json" })
@Produces({ "application/xml", "application/json" })
@Local({ PaymentWebServiceLocal.class })
@Remote({ PaymentWebServiceRemote.class })
@Stateless(mappedName = "ejb/PaymentWebService")
public class PaymentWebServiceImpl implements PaymentWebServiceLocal,PaymentWebServiceRemote {

private static final Logger logger = Logger.getLogger(PaymentWebServiceImpl.class);


@POST
@Path("/processpayment")
public PaymentResponse processPayment(PaymentRequest request) {
   //do something
}

Bean的远程接口如下

@Remote
public interface PaymentWebServiceRemote {
    public PaymentResponse processPayment(PaymentRequest request);
}

现在,我使用 JNDI 查找 EJB 以从远程客户端调用 processPayment() 方法,如下所示

    Hashtable env = new Hashtable();
    env.put(Context.INITIAL_CONTEXT_FACTORY, "weblogic.jndi.WLInitialContextFactory");
    env.put(Context.PROVIDER_URL, t3:\\);
    Context ctx = new InitialContext(env);
    return ctx.lookup("ejb.PaymentWebService#test.webservice.payment.service.PaymentWebServiceRemote");

我不明白的是客户端不知道远程PaymentWebServiceRemote接口。它位于另一个带有 EJB Bean 代码的服务器中。我是否也必须将此接口的副本复制到客户端代码?或者有什么方法可以创建一个带有远程接口的客户端 EJB jar 供客户端在 EJB3 中使用(就像我们在 EJB2 中所做的那样)?

感谢任何帮助。

【问题讨论】:

    标签: java client ejb-3.1


    【解决方案1】:

    您必须创建一个客户端 jar,其中包含所有必要的接口以及 可能传递给接口方法的参数类。

    在您的示例中,您需要放置

    • VoidRemittanceService
    • VoidRemittanceServiceRemote
    • 付款响应

    进入客户端 jar。

    客户端jar中不需要远程接口的实现类。

    当然你也可以复制一份,放到客户项目中。但是这个 这不是一个好习惯,因为您必须始终对界面进行两次更改。 此外,您必须确保使用与服务器 jar 相同的 JRE 版本编译客户端接口。否则可能会出现问题。

    好的做法是创建一个额外的项目,其中包含服务器和客户端将使用的共享代码方式。该项目可以被服务端项目和客户端项目引用。这样,共享代码的更改直接影响服务器和客户端。

    【讨论】:

    • EJB2.1 和 EJB3.x 都是基于 RMI/IIOP 协议,所以是相似的。
    猜你喜欢
    • 2015-04-27
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    • 2012-01-10
    相关资源
    最近更新 更多