EJB中的sessionbean可以對外提供Remote接口供遠(yuǎn)程客戶端調(diào)用.其客戶端可以是servlet,java application,或EJB.下面我跟大家分享如何在java application中遠(yuǎn)程調(diào)用session bean.我的配置環(huán)境如下。
Sessionbean:運(yùn)行在websphere v6.0 中,其jndi名為"Hello"
Java Application: 使用eclipse IDE 創(chuàng)建。
   首先,要對eclipse進(jìn)行配置。必須與服務(wù)器 websphere使用相同的JRE.在eclipse菜單欄中選擇Window,Preferences,在彈出窗口的左邊選擇Java,Installed JREs.默認(rèn)地,右邊窗口現(xiàn)示安裝了jre1.5.0.0_07(具體版本可能有所不同)。我們需要把它換成websphere的JRE.把jre1.5.0.0_07前面的勾去掉,點(diǎn)擊add.在彈出窗口的第三行:JRE home directory 選擇Browse....JRE的路徑為C:\Program Files\IBM\Rational\SDP\6.0\runtimes\base_v6\java\jre。如果你沒有安裝RAD,就需要到網(wǎng)上下載一個(gè)JRE.一直點(diǎn)擊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();
  //因?yàn)榭蛻舳撕蛃essionbean不是運(yùn)行在同一服務(wù)器上,需要對properties進(jìn)行配置。
                //如果不是在同一臺(tái)電腦上運(yùn)行l(wèi)ocalhost需改為服務(wù)器的ip地址或主機(jī)名
  //900是服務(wù)器端口,默認(rèn)值可能是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();
  //現(xiàn)在我們?nèi)〉昧怂枰膆ello對象
         }
}