EJB中的sessionbean可以對外提供Remote接口供遠程客戶端調用。其客戶端可以是servlet,java application,或EJB.下面我跟大家分享如何在Java application中遠程調用session bean.我的配置環境如下。
Sessionbean:運行在websphere v6.0 中,其jndi名為"Hello"
Java Application: 使用eclipse IDE 創建。
首先,要對eclipse進行配置。必須與服務器 websphere使用相同的JRE.在eclipse菜單欄中選擇Window,Preferences,在彈出窗口的左邊選擇Java,Installed JREs.默認地,右邊窗口現示安裝了jre1.5.0.0_07(具體版本可能有所不同)。我們需要把它換成websphere的JRE.把jre1.5.0.0_07前面的勾去掉,點擊add.在彈出窗口的第三行:JRE home directory 選擇Browse……JRE的路徑為C:\Program Files\IBM\Rational\SDP\6.0\runtimes\base_v6\Java\jre.如果你沒有安裝RAD,就需要到網上下載一個JRE.一直點擊OK退回eclipse主界面。
其次,要向工程添加必要的JAR.右擊工程,選擇PropertIEs-Java Build Path-Add
Extenal JARs.添加如下的Jar:wssec.jar,naming.jar,namingclIEnt.jar,sas.jar,ecutils.jar,websphere.jar.這些jar都可以在C:\Program Fires\Rational\SDP\6.0\runtimes\base_v6\lib目錄下找到。
接著我門要把sessionbean‘Hello’的home和remote接口的。class文件拷被到eclipse的工程中,使得我們在工程中可以引用它。
具體程序如下:
public class Test{
public static void main(String[] args) throws NamingException,
RemoteException, CreateException {
Properties properties = System.getPropertIEs();
//因為客戶端和sessionbean不是運行在同一服務器上,需要對propertIEs進行配置。
//如果不是在同一台電腦上運行localhost需改為服務器的ip地址或主機名
//900是服務器端口,默認值可能是900或2809
propertIEs.put(Context.PROVIDER_URL, "iiop://localhost:900");
propertIEs.put(Context.INITIAL_CONTEXT_FACTORY,
"com.ibm.websphere.naming.WsnInitialContextFactory");
Context ctx = new InitialContext(propertIEs);
Object obj = ctx.lookup("Hello");
HelloHome ejbHome = (HelloHome) Javax.rmi.PortableRemoteObject
.narrow(obj, HelloHome.class);
Hello hello= ejbHome.create();
//現在我們取得了所需要的hello對象
}
}