0

这是我必须创建 EJB 2.0 的代码我如何转换它以便可用于 EJB 3.0

java.lang.Object ejbHomeStub = initCtx.lookup(ejbJNDIName);
EJBHome ejbHome = (EJBHome) 
    javax.rmi.PortableRemoteObject.narrow(ejbHomeStub, EJBHome.class);
EJBMetaData ejbMetaData = ejbHome.getEJBMetaData();
Class ejbHomeClass = ejbMetaData.getHomeInterfaceClass();
//get ejb object of home interface type
ejbHome = (EJBHome) javax.rmi.PortableRemoteObject.narrow(ejbHome, ejbHomeClass);
//create ejb remote object
Method ejbMethodCreate = ejbHomeClass.getDeclaredMethod(EJB_CREATE, null);
ejbRemoteObj = (EJBObject) ejbMethodCreate.invoke(ejbHome, null);
4

1 回答 1

0

如果您的意思是“如何将 EJB 3.0 接口添加到我的 EJB 2.0 JAR 中”,那么您不需要转换客户端或 bean,因为 EJB 3.0 向后兼容 EJB 2.0。相反,只需更新 ejb-jar.xml 以删除 XSD,添加 XSD+xmlns,并更新<ejb-jar/>.

如果您的意思是“我如何将其转换为注释”,则@RemoteHome在 bean 类上使用注释,并保持接口相同。

如果您的意思是“我如何将 EJB 转换为使用业务接口而不是家庭”,那么您不能直接这样做,因为您必须先验地知道业务接口的类型:

java.lang.Object businessObjectStub = initCtx.lookup(ejbJNDIName);
BusinessObject businessObject = (BusinessObject)
    javax.rmi.PortableRemoteObject.narrow(businessObjectStub, BusinessObject.class);

(一些应用程序服务器不需要 EJB 3.0 的窄,但 WebSphere Application Server 7.0 需要。)

于 2012-10-26T14:11:13.240 回答