「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.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 > }
*
  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测试需要一个分布式测试客户端。

七、资源
相关推荐
文丑颜不良啊2 分钟前
LeetCode701~725题目解析
java·leetcode
ch.ju12 分钟前
Java——idea知识:Collection父接口
java·开发语言·intellij-idea
木井巳1 小时前
【动态规划: 线性dp】解码方法
java·算法·leetcode·动态规划·推荐算法
缓慢更新9 小时前
审批的加签与会签:多人意见怎么合
android·java·数据库·低代码·rxjava
yuniko-n10 小时前
【JUC】volatile 非原子性深入解析
java
sun_weitao11 小时前
极简版 MCP 工具实现方案
java·linux·服务器
金銀銅鐵12 小时前
[Java] 展示增删元素时 LinkedList 的内部变化
java·后端·ai编程
布吉岛的石头12 小时前
Java 程序员第 50 阶段3:数据工程:预训练语料清洗与去重
java·开发语言·人工智能·深度学习·transformer
大文说跨境13 小时前
防关联浏览器的指纹覆盖到什么程度:六类参数的实测与自检方法
java·指纹浏览器·tiktok运营
Carol063013 小时前
上肢及肩肘关节
java·服务器·数据库