当前位置: 技术问答>java相关
两个ejb在不同的包里,如何把其中一个ejb作为client,调用另一个呢?我试了半天还是不行啊!
来源: 互联网 发布时间:2015-09-17
本文导语: 两个ejb在不同的包里,一个是mmytest,一个是mmmtest(mmnBean)。如何把其中一个ejb作为client,调用另一个呢? 我改写了jbuilder生成的一个clienttest,在lookup时还没问题呢,narrow时就不行了。提示:java.lang.NoClassDefFoundError。 ...
两个ejb在不同的包里,一个是mmytest,一个是mmmtest(mmnBean)。如何把其中一个ejb作为client,调用另一个呢?
我改写了jbuilder生成的一个clienttest,在lookup时还没问题呢,narrow时就不行了。提示:java.lang.NoClassDefFoundError。
mmnHome mmnHomeObject = null;
mmn mmnObject = null;
Context ctx = getInitialContext();
//look up jndi name
Object ref = ctx.lookup("mmn");
//cast to Home interface
// mmnHomeObject = (mmnHome) PortableRemoteObject.narrow(ref, mmnHome.class);
// mmnObject = mmnHomeObject.create();
另外,我在jubilder中Tools->Configure JDKs->中添加一个mmmtest.jar。
在变量声明时把
mmnHome mmnHomeObject = null;
mmn mmnObject = null;
写在类里,编译时通不过,只能声明在函数里,不晓得为什么,是不是这个影响呢?
"mmytest.ejbgrpx": ERROR: Error from ejbc: java.lang.NoClassDefFoundError: Lmmmtest/mmn;
"mmytest.ejbgrpx": at java.lang.Class.getFields0(Native Method)
"mmytest.ejbgrpx": at java.lang.Class.getDeclaredFields(Class.java:998)
"mmytest.ejbgrpx": at weblogic.ejb20.compliance.SessionBeanClassChecker.checkEJBContextIsNotTransient(SessionBeanClassChecker.java:61)
"mmytest.ejbgrpx": at java.lang.reflect.Method.invoke(Native Method)
"mmytest.ejbgrpx": at weblogic.ejb20.compliance.EJBComplianceChecker.check(EJBComplianceChecker.java:266)
"mmytest.ejbgrpx": at weblogic.ejb20.compliance.EJBComplianceChecker.checkDeploymentInfo(EJBComplianceChecker.java:220)
"mmytest.ejbgrpx": at weblogic.ejb20.ejbc.EJBCompiler.complianceCheckJar(EJBCompiler.java:452)
"mmytest.ejbgrpx": at weblogic.ejb20.ejbc.EJBCompiler.checkCompliance(EJBCompiler.java:409)
"mmytest.ejbgrpx": at weblogic.ejb20.ejbc.EJBCompiler.compileEJB(EJBCompiler.java:202)
"mmytest.ejbgrpx": at weblogic.ejbc20.runBody(ejbc20.java:360)
"mmytest.ejbgrpx": at weblogic.utils.compiler.Tool.run(Tool.java:79)
"mmytest.ejbgrpx": at weblogic.ejbc.main(ejbc.java:20)
"mmytest.ejbgrpx": ERROR: ejbc found errors
我改写了jbuilder生成的一个clienttest,在lookup时还没问题呢,narrow时就不行了。提示:java.lang.NoClassDefFoundError。
mmnHome mmnHomeObject = null;
mmn mmnObject = null;
Context ctx = getInitialContext();
//look up jndi name
Object ref = ctx.lookup("mmn");
//cast to Home interface
// mmnHomeObject = (mmnHome) PortableRemoteObject.narrow(ref, mmnHome.class);
// mmnObject = mmnHomeObject.create();
另外,我在jubilder中Tools->Configure JDKs->中添加一个mmmtest.jar。
在变量声明时把
mmnHome mmnHomeObject = null;
mmn mmnObject = null;
写在类里,编译时通不过,只能声明在函数里,不晓得为什么,是不是这个影响呢?
"mmytest.ejbgrpx": ERROR: Error from ejbc: java.lang.NoClassDefFoundError: Lmmmtest/mmn;
"mmytest.ejbgrpx": at java.lang.Class.getFields0(Native Method)
"mmytest.ejbgrpx": at java.lang.Class.getDeclaredFields(Class.java:998)
"mmytest.ejbgrpx": at weblogic.ejb20.compliance.SessionBeanClassChecker.checkEJBContextIsNotTransient(SessionBeanClassChecker.java:61)
"mmytest.ejbgrpx": at java.lang.reflect.Method.invoke(Native Method)
"mmytest.ejbgrpx": at weblogic.ejb20.compliance.EJBComplianceChecker.check(EJBComplianceChecker.java:266)
"mmytest.ejbgrpx": at weblogic.ejb20.compliance.EJBComplianceChecker.checkDeploymentInfo(EJBComplianceChecker.java:220)
"mmytest.ejbgrpx": at weblogic.ejb20.ejbc.EJBCompiler.complianceCheckJar(EJBCompiler.java:452)
"mmytest.ejbgrpx": at weblogic.ejb20.ejbc.EJBCompiler.checkCompliance(EJBCompiler.java:409)
"mmytest.ejbgrpx": at weblogic.ejb20.ejbc.EJBCompiler.compileEJB(EJBCompiler.java:202)
"mmytest.ejbgrpx": at weblogic.ejbc20.runBody(ejbc20.java:360)
"mmytest.ejbgrpx": at weblogic.utils.compiler.Tool.run(Tool.java:79)
"mmytest.ejbgrpx": at weblogic.ejbc.main(ejbc.java:20)
"mmytest.ejbgrpx": ERROR: ejbc found errors
|
你在Client端如何訪問EJB的,道理是一樣的
import //mmtest所在的包
Context ctx=getInitialContext();
//Object obj=ctx.lookup("your mmtest JNDIName");
//mmtest thome=ProtableRemoteObject(obj,mmtestHome.class);
import //mmtest所在的包
Context ctx=getInitialContext();
//Object obj=ctx.lookup("your mmtest JNDIName");
//mmtest thome=ProtableRemoteObject(obj,mmtestHome.class);
|
这两个ejb都deploy了吗?