求助:ejb3 的local接口测试

08-08-20 qsxmq
写了一个非常小的示例。

接口:

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)

是不是因为客户端与服务器用的不是一个虚拟机?如果是,怎样才能用到同一个虚拟机……潜水很久,第一次发贴。谢谢

banq
2008-08-21 10:23
>Client使用远程接口可以正确得到结果,但是用local就抛出异常

这很正常,本地接口就是供同一个JVM内调用,提高性能,而你是从另外一个JVM客户端访问,当然需要远程接口,尽管这两个JVM在同一个服务器上。

yironz
2008-08-25 16:14
hello

猜你喜欢