JBoss

来自站长百科
跳转至: 导航、​ 搜索

JBoss是一套应用程序服务器,属于开源的企业级Java中间件软件,用于实现基于SOA架构的web应用和服务。它包含一组可独立运行的软件

JBoss是全世界开发者共同努力的成果,可以在任何商业应用中免费使用它,而不用支付费用。2006年,Jboss公司被Redhat公司收购。JBoss是一个管理EJB的容器和服务器,支持EJB 1.1、EJB 2.0和EJB3.0的规范。但JBoss核心服务不包括支持servlet/JSP的WEB容器,一般与TomcatJetty绑定使用。

优点[ ]

  • JBoss是免费的,开放源代码J2EE的实现,通过LGPL许可证进行发布。
  • JBoss需要的内存硬盘空间比较小。
  • 安装便捷:解压后,只需配置一些环境变量即可。
  • JBoss支持"热部署",部署BEAN时,只拷贝BEAN的JAR文件到部署路径下即可自动加载它;如果有改动,也会自动更新。
  • JBoss与Web服务器在同一个Java虚拟机中运行JBoss运行后后台管理界面,Servlet调用EJB不经过网络,从而大大提高运行效率,提升安全性能。
  • 用户可以直接实施J2EE-EAR,而不是以前分别实施EJB-JAR和Web-WAR,非常方便。
  • Jboss支持集群。

使用技巧[ ]

Jboss的目录结构[ ]

  • bin:开始和停止JBoss的地方。

其中有两个主要的批处理文件:run.bat和shutdown.bat。要启动JBoss只要执行run.bat文件即可;要停止JBoss必须执行带参数的shutdown.bat。

注意,shutdown.bat文件直接执行并不会自动停止JBoss,它必须要输入参数,参数意义如下:

  1.   -h 显示帮助信息;
  2.   -D 设置系统属性;
  3.   -- 停止处理选项;
  4.   -s 停止用JNDI URL指定的远程服务;
  5.   -n 通过制定JMX名字来停止服务;
  6.   -a 适配到指定的JNDI名称的远程服务;
  7.   -u 指定用户名称;
  8.   -p 指定用户密码;
  9.   -S 停止服务器;
  10.   -e 从虚拟机退出;
  11.   -H 暂停(挂起)。

一般,我们使用-S选项来停止服务器。即执行shutdown.bat -S。

  • docs:放置JBoss的例子、测试脚本和各种脚本配置文件的DTD。
  • lib:放置JBoss所需要的部分jar包文件。
  • client:放置EJB客户端运行时所需要的jar包。
  • server:放置各启动类型的服务器端EJB配置所需要的文件等。
  • backup

配置服务端口[ ]

修改文件: %JBOSS_HOME%\server\default\deploy\jbossweb-tomcat41.sar\META-INF\jboss-service.xml

在"8080"的配置后加入以下代码:

  <!-- A HTTP/1.1 Connector on port 80 -->
  <Connector className="org.apache.coyote.tomcat4.CoyoteConnector"
  port="80" minProcessors="5" maxProcessors="100"
  enableLookups="true" acceptCount="10" debug="0"
  connectionTimeout="20000" useURIValidationHack="false"/>

重新启动JBoss即可

启动过程[ ]

设置环境变量 JBOSS_CLASSPATH (可以自己加上安全管理器和xml解析器) a) %JBOSS_CLASSPATH%;

b) %JAVA_HOME%/lib/tools.jar;

c) run.jar;

d) ../lib/crimson.jar;

设置启动参数JAXP(xml解析器和相应工厂)

启动

设置配置信息

读取配置文件JBoss.properties,保存在系统属性中(System.properties)

设置缺省属性jboss.home和java.security.auth.login.config

创建MBeanServer.的实例:

把配置文件和补丁文件所在的目录指定给特定的远程类加载器Mlet

加载保存配置文件(mlet会自动在配置文件目录中查找)

初始化并启动MBean

配置服务ConfigurationService

加载配置文件

保存配置

服务控制ServiceControl

初始化服务程序(init方法)

启动服务程序(start方法)

在JBOSS中发布文件[ ]

  • 制作JSP的war部署文件:

