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

七、资源
相关推荐
侠客行031710 小时前
Mybatis连接池实现及池化模式
java·mybatis·源码阅读
蛇皮划水怪10 小时前
深入浅出LangChain4J
java·langchain·llm
老毛肚11 小时前
MyBatis体系结构与工作原理 上篇
java·mybatis
风流倜傥唐伯虎12 小时前
Spring Boot Jar包生产级启停脚本
java·运维·spring boot
Yvonne爱编码12 小时前
JAVA数据结构 DAY6-栈和队列
java·开发语言·数据结构·python
Re.不晚12 小时前
JAVA进阶之路——无奖问答挑战1
java·开发语言
你这个代码我看不懂12 小时前
@ConditionalOnProperty不直接使用松绑定规则
java·开发语言
fuquxiaoguang12 小时前
深入浅出:使用MDC构建SpringBoot全链路请求追踪系统
java·spring boot·后端·调用链分析
琹箐13 小时前
最大堆和最小堆 实现思路
java·开发语言·算法
__WanG13 小时前
JavaTuples 库分析
java