写了一个非常小的示例。
接口:
package com.qsxmq.ejb3;
public interface Culcalator {
public int add(int i, int j);
}
远程接口:
package com.qsxmq.ejb3;
import javax.ejb.Remote;
@Remote
public interface CulcalatorRemote extends Culcalator {
}
本地接口:
package com.qsxmq.ejb3;
import javax.ejb.Local;
@Local
public interface CulcalatorLocal extends Culcalator {
}
BEAN:
package com.qsxmq.ejb3;
import javax.ejb.Stateless;
@Stateless
public class CulcalatorBean implements CulcalatorLocal,CulcalatorRemote {
public int add(int x, int y) {
return x + y;
}
}
Client
package com.qsxmq.ejb3;
import javax.naming.InitialContext;
public class Client {
public static void main(String[] args) throws Exception {
InitialContext ict = new InitialContext();
Culcalator culcalator = (Culcalator) ict.lookup("CulcalatorBean/local");
System.out.println(culcalator.add(1, 2));
}
现在的问题是Client使用远程接口可以正确得到结果,但是用local就抛出异常:
Exception in thread "main" javax.ejb.EJBException: Invalid invocation of local interface (null container)
at org.jboss.ejb3.stateless.StatelessLocalProxy.invoke(StatelessLocalProxy.java:75)
at $Proxy0.add(Unknown Source)
at com.qsxmq.ejb3.Client.main(Client.java:14)
是不是因为客户端与服务器用的不是一个虚拟机?如果是,怎样才能用到同一个虚拟机……潜水很久,第一次发贴。谢谢