在websphere server上的jsp、servlet中调用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();
如果要在服务器外部的普通java类的main方法中调用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包加进classpath也行
一个java类调用ejb的例子,调用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();
} catch (throwable t) {
t.printstacktrace();
}
}
}
在同一台机器上使用上面的代码即可调用,远程调用去掉注释,并替换相应的ip和port
文章转自庄周梦蝶 ,原文发布时间5.17