如何在一个WEB应用中调用一个已经部署好了的EJB?

04-04-22 etu5
环境是JBuilder9+Weblogic8.12

写了一个EJB,其中只有一个会话bean,并且部署成功,相关信息如下:

生成的jar: Shop.jar

Home接口: TraderHome

Remote接口:Trader

会话bean: TraderBean

JNDI名字: Trader

Shop.jar中ejb-jar.xml内容如下:

---------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
<ejb-jar>
    <enterprise-beans>
        <session>
            <display-name>Trader</display-name>
            <ejb-name>Trader</ejb-name>
            <home>ejbappdemo.TraderHome</home>
            <remote>ejbappdemo.Trader</remote>
            <ejb-class>ejbappdemo.TraderBean</ejb-class>
            <session-type>Stateless</session-type>
            <transaction-type>Container</transaction-type>
        </session>
    </enterprise-beans>
    <assembly-descriptor>
        <container-transaction>
            <method>
                <description />
                <ejb-name>Trader</ejb-name>
                <method-name>*</method-name>
            </method>
            <trans-attribute>Required</trans-attribute>
        </container-transaction>
    </assembly-descriptor>
</ejb-jar>
<p>

---------------------------------------

Shop.jar中weblogic-ejb-jar.xml内容如下:

---------------------------------------

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-ejb-jar PUBLIC '-//BEA Systems, Inc.//DTD WebLogic 8.1.0 EJB//EN' 'http://www.bea.com/servers/wls810/dtd/weblogic-ejb-jar.dtd'>
<weblogic-ejb-jar>
    <weblogic-enterprise-bean>
        <ejb-name>Trader</ejb-name>
        <jndi-name>Trader</jndi-name>
    </weblogic-enterprise-bean>
</weblogic-ejb-jar>
<p>

---------------------------------------

请问我如何在一个新建的工程的web应用中调用这个已经部署好了的EJB?

也就是说,我如何在一个JSP页面中通过JAVABEAN来调用这个EJB?如何写?

我用如下代码:

Context context=new InitialContext();
Object obj= context.lookup("java/comp/env/ejb/Trader");
TraderHome home=(TraderHome)PortableRemoteObject(obj,TraderHome.class);   //这句有问题,因为home接口不在当前应用中
Trader trader=(Trader)home.create();                                      //同上,这个是Remote接口    
<p>

JBuider编译报错,并提示没有找到 TraderHome、Trader 等class,难道是要把先前部署的EJB的bean的class文件拷贝到当前工程来么?如果是应该拷贝哪些class,他们应该放置在当前工程的哪个文件夹下?(WEB-INF/lib?)

猜你喜欢