「Java EE开发指南」如何在MyEclipse中开发EJB 2 Session Bean?(三)

本文介绍了开发符合EJB 2.0的Java EE Enterprise Java Beans所需的基本特性、概念和技术。在本教程中,您将学习如何:

  • 创建EJB项目
  • 创建会话EJB
  • 将项目配置为使用XDoclet代码生成
  • 打包并部署会话EJB

该特性在MyEclipse中可用。在上文中我们为大家介绍了如何为XDoclet支持配置项目(点击这里回顾>>),本文将继续介绍如何运行XDoclet代码生成、创建Session EJB的第二部分、部署到JBoss服务器等,欢迎持续关注我们获取更多中文教程!

MyEclipse v2025.2离线版下载

四、运行XDoclet代码生成

通常应该在每次更改XDoclet EJB配置或应用服务器设置之后,或者在修改任何EJB bean实现类的XDoclet注释时执行XDoclet。

现在是在firstejb项目上执行XDoclet并测试新的XDoclet设置的好机会,因为Trader EJB还没有使用新的XDoclet注释的业务方法进行扩展。

  1. 右键单击firstejb,然后选择MyEclipse>Run XDoclet。

  2. 监视控制台视图,查看来自xdoclet-build脚本的异常输出消息。

运行XDoclet操作的控制台输出

在运行XDoclet之后,firstejb项目包含了新版本的Trader和TraderHome接口以及ejb-jar.xmlljboss.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 > }
*
  1. 双击TraderBean.java在编辑器中打开它。

  2. 在最后一个括号前添加以下两个业务方法,并按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;
}
  1. 在firstejb项目上运行XDoclet,来同步Trader和TraderHome类以及部署描述符(详细信息请参见第4节)。

  2. 双击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服务器
  1. 右键单击Servers视图,并选择New>Server,选择已安装的JBoss版本。

  2. 继续通过向导配置服务器连接器。有关详细信息,请参见使用MyEclipse应用服务器

注意:请确保选择完整的JDK,而不仅仅是JRE。如果只列出JRE,则需要添加一个新的JDK。

  1. 在New Server向导的Add and Remove页面上,在Available列中选择firstejb项目。

  2. 单击Add。您可以通过使用Configured列中模块旁边的下拉菜单选择打包部署或分解部署,然后单击Finish。

向服务器添加项目

  1. 在Servers视图中右键单击服务器,然后选择Start。

  2. 检查消息日志,以确定是否成功部署了EJB。

JBoss的控制台输出显示EJB已成功部署

注意:独立EJB测试需要一个分布式测试客户端。

七、资源
相关推荐
xincan08182 小时前
MacOS安装Java+mvn+mvnd+jenv多环境丝滑切换
java·开发语言·macos
派大鑫wink2 小时前
【Day13】集合框架(一):List 接口(ArrayList vs LinkedList)实战
java·开发语言·windows
眠りたいです2 小时前
Docker:镜像的运行实体-Docker Container
java·运维·c++·docker·容器·eureka
Filotimo_2 小时前
在java后端开发中,ES的用处
java·elasticsearch·jenkins
华仔啊2 小时前
都在用 Java8 或 Java17,那 Java9 到 16 呢?他们真的没用吗?
java·后端
WizLC2 小时前
【后端】面向对象编程是什么(附加几个通用小实例项目)
java·服务器·后端·python·设计语言
刘个Java2 小时前
手搓遥控器通过上云api执行航线
java·redis·spring cloud·docker
wanghowie2 小时前
01.09 Java基础篇|算法与数据结构实战
java·数据结构·算法
回吐泡泡oO2 小时前
ElasticSearch添加登录校验(仅供参考)
java·elasticsearch·jenkins