jbuilder是一个很好的开发工具,你可以通过它来快速创建满足要求的ejb及其部署描述文件,在《通过实例学jbuilder 7》中,我们已经通过一个购买冰淇淋的实用程序向您介绍了如何用jbuilder 7构造一个完整的应用。本文以“购物车”程序为例,向您展示如何用jbuilder 7快速开发ejb。
创建新的工程
1.打开jbuilder 7,选择file|new project,工程向导出现。
2.设置工程名为“trader”,选择工程要保存的目录,其它选项保持不变,点击“finish”。
设置应用服务器
1.为了部署测试ejb,需要配置相应的应用服务器,本例采用bea weblogic 6.1。选择tools|configure servers,出现一对话框。
2.点击左边列表中的“weblogic application server 6.x+”。
3.选中“server setting”中的“enable server”,设置“general”中的“home directory”,选择应用服务器的主目录。
4.点击“custom”,设置“jdk installation directory”和“bea home directory”以及“password”。
5.点击"ok",然后重新启动jbuilder 7。
6.点击project|default project properties。
7.选择"server",选择radio button??"single server for all services in project",再选择下方的list box??"weblogic application server 6.x+"。
8.点击“ok”完成设置。
创建ejb模块
1.每一个ejb必须属于一个ejb模块,选择file|new,点击"enterprise"标签,双击"ejb module"。
2.在name中输入trader,在format中选择xml,在version中选择ejb 2.0 compliant,点击"ok","ejb designer"出现。
创建session bean
1.右击"ejb designer"面板,选择create ejb|session bean。
2.设置session bean的属性:bean name中输入trader,interfaces中选择remote,在session type中选择stateful,transaction type中选择container。
3.增加变量"_cardholdername"。在"ejb designer"中右击"trader"弹出快捷菜单,选择add|field。
4.进行设置:在type中输入java.lang.string。
5.用同样的方法增加变量"_creditcardnumber"。
6.增加变量"_expirationdate",类型为"java.util.date"。
7.用同样方法增加变量"_items",变量类型为"java.util.arraylist"。
8.右击"ejb designer"面板中的"trader",选择"view bean source",可以看到源代码。
9.增加业务逻辑方法"additem",向购物车中增加商品。右击"ejb designer"面板中的"trader",选择add|method。
10.输入参数的类型为"item",它是一个类,稍后我们将创建它。
11.用同样的方法增加业务逻辑方法"removeitem",从购物车中移走某种商品。
12.用同样的方法增加业务逻辑方法"getcontents",显示购物车中所有商品内容。
13.用同样的方法增加业务逻辑方法"gettotalprice",显示购物车中所有商品的价值。
14用同样的方法增加业务逻辑方法"purchase",进行购买。
15、右击"ejb designer"面板中的"trader",选择"view bean source",可以看到此时的源代码,修改traderbean.java源代码如下:
package trader;
import javax.ejb.*;
import java.util.date;
import java.util.arraylist;
public class traderbean implements sessionbean
{
sessioncontext sessioncontext;
java.lang.string _cardholdername;
java.lang.string _creditcardnumber;
java.util.date _expirationdate;
java.util.arraylist _items;
public void ejbcreate(string cardholdername, string creditcardnumber, date expirationdate) throws createexception {
/**@todo complete this method*/
_items=new arraylist();
_cardholdername=cardholdername;
_creditcardnumber=creditcardnumber;
_expirationdate=expirationdate;
}
public void ejbremove()
{
/**@todo complete this method*/
}
public void ejbactivate()
{
/**@todo complete this method*/
}
public void ejbpassivate()
{
/**@todo complete this method*/
}
public void setsessioncontext(sessioncontext sessioncontext)
{
this.sessioncontext = sessioncontext;
}
public void additem(item item)
{
/**@todo complete this method*/
system.out.println("/tadditem("+item.gettitle()+"):"+this);
_items.add(item);
}
public void removeitem(item item)
{
/**@todo complete this method*/
system.out.println("/tremoveitem("+item.gettitle()+"):"+this);
if(!_items.remove(item)){
throw new ejbexception("the item "+item.gettitle()+" is not in your cart.");
}
}
public java.util.arraylist getcontents()
{
/**@todo complete this method*/
system.out.println("/tgetcontents():"+this);
return _items;
}
public float gettotalprice()
{
/**@todo complete this method*/
system.out.println("/tgettotalprice():"+this);
float totalprice=0f;
for(int i=0,n=_items.size();i
item current=(item)_items.get(i);
totalprice+=current.getprice();
}
return ((long)(totalprice*100))/100f;
}
public void purchase()
{
/**@todo complete this method*/
system.out.println("/tpurchase():"+this);
date today=new date();
if(_expirationdate.before(today))
{
throw new ejbexception("expiration date:"+_expirationdate);
}
system.out.println("/tpurchasing not implement yet!");
}
}
修改traderhome.java源代码如下:
package trader;
import javax.ejb.*;
import java.util.*;
import java.rmi.*;
public interface traderhome extends javax.ejb.ejbhome
{
public trader create(string cardholdername, string creditcardnumber, date expirationdate) throws createexception, remoteexception;
}
修改trader.java源代码如下:
package trader;
import javax.ejb.*;
import java.util.*;
import java.rmi.*;
public interface trader extends javax.ejb.ejbobject
{
public void additem(item item) throws remoteexception;
public void removeitem(item item) throws remoteexception;
public arraylist getcontents() throws remoteexception;
public float gettotalprice() throws remoteexception;
public void purchase() throws remoteexception;
}
新增类item,item.java源代码如下:
package trader;
import java.io.serializable;
public class item implements serializable
{
private static final long serialversionuid=-567896319031239l;
private string _title;
private float _price;
private string _type;
public item(string title,float price,string type)
{
_title=title;
_price=price;
_type=type;
}
public string gettitle()
{
return _title;
}
public float getprice()
{
return _price;
}
public string gettype()
{
return _type;
}
public final boolean equals(object o)
{
//two items are equal if they have the same class and title
if(!(o instanceof item))
{
return false;
}
item i=(item)o;
return (getclass()==i.getclass())&&(_title==null?i.tostring()==null:_title.equals(i._title));
} }
闽公网安备 35060202000074号