Posted on 2007-03-04 11:57
dennis 閱讀(1405)
評論(0) 編輯 收藏 所屬分類:
java
??? 在websphere server上的jsp、servlet中調(diào)用EJB很簡單了:
??????????? Context?ctx?=?new?InitialContext();
????????????MessageSender?msgSender?=?null;
????????????MessageSenderHome?home?=?(MessageSenderHome)?javax.rmi.PortableRemoteObject
????????????????????.narrow(ctx.lookup("MessageSender"),
????????????????????????????MessageSenderHome.class);
????????????msgSender?=?home.create();
????????????msgSender.sendMessage();
??? 如果要在服務(wù)器外部的普通java類的main方法中調(diào)用websphere上的EJB,需要注意幾個問題:
1.需要將websphere安裝目錄下的lib中的jar包加入classpath
2.拷貝websphere安裝目錄下\WebSphere\AppServer\properties\下面的implfactory.properties文件加入classpath
3.需要將websphere部署完成后生成的jar包(包含自動生成的存根類等,不然會報不能載入存根的error)加入classpath,比如WebSphere\AppServer\installedApps\dennis\JMSTest.ear\JMSTest.jar包
4.使用webphere自帶的ibm的JDK,也就是安裝目錄下WebSphere\AppServer\java即是,在eclipse中新建一個安裝的jre即可,替代策略是將此jdk下的jre的jar包加進(jìn)classpath也行
??? 一個java類調(diào)用ejb的例子,調(diào)用SLSB:
package?net.rubyeye.testjms;
import?javax.naming.Context;
import?javax.naming.InitialContext;
import?net.rubyeye.testjms.interfaces.MessageSender;
import?net.rubyeye.testjms.interfaces.MessageSenderHome;
public?class?Test?{
????/**
?????*?@param?args
?????*/
????public?static?void?main(String[]?args)?{
????????try?{
????????????//?Hashtable?h?=?new?Hashtable();
????????????//?h.put(Context.INITIAL_CONTEXT_FACTORY,
????????????//?"com.ibm.websphere.naming.WsnInitialContextFactory");
????????????//?h.put(Context.PROVIDER_URL,?"corbaloc::127.0.0.1:port");
????????????Context?ctx?=?new?InitialContext();
????????????MessageSender?msgSender?=?null;
????????????MessageSenderHome?home?=?(MessageSenderHome)?javax.rmi.PortableRemoteObject
????????????????????.narrow(ctx.lookup("MessageSender"),
????????????????????????????MessageSenderHome.class);
????????????msgSender?=?home.create();
????????????msgSender.sendMessage();
????????}?catch?(Throwable?t)?{
????????????t.printStackTrace();
????????}
????}
}
在同一臺機(jī)器上使用上面的代碼即可調(diào)用,遠(yuǎn)程調(diào)用去掉注釋,并替換相應(yīng)的IP和port