用"jar cvf hello.war index.jsp main.jsp"的方式生成把index.jsp和main.jsp文件加入到hello.war中。把生成的hello.war拷贝到jboss安装目录\server\default\deploy\下,部署成功。用"http://localhost:8080/hello/"或"http://localhost:8080/hello/index.jsp"这两个地址进行测试。

  • 制作Servlet的war部署文件
  1. 用[ javac -classpath "%CLASSPATH%;%jboss_home%\server\default\lib\javax.servlet.jar" HelloWorld.java ]的形式编译HelloWorld.java(这是一个Servlet)得到HelloWorld.class
  2. 写一个web.xml配置文件,代码如下:
  <?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE web-app
  PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
  "http://java.sun.com/dtd/web-app_2_3.dtd">
  <web-app>
  <servlet>
  <servlet-name>HelloWorld</servlet-name>
  <servlet-class>hello.HelloWorld</servlet-class>
  </servlet>
  <servlet-mapping>
  <servlet-name>HelloWorld</servlet-name>
  <url-pattern>/HelloWorld</url-pattern>
  </servlet-mapping>
  </web-app>

每个标记(标签)必须小写,否则会出错。

  1. 先在c:\servlet下建立一个web-inf目录,在目录中放入web.xml文件。
  2. 在web-inf目录下建立一个classes目录,放入编译好的HelloWorld.class文件
  3. 在c:\servlet下执行jar cvf hello.war *.*,很快就生成了一个名为hello.war的文件,接着把hello.war复制到jboss的安装目录\server\default\deploy\下完成部署。
  • 也可以不打包,把文件放在deploy下的同名文件夹下也可以。比如原来是制作成hello.war文件,可以建立一个名称为hello.war的文件夹,把要发布的文件拷贝到这个目录底下也可以发布成功。

JBoss的服务器架构概述[ ]

JBoss的构架和其他J2EE应用服务器的构架有着巨大的不同。JBoss的模块架构是建立在JMX底层上的,下图展现了JBoss主要组件和JMX的联系。

Jboss 1.jpg

JMX层次[ ]

JMX是一个可复用框架,它为远程(Remote)和本地(Local)管理工具扩展了应用。它的架构是层式架构。他们是实现层(instrumentation layer)、代理层(agent layer)和发布层(distribution layer)。其中,发布层还在等待未来的标准化。简要的表述是,用户使用管理Bean,MBean来提供获得相应资源的实现方法。实现层实现相关的特性资源并将它发布于JMX相关应用中,它的代理层控制和发布相应的注册在MBeanServer代理上的管理资源。

Jboss 2.jpg

Boss主要模块[ ]

主要的JBoss模块是在MeanServer上的可管理MBean。

  • JBoss EJB容器是JBoss服务器的核心实现。它有两个特性,第一是在运行期产生EJB 对象的Stub和Skeleton类,第二是支持热部署。
  • JBossNS是JBoss命名服务用来定位对象和资源。它实现了JNDI J2EE规范.
  • JBossTX 是由JTA/JTS支持的交易管理控制.
  • 部署服务支持EJB(jar)、Web应用文档(war)和企业级应用文档(ears)的部署。它会时刻关心J2EE应用的URL情况,一旦它们被改变或出现的时候将自动部署。
  • JBossMQ使Java 消息规范(JMS)的实现。
  • JBossSX支持基于JAAS的或不支持JAAS机制的安全实现。
  • JBossCX实现了部分JCA的功能。JCA制订了J2EE应用组件如何访问基于连接的资源。
  • Web服务器支持Web容器和Servlet引擎。JBoss 2.4.x版本支持Tomcat 4.0.1,Tomcat 3.23和Jetty 3.x服务.

JBoss架构设计中的两个重要的特性[ ]

第一是使用JMX作为一个软件总线垂直的贯穿其所有的服务,通过将新的服务组件遵循JMX规范挂接上"总线",使得系统扩展现有的服务变得容易。可插入式框架被广泛的运用于服务的实现。开发者可以选择他们需要的服务并编写他们所需要的相应实现,通过定义在部署描述文件中,让JBoss服务器知道。

第二是容器被设计成为动态代理机制,这样使容器的实现变得简单和使开发者避免费劲的将jar文件进行预编译以获得stub和skeleton代码。但是这样做潜在的问题是性能和可测性,因为我们知道java反射机制会引起性能的损失。

相关条目[ ]

参考来源[ ]