//模块名:First.jar //有两个会话bean: EJBTestBean、FirstBean //在First bean中getHello()中调用EJBTestBean的本地接口LocalEjb InitialContext context1 = new InitialContext(); System.out.println("123"); //上一条能输出 Object AA = context1.lookup("EJBTestLocal"); System.out.println("111"); //上一条能输出 EJBTestLocalHome cc = (EJBTestLocalHome) AA; System.out.println("222"); //上一条能输出 EJBTestLocal bb = cc.create(); System.out.println(bb.LocalEjb()); 输出结果 123 111 222 java.lang.NullPointerException at org.jboss.ejb.plugins.local.LocalHomeProxy.invoke(LocalHomeProxy.java:110) at $Proxy2.create(Unknown Source) at com.Test.TestEJB.FirstTest.testBean(FirstTest.java:57) at com.Test.TestEJB.FirstTest.main(FirstTest.java:71) Exception in thread "main" //EJBTestLocalHome源文件 public interface EJBTestLocalHome extends javax.ejb.EJBLocalHome { public static final String COMP_NAME="java:comp/env/ejb/EJBTestLocal"; public static final String JNDI_NAME="EJBTestLocal"; public com.Test.TestEJB.EJBTestLocal create() throws javax.ejb.CreateException;}
//有两个会话bean: EJBTestBean、FirstBean
//在First bean中getHello()中调用EJBTestBean的本地接口LocalEjb
InitialContext context1 = new InitialContext();
System.out.println("123");
//上一条能输出
Object AA = context1.lookup("EJBTestLocal");
System.out.println("111");
//上一条能输出
EJBTestLocalHome cc = (EJBTestLocalHome) AA;
System.out.println("222");
//上一条能输出
EJBTestLocal bb = cc.create();
System.out.println(bb.LocalEjb());
输出结果
123
111
222
java.lang.NullPointerException
at org.jboss.ejb.plugins.local.LocalHomeProxy.invoke(LocalHomeProxy.java:110)
at $Proxy2.create(Unknown Source)
at com.Test.TestEJB.FirstTest.testBean(FirstTest.java:57)
at com.Test.TestEJB.FirstTest.main(FirstTest.java:71)
Exception in thread "main"
//EJBTestLocalHome源文件
public interface EJBTestLocalHome
extends javax.ejb.EJBLocalHome
{
public static final String COMP_NAME="java:comp/env/ejb/EJBTestLocal";
public static final String JNDI_NAME="EJBTestLocal"; public com.Test.TestEJB.EJBTestLocal create()
throws javax.ejb.CreateException;}
我发现remote,local所定义的接口都是一样的,只是一个抛出remote异常一个没有,是不是client的调用时如为remote客户自动转换到remote接口,如为local客户就调用local接口?????????????(理解90%是错了,没信心)
服务和客户的区别;在同一个应用程序中,也有服务和客户的区别。如果你的client与EJB在一个JVM中,比如在同一个应用服务器中(同JVM中)的JSP中调用的话
,就既可以使用本地接口也可以使用远程接口,如果是在不同的JVM中,就必须使用远程接口
你的说法完全错误,你应该去看看他的规范了,因为你的理解根本上就错误了
那我的ejb要如何去访问local接口 LocalEjb
难道jboss是一个jvm,client是一个jvm?