首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从EJB 2.0到EJB 3.0

从EJB 2.0到EJB 3.0
EN

Stack Overflow用户
提问于 2012-10-26 04:43:03
回答 1查看 1.4K关注 0票数 0

以下是创建EJB2.0所需的代码,如何将其转换为可用于EJB3.0

代码语言:javascript
复制
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);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-26 22:11:13

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

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

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

代码语言:javascript
复制
java.lang.Object businessObjectStub = initCtx.lookup(ejbJNDIName);
BusinessObject businessObject = (BusinessObject)
    javax.rmi.PortableRemoteObject.narrow(businessObjectStub, BusinessObject.class);

(有些应用程序服务器不需要EJB3.0的窄应用程序,但WebSphere应用程序服务器7.0需要。)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13076921

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档