1、神州数码融信质量管理体系JBOSS使用指南Release v1.0jimmy(yang.kun),于 2008-05-12 编写JAVA 编码规范与指南神州数码融信质量管理体系 一JBOSS 入门 .21.下载和安装 JBoss .22.JBoss的目录结构 .23.启动服务器 .34.JMX控制台 .45.停止服务器 .56.JBoss中的部署 .5二JBOSS 的配置 .61. JBoss日志设置 .62. web 服务的端口号的修改 .63. JBoss 的安全设置 .73.1 jmx-console 登录的用户名和密码设置 .73.2 web-console 登录的用户名和密码设置 .
2、94. JBoss 数据源的配置 .125. JMS使用和设置 .145.1 JMS消息的传递模型 .145.2 JMS的配置 .16三JMX 原理和应用 .201. 什么是 JMX .202. JMX规范 .213. 基于 JBoss来写 MBean .213.1 HelloWorld 实例 .213.2 程序代码 .213.3 配置文件 jboss-service.xml.223.4 将实例部署到 JBOSS.223.5 MBean 的效果 .23s四EJB3.0 使用说明 .251. Enterprice JavaBeans(EJB)的概念 .251.1 会话 Bean: .251.2
3、实体 Bean: .261.3 消息驱动 Bean(MDB): .262.会话 Bean(Session Bean).262.1因为客户端需要通过 JNDI 查找 EJB,那么 JNDI 是什么 .262.2 Stateless Session Beans(无状态 bean)开发 .282.3 Stateless Session Bean与 Stateful Session Bean的区三别 .322.4 Session Bean的生命周期 .323.消息驱动 Bean (Message Driven Bean).333.1 Queue消息的发送与接收(PTP 消息传递模型) .333.2 T
4、opic消息的发送与接收(Pub/sub 消息传递模型) .394.实体 Bean(Entity Bean) .444.1持久化 persistence.xml 配置文件 .444.2实体 Bean 发布前的准备工作 .45JAVA 编码规范与指南神州数码融信质量管理体系 4.3单表映射的实体 Bean.45一JBOSS 入门1.下载和安装 JBoss 在下载和安装 JBoss之前,请开发者确认一下自己的机器是否安装了最新版的 JVM。为运行 JBoss 4.2.2GA,开发者必须提供 Java 5虚拟机。在我们动身之前,请再次检查一下您是否安装了合适的 JDK,而且 JAVA_HOME环境变
5、量是否已经设置好。用户可以从 JBoss网站(http:/www.jboss.org/jbossas/downloads/)免费下载到 JBoss应用服务器。其中,可用的二进制版本格式分别有.zip、.tar.gz 以及.bz2。JBoss 二进制发布版的具体内容与版本格式无关,用户需要根据各自的平台选择相应的二进制版本。在您下载完成 JBoss后,将它解压到合适的机器位置上。有一点请注意,包含解压目录的完整路径(比如,Windows操作系统中的 Program Files目录)上不能够含有空格,因为这将导致错误的出现。 2.JBoss的目录结构安装 JBoss 会创建下列目录结构:目录 描述
6、bin 启动和关闭JBoss 的脚本client 客户端与JBoss 通信所需的Java 库(JARs)docs 配置的样本文件(数据库配置等)docs/dtd 在JBoss 中使用的各种XML 文件的DTD。lib 一些JAR,JBoss 启动时加载,且被所有JBoss 配置共享。server 各种JBoss 配置。每个配置必须放在不同的子目录。子目录的名字表示配置的名字。JBoss 包含3 个默认的配置:minimial,default 和all,在你安装时可以进行选择。server/all JBoss 的完全配置,启动所有服务,包括集群和IIOP。server/default JBoss
7、 的默认配置,它含有大部分J2EE应用所需的标准服务。但是,它不含有JAXR服务、IIOP服务、或者其他任何群集服务。 JAVA 编码规范与指南神州数码融信质量管理体系 server/minimal 这是启动JBoss服务器所要求的最低配置。minimal配置将启动日志服务、JNDI服务器以及URL部署扫描器,以找到待部署的(新)应用。对于那些不需要使用任何其他J2EE技术,而只是使用自定义服务的场合而言,则这种JMX/JBoss 配置最适合。它仅仅是服务器,而不包含Web容器、不提供EJB和JMS支持。 server/default/conf 含有指定JBoss核心服务的jboss-serv
8、ice.xml文件。同时,还包括核心服务的其他配置文件。 server/default/data 这一目录存储持久化数据,即使服务器发生重启其中的数据也不会丢失。许多JBoss服务将数据存储在这里,比如Hypersonic数据库实例。 server/default/deploy 用户将应用代码(JARWAREAR 文件)部署在此处。同时,deploy目录也用于热部署服务(即,那些能够从运行服务器动态添加或删除的服务)。因此,用户能够在deploy目录看到大量的配置文件。尤其是,用户能够看到JMX控制台应用(未打包的WAR文件),本书前面讨论过。 JBoss服务器将定期扫描该目录,从而查找是否有
9、组件更新或修改,从而自动完成组件的重新部署。 server/default/lib 服务器配置所需的JAR文件。用户可以添加自身的库文件,比如JDBC 驱动,等等。 server/default/log 日志信息将存储到该目录。JBoss使用Jakarta Log4j包作为其日志功能。同时,用户可以在应用中直接使用Log4j日志记录功能。 server/default/tmp 供部署器临时存储未打包应用使用,也可以作为其他用途。 server/default/work 供编译JSP使用。 其中,data、log、tmp、work 目录是 JBoss创建的。如果用户没有启动过JBoss服务器,则
10、这些目录不会被创建。 既然提到了 JBoss中的热部署服务主题,接下来在探讨服务器配置问题前先来看看实际例子。如果还没有启动 JBoss,则请运行它。然后,请再次查看deploy目录(用户必须保证运行了 default配置),然后删除 mail-service.xml文件。通过运行 JBoss服务器的控制台能够浏览到如下信息: 13:10:05,235 INFO MailService Mail service java:/Mail removed from JNDI 然后,再次将 mail-service.xml文件放回原处,用户将通过控制台再次发现 JBoss重新部署了该服务。所以,这就是
11、 JBoss的热部署。3.启动服务器 首先,来看看如何运行 JBoss服务器。用户可以在 JBoss主安装目录的 bin目录中找到若干个脚本文件。请执行 run脚本(对于 Windows,则运行JAVA 编码规范与指南神州数码融信质量管理体系 run.bat;对于 Linux、OS X、UNIX 系统,则运行 run.sh)。默认 jboss运行default配置,如果要运行 all配置请执行命令 run c all。其中,部署和启动 JBoss组件的具体日志信息能够在运行 JBoss的控制台浏览到。如下消息表明,JBoss 服务器成功运行: 11:18:46,828 INFO Server
12、JBoss (MX MicroKernel) 4.2.2.GA (build: SVNTag=JBoss_4_2_2_GA date=200710221139) Started in 27s:94ms用户可以通过 Web浏览器验证 JBoss应用服务器是否在运行,其 HTTP监听端口为 8080(其中,必须保证在启动 JBoss时,8080 端口并没有被其他应用或服务占用)。通过 Web浏览器能够找到相关有用的 JBoss资源(译者注:http:/localhost:8080)。4.JMX控制台 通过 http:/localhost:8080/jmx-console,即 JMX控制台应用,用户
13、能够浏览到服务器活动视图。图 1.1给出了示例界面。 上述界面给出了 JBoss管理控制台,它提供了构成 JBoss服务器的 JMX MBean原始视图。我们暂时可以不用理会控制台的任何内容,但是需要知道控制台能够提供运行中的 JBoss应用服务器的大量信息。另外,通过它,用户能够修改、启动、停止 JBoss组件。 比如,请找到 service=JNDIView链接,然后单击。该特定 MBean提供了如下服务内容,即能够浏览服务器中 JNDI命名空间的结构信息。接下来,请在该MBean显示页面底端找到 list操作,然后单击 invoke按钮。invoke 操作将返回绑定到 JNDI树中的当前
14、名字列表,这对于获得 EJB名字很有帮助,比如当EJB应用客户端不能够解析 EJB名字时。 JAVA 编码规范与指南神州数码融信质量管理体系 图 1-1 JMX 管理控制台 Web 应用视图5.停止服务器 为了能够停止 JBoss服务器,用户可以敲入 Ctrl-C,或者从 bin目录运行shutdown脚本。甚至,用户还可以使用管理控制台(请在 jboss.system部分找到 type=Server,然后调用 shutdown操作。)。6.JBoss中的部署JBoss 中的部署过程非常的简单、直接。在每一个配置中,JBoss 不断的扫描一个特殊目录的变化:jboss 安装目录/server/
15、config-name/deploy此目录一般被称为“部署目录”。你可以把下列文件拷贝到此目录下:* 任何 jar 库(其中的类将被自动添加到 JBoss 的 classpath 中)JAVA 编码规范与指南神州数码融信质量管理体系 * EJB JAR*WAR (Web Appliction aRrchive)* EAR (Enterprise Application aRchive)* 包含 JBoss MBean 定义的 XML 文件* 一个包含 EJB JAR、WAR 或者 EAR 的解压缩内容,并以.jar、.war 或者.ear 结尾的目录。要重新部署任何上述文件(JAR、WAR、E
16、AR、XML 等),用新版本的文件覆盖以前的就可以了。JBoss 会根据比较文件的时间发现改变,然后部署新的文件。要重新部署一个目录,更新他的修改时间即可。二JBOSS 的配置1. JBoss日志设置Log4j是 JBoss使用的日志功能包。通过 conf/jboss-log4j.xml文件能够控制 JBoss的日志功能。该文件定义了一套 Appender、指定了日志文件、具体消息 Category类型的存储、消息格式以及消息的过滤级别。默认时,JBoss 会同时在控制台和日志文件(位于 log/server.log文件中)中生成输出信息。 一共存在 5个基本的日志级别:DEBUG、INFO、
17、WARN、ERROR 以及 FATAL。其中,控制台的日志入口(threshold)为 INFO,即用户通过控制台能够浏览到提示信息、警告信息、错误信息,但是调试信息查看不到。相比之下,JBoss 并没有为 server.log文件设置任何入口,因此所有生成的消息将记录到server.log文件中。如果 JBoss运行过程中出现了错误,则通过控制台可能找不到用户有用的信息,因此建议通过 server.log文件查看是否有调试信息可供解决问题所用。然而,请注意,通过调整日志入口能够在控制台查看到调试信息,但是这并没有保证所有的 JBoss消息都将记录到 server.log文件中。因此,用户还需
18、要为单个的 Category设置不同的日志级别。比如,jboss-log4j.xml给出了如下 Category。JAVA 编码规范与指南神州数码融信质量管理体系 2. web 服务的端口号的修改这点在前文中有所提及,即修改 JBoss安装目录server/default/deploy/jboss-web.deployer下的 server.xml文件,内容如下:将上面的 8080端口修改为你想要的端口即可。重新启动 JBoss后访问:http:/localhost/:新设置的端口,可看到 JBoss的欢迎界面。3. JBoss 的安全设置3.1 jmx-console 登录的用户名和密码设置
19、 默认情况访问 http:/localhost:8080/jmx-console 就可以浏览 jboss的部署管理的一些信息,不需要输入用户名和密码,使用起来有点安全隐患。下面我们针对此问题对 jboss进行配置,使得访问 jmx-console也必须要知道用户名和密码才可进去访问。步骤如下:3.1.1 修改 jboss-web.xml文件打开/server/default/deploy/jmx-console.war/WEB-INF/jboss-web.xml文件,去掉java:/jaas/jmx-console的注释。修改后的该文件内容为:java:/jaas/jmx-console3.1
20、.2 修改 web.xml文件与 3.1.1中的 jboss-web.xml同级目录下的 web.xml文件,查找到节点,去掉它的注释,修改后该部分内容为:HtmlAdaptorAn example security config that only allows users with therole JBossAdmin to access the HTML JMX console web application/*GETPOSTJBossAdmin在此处可以看出,为登录配置了角色 JBossAdmin。3.1.3 修改 login-config.xml 文件在第一步中的 jmx-conso
21、le 安全域和第二步中的运行角色 JBossAdmin都是在 login-config.xml 中配置,我们在 JBoss 安装目录/server/default/config 下找到它。查找名字为: jmx-console 的application-policy:props/jmx-console-users.propertiesprops/jmx-console-roles.propertiesJAVA 编码规范与指南神州数码融信质量管理体系 在此处可以看出,登录的角色、用户等的信息分别在 props目录下的 jmx-console-roles.properties和 jmx-consol
22、e-users.properties文件中设置,分别打开这两个文件。其中 jmx-console-users.properties文件的内容如下:# A sample users.properties file for use with the UsersRolesLoginModuleadmin=admin该文件定义的格式为:用户名=密码,在该文件中,默认定义了一个用户名为 admin,密码也为 admin的用户,读者可将其改成所需的用户名和密码。jmx-console-roles.properties的内容如下:# A sample roles.properties file for use with the UsersRolesLoginModuleadmin=JBossAdmin, HttpInvoker该文件定义的格式为:用户名=角色,多个角色以“,”隔开,该文件默认为 admin用户定义了 JBossAdmin和 HttpInvoker这两个角色。配置完成后读者可以通过访问: http:/localhost:8088/jmx-console/ ,输入 jmx-console-roles.properties文件中定义的用户名和密码,访问jmx-console的页面。如图: