EJB 3 Stub生成

我说有一个与ejb-3兼容的ejb

@Remote interface Hai{ String sayHai(); } Stateless(name = "xxx", mappedname="yyy") public class HaiImpl implements Hai{ public String sayHai(){ return "Hai"; } } 

我需要为这个EJB生成存根。 但我不想使用websphere工具或maven工具。 有没有办法使用jdk生成存根?

当您创建远程客户端时

  Hai hai = (Hai)ctx.lookup("yyy#com.zz.Hai"); System.out.println(hai.sayHai()); 

将在weblogic或jboss中工作,但在websphere中,即使是ejb 3,你也需要这样写

 Object o = ctx.lookup("yyy"); Hai hai = (Hai)javax.rmi.PortableRemoteObject.narrow(o,Hai.class); System.out.println(hai.sayHai()); 

在这种情况下,如果存根不存在于客户端,它将抛出exception,有一种方法可以使用websphere ejb stub generater工具生成存根。 但我不想使用任何平台特定的工具。

不,您必须使用WAS_HOME / bin / createEJBStubs。 Java SDK中包含的rmic命令(通常用于生成存根)不能用于不扩展java.rmi.Remote的“纯”EJB 3远程接口。

请注意,如果您使用应用程序客户端容器(WAS_HOME / bin / launchClient)或“客户端”是另一台服务器,则您不需要生成存根:容器将为您生成一个存根。 如果您使用的是非托管瘦客户端,则只需使用createEJBStubs。

我为createEJBStub脚本创建了一个maven-plugin包装器 。

为什么?

这允许我们构建测试maven项目,这些项目在部署之后作为我们的CI设置的一部分运行。

更具体地说,与maven一起,这允许我们的测试项目:

  1. 利用Maven依赖管理将我们发布的API jar拉到我们的内部nexus存储库
  2. 创建存根类作为“生成源”maven生命周期的一部分
  3. 使用EJB对Application Server运行junit测试用例进行集成测试。