📄 traderbean.java
字号:
//声明本接口所在的包
package examples.rmi_iiop.ejb.rmi_iiop;
//声明本类引入的其他类
import javax.ejb.CreateException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.naming.InitialContext;
import javax.naming.NamingException;
/**
* TraderBean是一个无状态会话Bean。这个bean演示:
*
* 在调用会话Bean之间,不记录会话的状态
* 从环境中读取值
*
*/
public class TraderBean implements SessionBean {
//是否打印运行提示
private static final boolean VERBOSE = true;
//声明会话上下文
private SessionContext ctx;
//声明交易极限
private int tradeLimit;
// 也可以考虑使用WebLogic的日志服务
private void log(String s) {
if (VERBOSE) System.out.println(s);
}
/**
* 这是SessionBean接口定义的方法,必须实现
*
*/
public void ejbActivate() {
log("ejbActivate called");
}
/**
* 这是SessionBean接口定义的方法,必须实现
*
*/
public void ejbRemove() {
log("ejbRemove called");
}
/**
* 这是SessionBean接口定义的方法,必须实现
*
*/
public void ejbPassivate() {
log("ejbPassivate called");
}
/**
* 设置会话上下文
*
* @参数 ctx SessionContext 会话上下文
*/
public void setSessionContext(SessionContext ctx) {
log("setSessionContext called");
this.ctx = ctx;
}
/**
* 这个方法与接口"TraderHome.java"中的create方法相对应。
* .
* 当客户端调用TraderHome.create()方法时,容器分配一个EJBean的实例并调用ejbCreate()方法。
*
* @异常 javax.ejb.CreateException 如果发生通信或系统错误
*/
public void ejbCreate () throws CreateException {
log("ejbCreate called");
try {
//初始化上下文
InitialContext ic = new InitialContext();
//从环境中读取参数值
Integer tl = (Integer) ic.lookup("java:/comp/env/tradeLimit");
tradeLimit = tl.intValue();
} catch (NamingException ne) {
throw new CreateException("Failed to find environment value "+ne);
}
}
/**
* 买进一定数量的股票.
*
* @参数 customerName String 顾客名
* @参数 stockSymbol String 股票代码
* @参数 shares int 买进股票的数量
* @返回 TradeResult 交易结果
*/
public TradeResult buy(String stockSymbol, int shares) {
if (shares > tradeLimit) {
log("Attempt to buy "+shares+" is greater than limit of "+tradeLimit);
shares = tradeLimit;
}
log("Buying "+shares+" shares of "+stockSymbol);
return new TradeResult(shares, stockSymbol);
}
/**
* 卖出一定数量的股票
*
* @参数 customerName String 顾客名
* @参数 stockSymbol String 股票代码
* @参数 shares int 卖出股票的数量
* @返回 TradeResult 交易结果
*/
public TradeResult sell(String stockSymbol, int shares) {
if (shares > tradeLimit) {
log("Attempt to sell "+shares+" is greater than limit of "+tradeLimit);
shares = tradeLimit;
}
log("Selling "+shares+" shares of "+stockSymbol);
return new TradeResult(shares, stockSymbol);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -