有状态会话BEAN例子

来源:互联网 发布:vb中变量名的命名规则 编辑:程序博客网 时间:2024/06/09 16:04

 BEAN:

package sharetrading_application;

import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.ejb.CreateException;

public class ShareTradingBean implements SessionBean {
    String customer;
    static int numberOfShare_ZSH=5000;
    static int numberOfShare_QDPJ=6000;
    static int numberOfShare_WFJBH=8000;
    SessionContext sessionContext;
    public void ejbCreate(String name) throws CreateException {
        customer=name;
    }

    public void ejbRemove() {
    }

    public void ejbActivate() {
    }

    public void ejbPassivate() {
    }


    public void setSessionContext(SessionContext sessionContext) {
        this.sessionContext = sessionContext;
    }

    public void buyShare(String name, String shareName, int number) {
        if(shareName.equals("000931")){
            numberOfShare_ZSH=getShare(shareName)+number;
        }
        else if(shareName.equals("600600")){
            numberOfShare_QDPJ=getShare(shareName)+number;
        }
        else{
            numberOfShare_WFJBH=getShare(shareName)+number;
        }
    }

    public void sellShare(String name, String shareName, int number) {
        if(shareName.equals("000931")){
           numberOfShare_ZSH=getShare(shareName)-number;
       }
       else if(shareName.equals("600600")){
           numberOfShare_QDPJ=getShare(shareName)-number;
       }
       else{
           numberOfShare_WFJBH=getShare(shareName)-number;
       }

    }

    public int getShare(String shareName) {
        if(shareName.equals("000931")){
           return numberOfShare_ZSH;
       }
       else if(shareName.equals("600600")){
           return numberOfShare_QDPJ;
       }
       else if(shareName.equals("600859")){
           return numberOfShare_WFJBH;
       }else{
           return numberOfShare_ZSH+numberOfShare_QDPJ+numberOfShare_WFJBH;
       }

    }
}

测试BEAN下

package sharetrading_application;

import javax.naming.*;
import javax.rmi.PortableRemoteObject;
import java.lang.String;
import java.util.Properties;
import java.io.*;
import javax.ejb.*;
public class ShareTradingTestClient1 {
    private static final String ERROR_NULL_REMOTE = "Remote interface reference is null.  It must be created by calling one of the Home interface methods first.";
    private ShareTrading shareTrading = null;
    private ShareTradingHome shareTradingHome = null;

    //Construct the EJB test client
    public ShareTradingTestClient1() {
        initialize();
    }

    public void initialize() {

        try {

            //get naming context
            Context context = getInitialContext();
            //look up jndi name
            Object ref = context.lookup("ShareTrading");
            //look up jndi name and cast to Home interface
            shareTradingHome = (ShareTradingHome) PortableRemoteObject.narrow(
                    ref, ShareTradingHome.class);

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public Context getInitialContext() throws Exception {
        String url = "t3://localhost:7001";
        String user = null;
        String password = null;
        Properties properties;
        try {
            properties = new Properties();
            properties.put(Context.INITIAL_CONTEXT_FACTORY,
                           "weblogic.jndi.WLInitialContextFactory");
            properties.put(Context.PROVIDER_URL, url);
            if (user != null) {
                properties.put(Context.SECURITY_PRINCIPAL, user);
                properties.put(Context.SECURITY_CREDENTIALS,
                               password == null ? "" : password);
            }
            return new javax.naming.InitialContext(properties);
        } catch (Exception e) {
            System.out.println("Unable to connect to WebLogic server at " + url);
            System.out.println("Please make sure that the server is running.");
            throw e;
        }
    }

    //----------------------------------------------------------------------------
    // Methods that use Home interface methods to generate a Remote interface reference
    //----------------------------------------------------------------------------

    public ShareTrading create(String name) {
        try {
            shareTrading = shareTradingHome.create(name);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return shareTrading;
    }

    //----------------------------------------------------------------------------
    // Methods that use Remote interface methods to access data through the bean
    //----------------------------------------------------------------------------

    public void buyShare(String name, String shareName, int number) {
        if (shareTrading == null) {
            System.out.println("Error in buyShare(): " + ERROR_NULL_REMOTE);
            return;
        }

        try {
            shareTrading.buyShare(name, shareName, number);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public void sellShare(String name, String shareName, int number) {
        if (shareTrading == null) {
            System.out.println("Error in sellShare(): " + ERROR_NULL_REMOTE);
            return;
        }

        try {
            shareTrading.sellShare(name, shareName, number);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public int getShare(String shareName) {
        int returnValue = 0;
        if (shareTrading == null) {
            System.out.println("Error in getShare(): " + ERROR_NULL_REMOTE);
            return returnValue;
        }

        try {
            returnValue = shareTrading.getShare(shareName);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return returnValue;
    }

    //----------------------------------------------------------------------------
    // Utility Methods
    //----------------------------------------------------------------------------

    public ShareTradingHome getHome() {
        return shareTradingHome;
    }

    //Main method
    public static void main(String[] args) {
        ShareTradingTestClient1 client = new ShareTradingTestClient1();
        ShareTradingHome home=client.getHome();
        String customerName="";
        String shareName;
        int numberOfShare;
        ShareTrading trObj=null;
      
            BufferedReader bufferObj = null;
            try {
                bufferObj = new BufferedReader(new InputStreamReader(System.in));
                System.out.println("请输入要进行交易的顾客姓名的拼音全称: 。。。");
                customerName = bufferObj.readLine();
            } catch (IOException ex) {
            }
       
        try {
            for (int count = 1; count <= 2; count++) {
                System.out.println("开始交易。。。。。" + count);
                System.out.println("====================================");
                System.out.println(
                        "请输入您要买入的股票代号(中关村科技股:000931/青岛啤酒:600600/王府井百货:600859)");
                shareName = bufferObj.readLine();
                System.out.println("请输入您要买入的股票数量: ");
                numberOfShare = Integer.parseInt(bufferObj.readLine());
                trObj = home.create(customerName);
                trObj.buyShare(customerName, shareName, numberOfShare);
                System.out.println(
                        "请输入您要卖出的股票名(中关村科技:000931/青岛啤酒:600600/王府井百货:600859)");
                shareName = bufferObj.readLine();
                System.out.println("请输入您要卖出的股票数量:");
                numberOfShare = Integer.parseInt(bufferObj.readLine());
                trObj = home.create(customerName);
                trObj.sellShare(customerName, shareName, numberOfShare);
                System.out.println("交易结束。。。。。。。。。。。。。。" + count);
                System.out.println("你现在的3只股票总数:" + trObj.getShare("total"));
                System.out.println("=======================================");
            }
        } catch (CreateException ex1) {
        } catch (NumberFormatException ex1) {
        } catch (IOException ex1) {
        }
    }
}

PS:BufferedReader需要导入IO包,当初没导入...一顿郁闷....