求助:ejb3 的local介面測試

qsxmq發表於2008-08-20
寫了一個非常小的示例。

介面:
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)

是不是因為客戶端與伺服器用的不是一個虛擬機器?如果是,怎樣才能用到同一個虛擬機器……潛水很久,第一次發貼。謝謝

相關文章