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