天天看点

websphere5.1上使用普通client调用EJB需要注意的问题

在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

继续阅读