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对象
         }
}