先决条件 本文假定您在以下方面拥有基本知识和编程经验:
Java 编程
NetBeans IDE
教程所需软件Software 对于本教程
![](/icons/32100dou.gif)
您需要在计算机上安装以下软件Software:
"Web & Java EE" 或 "All" 下载版本
![](/icons/32100de.gif)
NetBeans IDE 6.0 (下载)
Java 标准开发工具箱 (JDK) 版本 5.0 或 6.0 (下载)
GlassFish V2 Application Server (绑定完整
![](/icons/32100de.gif)
IDE 下载)或 Sun Java
![](/icons/32100System.gif)
Application Server 平台版本 9 (下载)
对于本教程
![](/icons/32100dou.gif)
您需要注册 GlassFish/Sun Java
![](/icons/32100System.gif)
Application Server 及其 IDE
![](/icons/32100de.gif)
本地例子
![](/icons/32100dou2.gif)
建立企业应用
![](/icons/32100chengxu.gif)
项目 此次练习
![](/icons/32100de.gif)
目标是创建 NewsApp 企业应用
![](/icons/32100chengxu.gif)
项目
![](/icons/32100dou.gif)
其中包含
![](/icons/32100yi.gif)
个 EJB 模块和
![](/icons/32100yi.gif)
个 web 模块
![](/icons/32100dou2.gif)
NewsApp 应用
![](/icons/32100chengxu.gif)
使用
![](/icons/32100yi.gif)
个消息驱动
![](/icons/32100de.gif)
bean 接收和处理 servlet 发送到队列
![](/icons/32100de.gif)
消息
![](/icons/32100dou2.gif)
该应用
![](/icons/32100chengxu.gif)
使用 servlets 发送消息给消息驱动
![](/icons/32100de.gif)
bean
![](/icons/32100dou.gif)
以便显示消息
![](/icons/32100dou2.gif)
创建企业应用
![](/icons/32100chengxu.gif)
从主菜单中选择 File> New Project (Ctrl-Sh
![](/icons/32100if.gif)
t-N)
从 Enterprise 类别中选择 Enterprise Application
![](/icons/32100dou.gif)
然后单击 Next 按钮
将项目命名为 NewsApp
![](/icons/32100dou.gif)
并将服务器设定为 Sun Java
![](/icons/32100System.gif)
Application Server
将 Java EE 版本设为 Java EE 5
![](/icons/32100dou.gif)
然后选择 Create EJB Module 和 Create Web Application Module (如果未选中)
单击 Finish 按钮
小结 在本练习中
![](/icons/32100dou.gif)
我们创建了
![](/icons/32100yi.gif)
个 Java EE 5 企业应用
![](/icons/32100chengxu.gif)
![](/icons/32100dou.gif)
其中包含
![](/icons/32100yi.gif)
个 EJB 模块和
![](/icons/32100yi.gif)
个 web 模块
![](/icons/32100dou2.gif)
编写 EJB 模块 在本练习中
![](/icons/32100dou.gif)
我们将在 EJB 模块中创建对象
![](/icons/32100dou2.gif)
我们将创建
![](/icons/32100yi.gif)
个实体类
![](/icons/32100dou.gif)
![](/icons/32100yi.gif)
个消息驱动 bean 和
![](/icons/32100yi.gif)
个会话外观(Session Facade)
![](/icons/32100dou2.gif)
我们还将创建
![](/icons/32100yi.gif)
个持久性单元
![](/icons/32100dou.gif)
以便为容器提供管理实体
![](/icons/32100dou.gif)
和消息驱动 bean 将使用
![](/icons/32100de.gif)
Java 消息服务(Java Message Service
![](/icons/32100dou.gif)
JMS)资源所需
![](/icons/32100de.gif)
信息
![](/icons/32100dou2.gif)
创建持久性单元 首先
![](/icons/32100dou.gif)
我们需要创建
![](/icons/32100yi.gif)
个持久性单元
![](/icons/32100dou.gif)
用于定义应用
![](/icons/32100chengxu.gif)
中所使用
![](/icons/32100de.gif)
数据源和实体管理器
![](/icons/32100dou2.gif)
右击 EJB 模块
![](/icons/32100dou.gif)
然后选择 New > File/Folder
从 Persistence 类别中
![](/icons/32100dou.gif)
选择 Persistence Unit
![](/icons/32100dou.gif)
然后单击 Next 按钮
保持默认
![](/icons/32100de.gif)
Persistence Unit 名称
对于 Persistence Provider
![](/icons/32100dou.gif)
选择 TopLink(默认)
对于Data Source
![](/icons/32100dou.gif)
选择默认数据源 jdbc/sample
检查持久性单元使用了 Java Transaction API
![](/icons/32100dou.gif)
而且 Table Generation Strategy 被设定为 Create
![](/icons/32100dou.gif)
这样部署应用
![](/icons/32100chengxu.gif)
时就能基于我们
![](/icons/32100de.gif)
实体类创建表
单击 Finish 按钮
![](http://www.crazycoder.cn/WebFiles/20091/78e59b90-1ae2-4f7f-a97e-090bdd6b6038.png)
使用 PostMessage servlet 添加
![](/icons/32100yi.gif)
条消息时
![](/icons/32100dou.gif)
该消息将被发送给消息驱动 bean
![](/icons/32100dou.gif)
以便写入持久性存储器
![](/icons/32100dou.gif)
而 ListNews servlet 将被
![](/icons/32100diaoyong.gif)
以显示数据库中
![](/icons/32100de.gif)
消息
![](/icons/32100dou2.gif)
ListNews 从数据库中获得
![](/icons/32100de.gif)
消息列表通常还没有包含新消息
![](/icons/32100dou.gif)
![](/icons/32100yinwei.gif)
我们
![](/icons/32100de.gif)
消息服务是异步
![](/icons/32100de.gif)
![](/icons/32100dou2.gif)
故障排除 创建项目时可能会遇到以下
![](/icons/32100yi.gif)
些问题
![](/icons/32100dou2.gif)
JMS 资源
![](/icons/32100de.gif)
问题 使用向导创建 JMS 资源时
![](/icons/32100dou.gif)
您可能会在输出窗口中看到如下服务器
![](/icons/32100cuowu.gif)
消息:
[com.sun.enterprise.connectors.ConnectorRuntimeException:
JMS resource not created : jms/Queue]
这条消息大概是指出
![](/icons/32100dou.gif)
JMS 资源没有创建或没有注册到应用服务器
![](/icons/32100dou2.gif)
您可以使用 Sun Java
![](/icons/32100System.gif)
Application Server
![](/icons/32100de.gif)
管理控制台来检查、创建和编辑 JMS 资源
![](/icons/32100dou2.gif)
< /p>
打开管理控制台
![](/icons/32100de.gif)
步骤如下:
在 IDE
![](/icons/32100de.gif)
运行时中展开 Servers 节点
![](/icons/32100dou.gif)
确定 Sun Java
![](/icons/32100System.gif)
Application Server 正在运行
![](/icons/32100dou2.gif)
位于 Sun Java
![](/icons/32100System.gif)
Application Server 节点旁边
![](/icons/32100de.gif)
![](/icons/32100yi.gif)
个小小
![](/icons/32100de.gif)
绿色箭头指示服务器正在运行中
右击 Sun Java
![](/icons/32100System.gif)
Application Server 节点
![](/icons/32100dou.gif)
然后选择 View Admin Console
![](/icons/32100dou.gif)
可以在浏览器中打开登陆窗口
登陆到 Sun Java
![](/icons/32100System.gif)
Application Server 中
![](/icons/32100dou2.gif)
默认
![](/icons/32100de.gif)
用户名和密码是 admin 和 adminadmin
在浏览器
![](/icons/32100de.gif)
管理控制台中
![](/icons/32100dou.gif)
展开画面左侧
![](/icons/32100de.gif)
Resources 节点 和 JMS Resources 节点
单击画面左侧
![](/icons/32100de.gif)
Connection Factories 和 Destination Resources 链接
![](/icons/32100dou.gif)
检查资源是否已经注册到服务器
![](/icons/32100dou.gif)
如果有必要可以修改资源
![](/icons/32100dou2.gif)
如果资源不存在
![](/icons/32100dou.gif)
您可以在管理控制台中创建它们
您需要确保 PostMessage servlet 中
![](/icons/32100de.gif)
JMS 连接工厂资源被映射为了已注册到 Sun Java
![](/icons/32100System.gif)
Application Server
![](/icons/32100de.gif)
JMS 连接工厂资源
![](/icons/32100de.gif)
正确 JNDI 名称
![](/icons/32100dou2.gif)
以下资源应该注册到 Sun Java
![](/icons/32100System.gif)
Application Server 中:
拥有 JNDI 名称 jms/NewMessage 和类型 javax.jms.Queue
![](/icons/32100de.gif)
![](/icons/32100yi.gif)
个目
![](/icons/32100de.gif)
地资源
拥有 JNDI 名称 jms/NewMessageFactory 和类型 javax.jms.QueueConnectionFactory
![](/icons/32100de.gif)
![](/icons/32100yi.gif)
个连接工厂资源