Eclipse3.2.1+jboss4.0.5开发J2EE中的EJB (有状态会话Bean 附图)二

来源:互联网 发布:淘宝购物流程步骤 编辑:程序博客网 时间:2024/05/22 17:33

 

9,修改方法ejbCreate(),setSessioncontext(),addItem(),removeItem()方法,修改后完整代码如下:

/**

 *

 */

package j2ee;

 

import java.rmi.RemoteException;

 

import javax.ejb.EJBException;

import javax.ejb.SessionContext;

import java.util.*;

 

/**

 *

 * <!-- begin-user-doc -->

 * A generated session bean

 * <!-- end-user-doc -->

 * *

 * <!-- begin-xdoclet-definition -->

 * @ejb.bean name="Cart"  

 *           description="An EJB named Cart"

 *           display-name="Cart"

 *           jndi-name="Cart"

 *           type="Stateful"

 *           transaction-type="Container"

 *

 * <!-- end-xdoclet-definition -->

 * @generated

 */

 

public abstract class CartBean implements javax.ejb.SessionBean {

 

    /**

     *

     * <!-- begin-xdoclet-definition -->

     * @ejb.create-method view-type="remote"

     * <!-- end-xdoclet-definition -->

     * @generated

     *

     * //TODO: Must provide implementation for bean create stub *

     */

 

    SessionContext sessionContext;

    String cardHolderName;

    Vector items = new Vector();

    String creditCardNumber;

 

    public void ejbCreate(String cardHolderName, String creditCardNumber) {

        this.cardHolderName = cardHolderName;

        this.creditCardNumber = creditCardNumber;

    }

 

    /**

     *

     * <!-- begin-xdoclet-definition -->

     * @ejb.interface-method view-type="remote"

     * <!-- end-xdoclet-definition -->

     * @generated

     *

     * //TODO: Must provide implementation for bean method stub

     */

    public String foo(String param) {

        return null;

    }

 

    /* (非 Javadoc

     * @see javax.ejb.SessionBean#ejbActivate()

     */

    public void ejbActivate() throws EJBException, RemoteException {

        // TODO 自动生成方法存根

 

    }

 

    /* (非 Javadoc

     * @see javax.ejb.SessionBean#ejbPassivate()

     */

    public void ejbPassivate() throws EJBException, RemoteException {

        // TODO 自动生成方法存根

 

    }

 

    /* (非 Javadoc

     * @see javax.ejb.SessionBean#ejbRemove()

     */

    public void ejbRemove() throws EJBException, RemoteException {

        // TODO 自动生成方法存根

 

    }

 

    /* (非 Javadoc

     * @see javax.ejb.SessionBean#setSessionContext(javax.ejb.SessionContext)

     */

    public void setSessionContext(SessionContext sessionContext)

        throws EJBException,

        RemoteException {

        // TODO 自动生成方法存根

        this.sessionContext = sessionContext;

 

    }

 

    /**

     *

     */

    public CartBean() {

        // TODO 自动生成构造函数存根

    }

    /**

     * Business method

     * @ejb.interface-method  view-type = "remote"

     */

    public void addItem(Item item) {

        // TODO Auto-generated method stub

        items.addElement(item);

    }

    /**

     * Business method

     * @ejb.interface-method  view-type = "remote"

     */

    public void removeItem(Item item) {

        // TODO Auto-generated method stub

        Enumeration elements = items.elements();

        while (elements.hasMoreElements()) {

            Item current = (Item) elements.nextElement();

            if (item.getClass().equals(current.getClass())

                && item.getTitle().equals(current.getTitle())) {

                items.remove(current);

                return;

            }

        }

    }

    /**

     * Business method

     * @ejb.interface-method  view-type = "remote"

     */

    public float getTotalPrice() {

        // TODO Auto-generated method stub

        float totalPrice=0f;

        Enumeration elements=items.elements();

        while (elements.hasMoreElements()) {

            Item current=(Item)elements.nextElement();

            totalPrice+=current.getPrice();

        }

        return (long)(totalPrice*100)/100f;

    }

}

10,打开CartHome.java,CartLocalHome.java,将其中create()方法修改为create(String cardHolderName, String creditCardNumber)

11,编写客户端测试程序。新建EJB Client Test,名为:EjbTest如图1-7

12,具体设置如下图1-8

13,打开EjbTest.java,在文件末尾添加main()方法。具体代码如下:

package j2ee;

 

import junit.framework.TestCase;

 

import java.util.Hashtable;

import javax.rmi.*;

import javax.naming.Context;

import javax.naming.InitialContext;

import java.rmi.*;

/**

 * EJB Test Client

 */

public class EjbTest extends TestCase {

 

    public EjbTest() {

        // TODO 自动生成构造函数存根

    }

 

    /** Home interface */

    protected j2ee.CartHome home;

    /**

     * Get the initial naming context

     */

    protected Context getInitialContext() throws Exception {

        Hashtable props = new Hashtable();

        props.put(

            Context.INITIAL_CONTEXT_FACTORY,

            "org.jnp.interfaces.NamingContextFactory");

        props.put(

            Context.URL_PKG_PREFIXES,

            "org.jboss.naming:org.jnp.interfaces");

        props.put(Context.PROVIDER_URL, "jnp://localhost:1099");

        Context ctx = new InitialContext(props);

        return ctx;

    }

 

    /**

     * Get the home interface

     */

    protected j2ee.CartHome getHome() throws Exception {

        Context ctx = this.getInitialContext();

        Object o = ctx.lookup("Cart");

        j2ee.CartHome intf = (j2ee.CartHome) PortableRemoteObject.narrow(

            o,

            j2ee.CartHome.class);

        return intf;

    }

 

    /**

     * Set up the test case

     */

    protected void setUp() throws Exception {

        this.home = this.getHome();

    }

   

    public static void main(String[] args){

        Cart bean=null;

        EjbTest client=new EjbTest();

        float result=0f;

       

        try {

            bean=client.getHome().create("Benson", "1234");

           

            Item item1=new Item("Master EJB",65.00f);

            Item item2=new Item("Master JSP",60.00f);

            Item item3=new Item("Master Spring",45.00f);

 

            bean.addItem(item1);

            bean.addItem(item2);

            bean.addItem(item3);

            bean.removeItem(item2);

            result=bean.getTotalPrice();

            System.out.println("TotalPrice :"+result);

        } catch (RemoteException e) {

            // TODO 自动生成 catch

            e.printStackTrace();

        } catch (Exception e) {

            // TODO 自动生成 catch

            e.printStackTrace();

        }

    }  

 

}

14,右击项目MySessionEjb,在弹出菜单中选择导出”,在导出对话框选择”J2EE-EAR file”,如图1-9

单击下一步,将部署位置设置为”%Jboss_Home%/server/default/deploy”,若该目录已存在EAR文件,则应欢迎勾选”Overwrite existing file”,单击完成.设置如图1-10

15,在右下角Server视图,启动Jboss 4.0,右击Test.java文件,选择运行方式-Java应用程序”.若控制台出现 TotalPrice :110.0字样,说明调用成功。

 

原创粉丝点击