本文介绍了开发符合EJB 2.0的Java EE Enterprise Java Beans所需的基本特性、概念和技术。在本教程中,您将学习如何:
- 创建EJB项目
- 创建会话EJB
- 将项目配置为使用XDoclet代码生成
- 打包并部署会话EJB
该特性在MyEclipse中可用。在上文中我们为大家介绍了如何为XDoclet支持配置项目(点击这里回顾>>),本文将继续介绍如何运行XDoclet代码生成、创建Session EJB的第二部分、部署到JBoss服务器等,欢迎持续关注我们获取更多中文教程!
四、运行XDoclet代码生成
通常应该在每次更改XDoclet EJB配置或应用服务器设置之后,或者在修改任何EJB bean实现类的XDoclet注释时执行XDoclet。
现在是在firstejb项目上执行XDoclet并测试新的XDoclet设置的好机会,因为Trader EJB还没有使用新的XDoclet注释的业务方法进行扩展。
-
右键单击firstejb,然后选择MyEclipse>Run XDoclet。
-
监视控制台视图,查看来自xdoclet-build脚本的异常输出消息。

运行XDoclet操作的控制台输出
在运行XDoclet之后,firstejb项目包含了新版本的Trader和TraderHome接口以及ejb-jar.xmll 和 jboss.xml部署描述符。

生成XDoclet后EJB项目的内容
注意:当您在第2节中创建TraderBean.java类时,将其Java包名称指定为com.genuitec.trader.ejb,并强调包名称应该以.ejb结尾。这是因为Standard EJB XDoclet packagessubstitution子任务创建了一个以.interfaces结尾的对应Java包名,并将生成的EJB和Home接口添加到其中。在这个例子中,创建了接口包,它包含了用于Trader EJB和TraderHome接口的组件。如果您没有遵循此包命名约定并使用默认的XDoclet设置,则可能无法生成某些文件。
五、创建Session EJB -- Part 2
在Part 1中,您看到了创建TraderBean类的过程。在本节中,您将向TraderBean类添加业务方法和XDoclet注释,然后使用XDoclet更新前面创建的Trader和TraderHome接口。
当您创建初始的TraderBean.java类时,EJB创建向导添加了一个示例业务方法,可以将其用作添加自己业务方法的模式。注意,该方法包含javadoc标记"@ejb.interface-method"。这个自定义ejbdoclet标记将该方法标识为EJB接口方法的实现,当XDoclet在该类上运行时,Trader.java EJB接口类被修改为包含带有"@ejb.interface-method"注释的所有方法。
TraderBean示例方法
java
/**
* An example business method
*
* @ejb.interface-method view-type = "remote"
*
* @throws EJBException Thrown if method fails due to system-level error.
*/
public void replaceWithRealBusinessMethod() throws EJBException {
// rename and start putting your business logic here< BR > }
*
-
双击TraderBean.java在编辑器中打开它。
-
在最后一个括号前添加以下两个业务方法,并按CTRL+S保存。
java
/**
* Buys shares of a stock for a named customer.
*
* @param customerName String Customer name
* @param stockSymbol String Stock symbol
* @param shares int Number of shares to buy
* @return Number of shares purchased
*
* @ejb.interface-method
*/
public int buy(String stockSymbol, int shares) {
System.out.println("Buying "+shares+" shares of "+stockSymbol + ". Good move.");
return shares;
}
/**
* Sells shares of a stock for a named customer.
*
* @param customerName String Customer name
* @param stockSymbol String Stock symbol
* @param shares int Number of shares to buy
* @return The number for shares sold
*
* @ejb.interface-method
*/
public int sell(String stockSymbol, int shares) {
System.out.println("Selling "+shares+" shares of "+stockSymbol);
return shares;
}
-
在firstejb项目上运行XDoclet,来同步Trader和TraderHome类以及部署描述符(详细信息请参见第4节)。
-
双击com.genuitec.trader.interfaces 包中的Trader.java,注意添加了`buy()` 和 `sell()`业务方法。
java
/*
* Generated by XDoclet - Do not edit!
*/
package com.genuitec.trader.interfaces;
/**
* Remote interface for Trader.
* @author XDoclet
*/
public interface Trader
extends javax.ejb.EJBObject
{
/**
* Buys shares of a stock for a named customer.
* @param customerName String Customer name
* @param stockSymbol String Stock symbol
* @param shares int Number of shares to buy
* @return Number of shares purchased
*/
public int buy( java.lang.String stockSymbol,int shares )
throws java.rmi.RemoteException;
/**
* Sells shares of a stock for a named customer.
* @param customerName String Customer name
* @param stockSymbol String Stock symbol
* @param shares int Number of shares to buy
* @return The number for shares sold
*/
public int sell( java.lang.String stockSymbol,int shares )
throws java.rmi.RemoteException;
}
六、部署到JBoss服务器
-
右键单击Servers视图,并选择New>Server,选择已安装的JBoss版本。
-
继续通过向导配置服务器连接器。有关详细信息,请参见使用MyEclipse应用服务器。
注意:请确保选择完整的JDK,而不仅仅是JRE。如果只列出JRE,则需要添加一个新的JDK。
-
在New Server向导的Add and Remove页面上,在Available列中选择firstejb项目。
-
单击Add。您可以通过使用Configured列中模块旁边的下拉菜单选择打包部署或分解部署,然后单击Finish。

向服务器添加项目
-
在Servers视图中右键单击服务器,然后选择Start。
-
检查消息日志,以确定是否成功部署了EJB。

JBoss的控制台输出显示EJB已成功部署
注意:独立EJB测试需要一个分布式测试客户端。