`
foryougeljh
  • 浏览: 116423 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

jboss简介

 
阅读更多
JBOSS简介
JBoss是一个运行EJB的J2EE应用服务器。它是开放源代码的项目,遵循最新的J2EE规范。从JBoss项目开始至今,它已经从一个EJB容器发展成为一个基于的J2EE的一个web 操作系统(operating system for web),它体现了J2EE规范中最新的技术,并且它还在the JavaWorld ditors' Choice 2002评选中获得"最佳Java应用服务器"大奖。无论是学习还是应用,JBoss为我们提供了一个非常优秀的平台。有关JBoss的详细信息请参阅其主页 http://www.jboss.org

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


JBoss 管理控制台(JMX Console)
进入jboss的管理控制台(JMX Console)用户能够浏览到服务器活动视图

查看JBOSS JNDI名称
在jboss找到 service=JNDIView链接,能够浏览服务器中 JNDI 命名空间的结构信息,在该 MBean 显示页面找到 list 操作,然后单击 invoke 按钮。invoke 操作将返回绑定到 JNDI 树中的当前名字列表,这对于获得 EJB 名字很有帮助.如果服务器一旦重启,从控制台所作的修改都将丢弃掉。因为重启 JBoss 时,系统将重新装载原始配置,因此用户可以大胆地尝试一切操作。

配置服务端口
[JBOSS_HOME]\server\default\deploy\jboss-web.deployer\server.xml
<Connector port="1234" address="${jboss.bind.address}"
maxThreads="250" maxHttpHeaderSize="8192"
emptySessionPath="true" protocol="HTTP/1.1"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />

JBoss 服务器结构
bin:含有启动、停止以及其他系统相关脚本。
client:存储供Java客户应用或者外部Web容器使用的配置文件和 JAR 文件。用户可以使用所需要的具体存档,或者仅仅使用 jbossall-client.jar。
docs:含有JBoss引用的XML DTD文件(当然,还包括 JBoss 具体配置文件)。同时,还存在JCA实例配置文件,供设置不同数据库的数据源使用(比如 MySQL数据源、Oracle数据源)。
lib:包含运行 JBoss 微内核所需的 JAR 文件。请注意,不要往该目录添加用户身的任何 JAR 文件。
server:包含的各个子目录都是不同的服务器配置。通过往run脚本后添加-c <config name>参数便能够指定不同的配置。

server目录下存在 3 个服务器实例配置:all、default 以及 minimal,它们各自提供了不同的服务集合.
如果启动 JBoss服务器时没有指定其他配置,则将使用 default配置
minimal:这是启动 JBoss服务器所要求的最低配置,它仅仅是服务器,而不包含 Web容器、不提供 EJB 和 JMS 支持
default:默认配置,含有大部分J2EE应用所需的标准服务。但它不含有JAXR服务、IIOP服务、或者其他任何群集服务
all:提供了所有可用的服务

用户也可以添加自身的服务器配置。最佳做法是,拷贝最接近用户需求的现有配置,然后修改其具体内容。比如,如果用户不需要使用消息服务,则只需要拷贝 default 目录,并重新命名为 myconfig,然后删除 jms 子目录。最后,启动 myconfig 配置。
run -c myconfig

default 服务器配置目录
conf:含有指定 JBoss 核心服务的 jboss-service.xml 文件。同时,还包括核心服务的其他配置文件。
data:这一目录存储持久化数据,即使服务器发生重启其中的数据也不会丢失。许多 JBoss 服务将数据存储在这里
deploy:jobss热部署目录用户能够在deploy目录看到大量的配置文件。尤其是,用户能够看到 JMX 控制台应用(未打包的WAR文件),JBoss服务器将定期扫描该目录,从而查找是否有组件更新或修改,从而自动完成组件的重新部署。
lib:服务器配置所需的 JAR 文件。用户可以添加自身的库文件,比如 JDBC 驱动
log:日志信息将存储到该目录。JBoss使用Jakarta Log4j包作为其日志功能。同时,用户可以在应用中直接使用Log4j日志记录功能。
tmp:供部署器临时存储未打包应用使用,也可以作为其他用途。
work:供 Tomcat 编译 JSP 使用。


核心服务
当 JBoss 服务器启动时,首先会启动 conf/jboss-service.xml 文件指定的核心服务。其中包括日志、安全性、JNDI
虽然通过 conf/jboss-service.xml 文件能够添加其他 MBean 服务,但是更好的办法是,将单独的配置文件放置在 deploy 目录中,因为这将使得用户的服务具有热部署能力。

日志服务
通过conf/jboss-log4j.xml文件能够控制JBoss的日志功能。开发中通过 server.log 文件查看是否有调试信息,可供解决问题所用。用户还需要为单个的 Category设置不同的日志级别
<!-- Limit JBoss categories to INFO -->
<category name="org.jboss">
<priority value="INFO"/>
</category>
它将所有的 JBoss 相关类的日志级别限制到 INFO,即同那些含有具体日志级别的Category隔离开

将 CMP 引擎的日志输出级别设置为 DEBUG,并将其定位到 cmp.log 文件中,从而可供用户分析生成的 SQL 命令。因此,需要添加如下代码到log4j.xml 文件中。
<appender name="CMP" class="org.jboss.logging.appender.RollingFileAppender">
<errorHandler class="org.jboss.logging.util.OnlyOnceErrorHandler"/>
<param name="File" value="${jboss.server.home.dir}/log/cmp.log"/>
<param name="Append" value="false"/>
<param name="MaxFileSize" value="500KB"/>
<param name="MaxBackupIndex" value="1"/>

<layout class="org.apache.log4j.PatternLayout">
<param name="ConversionPattern" value="%d %-5p [%c] %m%n"/>
</layout>
</appender>
<category name="org.jboss.ejb.plugins.cmp">
<priority value="DEBUG" />
<appender-ref ref="CMP"/>
</category>
这将创建新的文件 Appender,并指定将它用于 org.jboss.ejb.plugins.cmp 包的 Logger(或Category).
由于文件 Appender 设置为每日创建新的日志文件,因此 JBoss 不会每次启动服务器时创建新的日志文件,而且也不会总是将日志信息记录到单个文件中。当前的日志文件为cmp.log,更早的日志文件名是通过将具体日期添加到server 而生成的。用户应该还注意到,log 目录包含了 Web 容器生成的 HTTP请求日志。


安全性服务
JBOSS安全性域信息存储在login-config.xml文件中,其包含了许多安全性域定义.当用户需要在应用中使用安全性时,需要在JBoss特定部署描述符jboss.xml或jboss-web.xml中指定待使用的安全性域名
设置JBOSS管理控制台
通过server/default/deploy/jmx-console.war/WEB-INF/目录能够找到待修改的JMX 控制台文件,即jboss-web.xml。将jboss-web.xml 中 security-domain 的注释去掉,具体如下
<jboss-web>
<security-domain>java:/jaas/jmx-console</security-domain>
</jboss-web>
这将设置 Web 应用待使用的安全性域,但还未确定 Web 应用应该使用的安全性策略
在同一目录中找到 web.xml 文件,然后将 security-constraint 的注释去掉。其中,该安全性约束要求登陆
用户必须具有 JBossAdmin 角色
<security-constraint>
<web-resource-collection>
<web-resource-name>HtmlAdaptor</web-resource-name>
<url-pattern>/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>JBossAdmin</role-name>
</auth-constraint>
</security-constraint>
打开conf/login-config.xml文件,可以看到JMX是通过props/jmx-console-users.properties和jmx-console-roles.properties文件来给出登陆JMX控制台的用户名和密码
<application-policy name = "jmx-console">
<authentication>
<login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule"
flag = "required">
<module-option name="usersProperties">props/jmx-console-users.properties</module-option>
<module-option name="rolesProperties">props/jmx-console-roles.properties</module-option>
</login-module>
</authentication>
</application-policy>
登陆JMX控制台应用的用户名和密码存储在 jmx-console-users.properties 中,并且以"username=password"形式给出。为了将用户添加到 JBossAdmin 角色中,需要将"username=rolename"形式给出的用户和角色映射关系给出在 jmx-console-roles.properties文件中。现存的文件创建了 admin 用户,其密码为admin。用户可能删除该用户,或者更改其密码,使得 JMX控制台应用更安全
添加角色,例如可以在web.xml 增加多个角色
<security-role>
<role-name>ljh</role-name>
</security-role>
允许登录控制台的角色
<auth-constraint>
<role-name>JBossAdmin</role-name>
<role-name>ljh</role-name>
</auth-constraint>

其他服务
deploy目录放置的服务不是核心服务,但具有热部署能力。用户可以通过 XML 描述符文件(*-service.xml)或 JBoss 服务存档(SAR)文件给出服务。

JBoss中的部署
你可以把下列文件拷贝到此目录下:
任何jar库(其中的类将被自动添加到 JBoss的 classpath 中)
* EJB JAR
* WAR (Web Appliction aRrchive)
* EAR (Enterprise Application aRchive)
* 包含 JBoss MBean 定义的 XML文件
* 一个包含 EJB JAR、WAR 或者 EAR 的解压缩内容,并以.jar、.war或者.ear结尾的目录。
要重新部署任何上述文件(JAR、WAR、EAR、XML等),用新版本的文件覆盖以前的就可以了。JBoss会根据比较文件的时间发现改变,然后部署新的文件。要重新部署一个目录,更新他的修改时间即可。

在Tomcat 或 J2SE 中调用 EJB
根据应用的需要, 把调用EJB所依赖的Jar包拷贝到tomcat下的/shared/lib目录或WEB应用的WEB-INF/lib
下,所依赖的 Jar一般在 jboss安装目录的 client
把 EJB 接口拷贝到应用的/WEB-INF/classes/目录下
客户端访问 EJB时必须明确设置 InitialContext环境属性,代码如下:
Properties props = new Properties();
props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
props.setProperty("java.naming.provider.url", "localhost:1099");
props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming");
InitialContext ctx = new InitialContext(props);//如果客户端和jboss运行在同一个jvm,不需要传入props
HelloWorld helloworld = (HelloWorld) ctx.lookup("HelloWorldBean/remote");
out.println(helloworld.SayHello("佛山人"));
除了上面通过硬编码设置环境属性的方式外, 还可以在应用的 classpath下放置一个 jndi.properties 文件

在 JBOSS 中的 WEB应用调用 EJB
在Jboss下发布 WEB 应用,需要把 WEB应用打包成 war文件。另外在此环境下调用EJB不需要把EJB 的接口类放
入/WEB-INF/classes/目录中,否则在调用 Stateful Bean 就会发生类型冲突,引发下面的例外
发布在 Jboss下的客户端不需要明确设置 JNDI访问的上下文环境,可以直接通过 InitialContext ctx = new
InitialContext()获得上下文环境,容器会自动赋给 InitialContext正确的环境,代码如下:
InitialContext ctx = new InitialContext();//如果客户端和jboss运行在同一个jvm,不需要传入props
HelloWorld helloworld = (HelloWorld) ctx.lookup("HelloWorldBean/remote");
out.println(helloworld.SayHello("佛山人"));
分享到:
评论

相关推荐

    jboss 简介

    **JBoss 简介** JBoss 是一个开源的应用服务器,它基于Java EE(现在称为Jakarta EE)标准,提供了一个全面的平台来部署和管理企业级Java应用程序。由Red Hat公司维护,JBoss 提供了包括Web服务、EJB(Enterprise ...

    JBoss4.0中文版.pdf

    1. **JBoss简介**:JBoss是Red Hat公司的一个开源Java EE应用服务器,基于J2EE(Java Platform, Enterprise Edition)标准,提供了一系列的企业级服务,如EJB、JMS、JTA等,用于构建、部署和管理分布式企业级应用。...

    最详细的JBOSS使用手册

    一、JBOSS简介 JBOSS是基于Java的开源应用服务器,它遵循Java EE(Enterprise Edition)标准,提供了对Web服务、EJB(Enterprise JavaBeans)、JMS(Java Message Service)、JPA(Java Persistence API)等企业级...

    JBoss架构分析

    ##### 1.1 JBoss简介 JBoss是一款基于LGPL许可的开源J2EE(Java 2 Platform, Enterprise Edition)实现平台,提供了完整的EJB(Enterprise JavaBeans)容器及一系列EJB服务。这些服务包括但不限于数据库访问(JDBC)...

    Apache与Jboss负载均衡教程

    - **JBoss简介**:JBoss是一款开源应用服务器,100%基于Java开发,与底层操作系统之间没有本地hooks,这意味着它完全依赖于Java虚拟机(JVM)作为其运行平台。JBoss支持多种JVM版本,默认使用Sun JDK 1.5版,但随着...

    JBOSS 4.2.2GA 使用指南

    ### JBOSS简介 JBOSS是由Red Hat公司维护的,它包含了执行Java EE应用所需的各种组件,如Servlet容器、EJB容器、JMS(Java消息服务)、JNDI(Java命名和目录接口)等。该服务器以其轻量级、高效和易于管理的特点而...

    jboss解压版

    1. **JBoss简介** JBoss是一个基于Java的开放源代码应用程序服务器,它实现了Java EE(现在被称为Jakarta EE)规范,提供了包括EJB(Enterprise JavaBeans)、JMS(Java Message Service)、JPA(Java Persistence ...

    Jboss 下开发EJB简介.doc

    #### 一、JBoss简介与重要性 JBoss作为一个开源的J2EE应用服务器,自诞生以来便受到了广泛的关注和应用。它不仅支持最新的J2EE规范,而且随着时间的发展,逐渐从一个单纯的EJB容器成长为一个全面支持J2EE的Web操作...

    Jboss上部署EJB方法

    1. JBoss简介 JBoss是一个开源的J2EE应用服务器,专注于运行Enterprise JavaBeans (EJBs)。它遵循J2EE规范并不断发展,逐渐演变成一个基于J2EE的web操作系统。JBoss包含了J2EE规范中的最新技术,并在2002年的...

    Jboss开发者手册

    1. **JBoss简介** JBoss是Red Hat公司旗下的产品,基于Java平台,用于运行和管理Java EE应用程序。它提供了包括EJB(Enterprise JavaBeans)、JMS(Java Message Service)、JPA(Java Persistence API)和JSF...

    jboss_chhh

    ### JBoss简介 JBoss AS(Application Server),现称为WildFly,是一款开源的Java应用服务器,支持最新的Java EE标准。它由JBoss集团开发,并于2014年被Red Hat收购后更名为WildFly。JBoss AS提供了一整套企业级的...

    Jboss安装与使用

    #### 一、JBoss简介 JBoss是一个开源的应用服务器,主要用于部署Java应用程序。它支持多种Java技术标准,如Java EE、EJB、JMS等,广泛应用于企业级应用开发。 #### 二、安装与配置 ##### 2.1 软件安装 - **前提条件...

    JBoss启动与运行过程的研究

    1. JBoss简介 JBoss是由Red Hat公司开发的一个开放源代码的应用服务器,它支持Java EE的各种组件和服务,如EJB(Enterprise JavaBeans)、JMS(Java Message Service)、JPA(Java Persistence API)等。JBoss是基于...

    JBoss架构分析以及构架原理

    ##### 1.1 JBoss简介 JBoss是一款免费且开源的Java 2 Platform, Enterprise Edition (J2EE) 实现,由JBoss集团开发并通过GNU Lesser General Public License (LGPL) 许可证发布。它为开发者提供了强大的企业级应用...

    JBOSS实用手册 CSDN资源下载

    #### 一、JBoss简介与发展历程 JBoss是一款开源的应用服务器,能够同时支持Web应用程序和EJB(Enterprise JavaBeans)应用,它遵循J2EE(Java 2 Platform, Enterprise Edition)规范。自从项目启动以来,JBoss已经...

Global site tag (gtag.js) - Google Analytics