是一个基于J2EE的
开放源代码的
应用服务器。 JBoss代码遵循
LGPL许可,可以在任何商业应用中免费使用。JBoss是一个管理
EJB的容器和
服务器,支持EJB 1.1、EJB 2.0和EJB3的规范。但JBoss
核心服务不包括支持servlet/
JSP的WEB容器,一般与Tomcat或Jetty绑定使用。
产品特点
在J2EE
应用服务器领域,JBoss是发展最为迅速的应用服务器。由于JBoss遵循商业友好的
LGPL授权分发,并且由
开源社区开发,这使得JBoss广为流行。
另外,JBoss应用服务器还具有许多优秀的特质。
其一,将具有革命性的JMX
微内核服务作为其
总线结构;
其二,本身就是
面向服务架构(Service-Oriented Architecture,
SOA);
其三,具有统一的类装载器,从而能够实现应用的
热部署和热卸载能力。
因此,高度模块化的和
松耦合。JBoss应用服务器是健壮的、高质量的,而且还具有良好的性能。
1、JBoss是免费的,
开放源代码J2EE的实现,通过
LGPL许可证进行发布。但同时也有
闭源的,开源和闭源流入流出的不是同一途径。
2、JBoss需要的内存和硬盘空间比较小。
JAR文件到部署路径下即可
自动加载;如果有改动,也会自动更新。
5、JBoss与Web服务器在同一个
Java虚拟机中运行,Servlet调用EJB不经过网络,从而大大提高
运行效率,提升安全性能。
6、用户可以直接实施J2EE-
EAR,而不是以前分别实施EJB-JAR和Web-WAR,非常方便。
7、Jboss支持集群。
发展
为满足企业级市场日益增长的需求,JBoss公司从2003年开始就推出了24*7、专业级产品支持服务。同时,为拓展JBoss的企业级市场,JBoss公司还签订了许多渠道合作伙伴。比如,JBoss公司同
HP、
Novell、Computer Associates、
Unisys等都是合作伙伴。
在2004年 6月,JBoss公司宣布,JBoss应用服务器通过了Sun公司的J2EE认证。这是JBoss应用服务器发展史上至今为止最重要的里程碑。与此同时, JBoss一直在紧跟最新的J2EE规范,而且在某些技术领域引领J2EE规范的开发。因此,无论在商业领域,还是在开源社区,JBoss成为了第一个通过J2EE 1.4认证的主流
应用服务器。JBoss应用服务器已经真正发展成具有企业强度(即,支持关键级任务的应用)的应用服务器。
JBoss 4.0作为J2EE认证的重要成果之一,已经于2004年9月顺利发布了。同时,JBoss 4.0还提供了JBoss
AOP(Aspect-Oriented Programming,面向切面编程)组件。AOP吸引了大量开发者的关注。它提供的新的编程模式使得用户能够将方面(比如,事务)从底层
业务逻辑中分离出来,从而能够缩短
软件开发周期。用户能够单独使用JBoss AOP,即能够在JBoss
应用服务器外部使用它。或者,用户也可以在应用服务器环境中使用它。JBoss AOP 1.0已经在2004年10月发布了。
展望下一代JBoss应用服务器,其重点关注的是EJB 3.0。当前,J2EE 1.4规范使用了EJB 2.1。其中,EJB 3.0的主要目标是简化EJB模型,即用户能够更容易开发EJB组件,并且能够在EJB容器外部测试EJB组件。EJB 3.0规范草案已经于2004年6月推出。JBoss公司一直在积极参与EJB 3.0规范的制定,并且在为EJB规范的发展贡献自己的力量。其中,
Gavin King(Hibernate的创立者)和Bill Burke(JBoss公司的
首席架构师)已经为EJB 3.0规范草案贡献了很多内容。
JBoss公司于2004年10月初发布了基于JBoss
应用服务器实现的EJB 3.0
预览版。尽管EJB 3.0规范草案还处于初期发展和评审阶段,但这为J2EE社区测试EJB 3.0、并提供反馈信息提供了很好的机会。这也证实了JBoss是一家创新型公司。JBoss一直在引领
技术规范的发展。
Hibernate已经成为了事实上的持久化引擎。JBoss公司致力于将自身发展成为
开源项目的社区,比如招募Gavin King和许多Hibernate开发者。其中,最新版的JBoss应用服务器已经将Hibernate集成为JMX MBean服务。这使得用户能够在
应用服务器环境中直接使用Hibernate,而不管它是否处于J2EE
上下文中。
从2003年开始,JBoss启动了
JBossCache项目。JBossCache是基于内存的、可复制的、事务性的缓存系统,并且具有持久化状态存储
管理能力。它受到极大的关注。用户能够在JBoss应用服务器或其他应用服务器中,或单独使用JBossCache。同时,它提供的基于JBoss
AOP的AOP模块能够在可复制环境中实现
细粒度、域级别复制,而且能够透明地管理
复杂对象。在最新版的JBoss应用服务器中,用户能够直接通过JMX MBean服务访问到JBossCache提供的服务。
JBoss
应用服务器5.0于2008年12月6日正式发布,新版应用服务器的模块化更强,
可配置性更高。JBoss应用服务器5.0
最终版完全兼容Java EE 5.0规范,具有一个微型内核和容器,支持OSGi和REST。
版本
JBoss4包括web服务器(
servlet/JSP容器,
HTML服务器)、EJB2.0容器。完整的纯
Java的
数据库引擎,(
Java消息服务)
JMS,
JavaMail,和Java事务处理API/Java事务处理服务(JTA/JTS)支持。早期的JBoss使用了
ApacheTomcatWeb服务器,但在JBoss4.0中已经把Apache Tomcat内嵌到JBoss中了。后续又集成Java
数据对象(
JDO),对于JMS多点传送机制支持的修补,对J2EE1.4的完全实现和
分布式事务机制。
JBoss的
应用服务器控制和配置-
JMX机制,运行一次可以部署所有的组件和服务。资源属性和可配置参数可以通过MBeans(可控制beans)映射和更改,这些控制可以在 JBoss的
控制台进行设置。一旦我们的servlet-based的
应用程序被部署,JBoss就自动安装一个部署MBeans,这个MBeans会被添加到JMX控制台的导航菜单中。通过这个MBean就可以部署或卸载WAR应用程序,或查看应用程序相关的属性。
Jboss4基于Jboss3.2,在J2EE标准特性方面,主要的改进包括:
· JBoss 4.0是业界第一家取得正式
J2EE1.4认证的
应用服务器,完全符合规范的J2EE标准
· 完全支持J2EE
web services(
JAX-RPC方式和WS4EE架构方式)和
SOA· 支持
AOP模型,JBoss Aop极大的提高了生产力
· 通过一个内建的Caching构架提升集群功能和分布式Caching(TreeCache)
JBoss4完全遵循J2EE1.4标准,所以允许开发者在不同的
应用服务器上重用J2EE组件(如EJB等),比如可以轻易的将部署在Weblogic或Websphere上的EJB迁移到JBoss上来,JBoss4比JBoss3.2实现了下面几个新的J2EE标准:
· JBoss4支持J2EE
Web Services,包括JAX-RPC和
J2EE架构的Web Services,使用EJB提供安全的Web Service环境,它是基于J2EE的SOA实现。JBoss3.2中旧的JBoss
.NET Web Services
API不再支持,新的Web Service实现是WS BasicProfile-1.0
compliant· JBoss4实现JMS1.1替代了JBoss3.2中的
JMS1.0
· JBoss4实现了JCA (Java Connector Architecture) 1.5替代了JBoss3.2中的JCA1.0
· JBoss4实现了新的Java Authorization Contract for Containers (
JACC),JACC是JAVA2一个基本的权限机制,为访问EJB方法和web资源赋予授权描述,即J2EE
应用服务器和特定的授权
认证服务器之间定义了一个连接的协约,新的实现在语法上基于JBoss3.2,使用认证过的Subject声明Roles,认证与
JAAS的
authentication保持一致。并且security配置,JBoss4和JBoss3.2兼容
· JBoss4实现了EJB2.1规范.替代了JBoss3.2中的EJB2.0规范
JBoss 4特性:
1. JBoss4.2必须需要安装jdk5
2. JBoss Ejb3默认被安装
3. JBoss的
web容器使用JBoss Web v2.x (集成tomcat6)
4. deploy/jboss-web.deployer 目录替换了原先的deploy/jbossweb-tomcat55.sar
5. JBoss Transactions v4.2为默认的
事务管理器
6. JBoss WS提供web service功能
7. JGroups/
JBossCache支持
channel multiplexing
8. JBoss Remoting更新到stable 2.2.x,JBossMQ(JBoss4.0使用)为默认JMS实现,但是可以使用JBoss Messaging替换。
9. EJB调用方式 由 rmi-invoker替换为JBoss Remoting 的 unified-invoker
10.
log4j 和 commons-logging 升级到新版本
第二代基于服务的架构:核心的JBoss Microcontainer可以在多种编程和
组件模型上提供改进后的级别加载、性能、生命周期管理和灵活性,其中包括
Java EE、多种
POJO、OSGi、
Spring Framework和传统的现场和云
操作环境。这种Microcontainer还提供将
企业服务从核心
运行时间引擎中分离出来的能力,使其更便于配置。
改进后的管理和配置:JBoss运营
网络管理控制台的嵌入式版本可以提供一个全面的接口,用于管理和配置应用、控制
应用服务器的运行,以及提供深入查看现场内外应用
性能指标的能力。
Java EEF支持:JBoss
企业应用平台支持全套的
Java EE 5标准,并可为多种即将推出的Java EE 6标准提供支持,其中也包括Java EE Web Profile概念。
主要组件更新:更新的内容包括企业版的JBoss
Application Server、
Hibernate、Seam、JBoss Cache和JBoss Web Services,可为各类部署环境中的扩展性、
高可用性和智能
负载均衡提供性能增强特性。这一新版本还可支持
分布式事务和全面的Web服务栈支持。
最新版的JBoss运营网络 - JBoss ON 2.3可支持运行管理。该版本提供全面的
管理支持,包括在传统和基于云的部署中配置应用集群,并在多种
运行环境中提供
可用性和
性能管理。
JBoss Developer Studio还可为开发人员提供
开发工具。这种基于Eclipse的集成式
开发环境能够提供全面的
工具集,使开发人员能够使用Seam、Java EE、
Spring、
Hibernate、
AJAX、
RichFaces等技术,迅速建立丰富且
交互性水平较高的应用和服务。
JBoss AS5中,大部分显著的新特性添加都源自于要将所有主要的JBoss
子系统带到下一个阶段去。
JBoss Messaging 1.4现在取代了JBossMQ,成为缺省的JMS提供者。除了透明的
故障恢复和智能的消息重分发外,JBM还支持即开即用的集群队列和主题。可以跨节点把消息复制到内存中,从而避免磁盘I/O,或者能使用支持大消息的分页技术将消息持久化到任何流行的
关系数据库中。JBM证明,利用已完全出现的新的只扩展日志存储,原本就很卓越的性能和东西会变得更加优秀。
JBoss WebServices 3.0,完全支持
JAX-WS/JAX-RPC、XOP和SwA的附件、还有一系列WS-*标准。JBWS转向了一个可插拔的架构,该架构允许更换底层的WebServices栈,所以你可以将JBossWS-native换成Sun Metro或
Apache CXF。这样的话,你就可以因地制宜,使用最合适WebServices栈。
为了改进
可伸缩性和集群Web会话的钝化,AS5中的集群支持SFSB的Buddy复制,以控制内存的使用。EJB3 Entity和Hibernate缓存有了很大的改进,因为可以针对实体和查询使用不同的缓存,它们分别是失效缓存和复制缓存。在底层的JGroups
协议栈中,还有一些其它的
性能优化。
JBoss Transactions是JBoss 5默认的事务管理器。JBoss TS已经与JBoss 5的Servlet容器——JBoss Web——一起在
AS 4.2系列中进行了测试,JBoss Web是基于
Apache Tomcat的一个实现,支持原有的APR-based连接器,它在可伸缩性和性能上不但要达到,而且要超越Apache Http服务器的水平。
就API来说,AS5是Java EE 5的实现,所有相关的API都会包含在内。对大部分Java EE 5“新的”API来说,比如EJB3、JAX-WS、
JPA等,在JBoss AS 4.2系列中已经实现了,但由于JBoss AS5增加了TCK测试的
覆盖范围,所以肯定会更为严格遵循规范。
JBoss5
应用服务器提供了大量的新功能:除了支持最新的EJB 3.0规范外,新版的JBoss AOP也正式发布。Web Services 方面,JBoss 现在支持全部的J2EE Web Services,同时兼容Microsoft .NET;Messaging 项目采用了完整的JMS 1.1 实现,同时充分的改进了分布式目的
单元格等功能的高可用性;JBoss Seam 中包括了一系列统一的革命性的组建
设计模型和框架。同时JBoss 5中也集成了Hibernate 3.2
JBoss AS 4.2和企业应用平台的第一个版本(EAP 4.2)确实对AS 5造成了很大的影响。从零开始创建一个全新的内核、从MBeans转换到POJO、在最底层集成AOP、统一跨子系统的
元数据处理、更改类加载系统、使部署器Aspect化,换句话说,就是改变内部架构、替换
应用服务器的核心,同时还要保持与大部分已有服务的向后
兼容性,为各种内部子系统引入合适的
SPI。长远看来这是好事,因为它允许最大的可插拔性,以及在不同的运行时环境中(比如独立的EJB3或嵌入到不同的应用服务器中)按需要选取使用各种JBoss项目。
JBoss AS5不只是一个Java EE 5应用服务器。对下一代JBoss项目来说,它还寄托了成为最先进的服务器运行时环境的愿景。
JBOSS AS6 最大亮点是对Java EE 6 Web Profile规范的支持,一份关于最流行的Java EE标准的报告中,排名前5(JPA、JSP、EJB3、JSF及
CDI)的都是Java EE Web Profile的必备组件。除了Java EE 6 Web Profile所需的这些组件外,AS 6还提供了可选的经过认证的组件:RESTEasy 2.1.0——
JAX-RS1.1规范的实现;HornetQ2.1.2——JMS 1.1规范的实现以及JBoss Web Services CXF栈——JAX-WS 2.2规范的实现。
主要特性就是对JBoss Injection框架的完整实现。这对于满足Java EE 6平台规范所要求的Resources、Naming以及Injection是至关重要的。Infinispan v4.2.0是个开源的数据网格平台,从CR1里程碑发布时就加入了,现在它也集成到了JBoss AS 6中,并且是默认的
分布式缓存提供者。Infinispan公开了一个兼容于JSR-107的Cache接口,你可以将
对象存储其中。JBoss AS 6服务器可以动态探测并注册到前端的apache
httpd服务器。
对于性能来说,JBoss AS 5与6之间有明显的变化。JBoss AS 6对启动性能的提升很明显,现在的平均
启动时间是15秒。用户能够感觉到这种改进,一定程度上是因为延迟了随AS一同发布的管理控制台应用的部署,转而以“按需”方式提供,同时还实现了Timer Service的延迟部署。Microcontainer(v2.2)的增强(包括新的注解扫描库的实现)极大降低了应用部署的时间。
2011年07月13日,JBoss AS 发布了 7.0
正式版。这是一个全新的版本,带来多项的改进和新特性,特别是:
1. 极快(小于3秒的启动时间)
2. 轻量级
3. 模块化的核心
5. 优雅的管理
6. 集群域的管理
7. First Class components
JBoss AS目前作为Redhat公司的商业产品JBoss Enterprise Application Platform的上游基础,为了使这两个产品有差异化,避免用户混淆,因此该公司在去年10月份就寻求为JBoss AS找一个新名字。
RedHat公司称,新名称WildFly反映了服务器“非常灵活、轻量、不羁、自由”的特性。
改名后的首个版本为WildFly 8,将接棒JBoss AS 7。RedHat公司表示,新版本不仅是名称上的变化,还带来了如下改进:
1.启动超快
3.非常轻量,内存占用非常少
5.严格遵守Java EE7和OSGi规范
书籍简介
JBoss开发团队还计划开发新的
微内核层,即独立于JMX,使得它能够独立使用。另外,有关JBoss
应用服务器的架构和开发,开发者可以参考由Scott Stark博士著的《JBoss Administration and Development 3.2.x Third Edition》一书(此书已由
电子工业出版社引进并翻译出版,中文版书名为《JBoss管理和开发核心技术(第三版)》)。Scott Stark博士是JBoss公司的创始人之一,他一直在领导JBoss产品的研发。该书内容涵盖了JBoss应用服务器的方方面面,比如JMX微内核、客户端和服务器端
拦截器以及J2EE平台服务的实现等内容。如果开发者对JBoss内核和开发基于JBoss/J2EE的应用感兴趣,则最好能够阅读这本权威著作。
环境搭建
java应用当然首先需要安装java运行环境(
JRE),JRE提供了运行java的基本环境。安装jboss需要jdk,jdk中包含jre.
安装完JDK后,需要做如下配置:
我的电脑→属性→高级-→环境变量,在
系统变量中点击新建下面二项:
1. 名:JAVA_HOME,值:jdk的安装路径
在系统变量path中增加如下内容:;%JAVA_HOME%in;
这些做完后,在命令窗口中运行java -version有输出便可
二、安装Jboss
Jboss是Java EE
应用服务器(就像Apache是web服务器一样),专门用来运行Java EE程序的。
安装jboss很简单,它不需要安装,直接解压到一个目录下即可
三、安装AOP
对于Jboss我们使用了一些其它组件:AOP,用它来做权限处理,(AOP是一个编程模型,用来对处理代码的方面,横切面),然后jboss自带有,但是自带的不能满足要求,所以需要单独安装和配置
下载解压后,把其中的jboss-40-install/jboss-aop-jdk50.deployer下的所有的文件拷贝到jboss目录的jboss/server/default/deploy/jboss-aop-jdk50.deployer下,覆盖其中的所有文件
打开jboss/server/default/deploy/jboss-aop-jdk50.deployer/META-INF/jboss-service.xml文件,把其中的< attribute name=”EnableLoadtimeWeaving”>false< /attribute>;上的false修改为true.
打开jboss/bin/run.bat(如果是在linux则是jboss/bin/run. s h)文件,修改其中的JAVA_OPTS=”-Dprogram. name= ”为JAVA_OPTS=”-D program. na me= -javaagent:pluggable-instrumentor.jar ”.其中有颜色的部分是加上的。
把aop解压目录下的lib/pluggable-instrumentor.jar文件拷贝到jboss/bin目录下
AOP安装完成
四、部署应用
跟apache一样,jboss也有一个部署目录,那就是jboss/server目录,其中有三个目录:all,default,minimal,代表了jboss提供的三种部署方式,all表示jboss提供的服务全部打开,default表示默认的jboss服务,minimal表示只打开最基本的。这里面可以增加自己的部署,我们只使用default。
进入default目录后,有以下几个目录:
conf:一些配置文件
data:保存的数据,比如有状态会话bean
deploy:部署目录,所有的应用都部署在这里面,相当于apache的htdocs
lib:部署的应用程序需要使用到的其它库(jar)
work:工作目录,所部署的应用(一些jar压缩文件)会被解压在这里
要部署我们的应用,还需要做以下几步:
A。把jboss/docs/examples/jca/mysql-ds.xml拷贝到jboss/server/default/deploy目录下,并做如下修改:
< connection-url>
jdbc:mysql://你要连接的数据库的ip:3306/数据库名zeroDateTimeBehavior=convertToNull< /connection-url>
< driver-class>com.mysql.jdbc.Driver< /driver-class>
< user-name>;
用户名< /user-name>
<
password>;密码< /password>
B。下载jdbc驱动并把解压后的mysql-connector-java-5.XX-bin.jar拷贝到部署目录的lib中(server/default/lib)
到此jboss服务器和myro3应用就部署好了,现在只需要启动jboss,便可通过
rcp客户端访问你的jboss
打开命令提示窗口,到jboss的bin目录下面,运行:run -b 你的ip 启动jboss便可
剩下的就是修改rcp客户端程序中myroConfig.properties把其中连接的jboss的ip修改为你的ip即可.
对于gwt应用的部署,到时候要提供一个war文件,把它部署到server/default/deploy下面就行了,然后访问http://你的ip:8080/war文件名就可以访问gwt程序.。同时把myro_server/myroConfig.properties部署到jboss/bin中。以上,Jboss环境搭建步骤介绍完毕。
使用技巧
目录结构
1、bin:开始和停止JBoss的地方。
其中有两个主要的
批处理文件:run.
bat和shutdown.bat。要启动JBoss只要执行run.bat文件即可;要停止JBoss必须执行带参数的shutdown.bat。
一般
运行命令:run -c 服务器名,例如:run -c all 或 run -c default 或自定义的服务器 run -c ejbtest。
注意,shutdown.bat文件直接执行并不会自动停止JBoss,它必须要
输入参数,参数意义如下:
-h 显示帮助信息;
-D 设置系统属性;
-- 停止处理选项;
-a 适配到指定的JNDI名称的远程服务;
-u 指定用户名称;
-p 指定用户密码;
-S 停止服务器;
-H 暂停(挂起)。
一般,我们使用-S选项来停止服务器。即执行
shutdown -S。
2、docs:放置JBoss的例子、
测试脚本和各种脚本
配置文件的DTD。
3、
lib:放置JBoss所需要的部分jar包文件。
4、client:放置
EJB客户端
运行时所需要的jar包。
5、
server:放置各启动类型的
服务器端EJB配置所需要的文件等。
6、backup
配置端口
重新启动JBoss即可
启动过程
设置
环境变量JBOSS_
CLASSPATH (可以自己加上安全管理器和xml解析器)
(a) %JBOSS_CLASSPATH%;
(b) %JAVA_HOME%/lib/tools.jar;
(c) run.jar;
(d) ../lib/crimson.jar;
启动
设置配置信息
读取配置文件JBoss.properties,保存在系统属性中(System.properties)
设置缺省属性jboss.home和
java.security.auth.login.config
把配置文件和补丁文件所在的目录指定给特定的远程类加载器Mlet
加载保存配置文件(mlet会自动在配置文件目录中查找)
初始化并启动MBean
配置服务ConfigurationService
加载配置文件
保存配置
服务控制ServiceControl
启动服务程序(start方法)
在JBOSS中发布文件
2、制作Servlet的war部署文件
代码如下:
HelloWorld
hello.HelloWorld
/HelloWorld
每个标记(标签)必须小写,否则会出错。
D、在web-inf目录下建立一个classes目录,放入编译好的HelloWorld.
class文件3、也可以不打包,把文件放在
deploy下的同名文件夹下也可以。比如原来是制作成hello.war文件,可以建立一个名称为hello.war的文件夹,把要发布的文件拷贝到这个目录底下也可以发布成功。
服务器
JBOSS服务器使用详解
1、把
文件解压到一个不含空格的,非中文目录下,如:jboss
2、加入
MyEclipse —> Servers -> JBoss -> JBoss 5.x
(2)、Server name :default (3个默认的配置:minimial,default和all)
3、Apply -> OK
(1)、添加:变量名:JBoss_HOME
变量值(3)、保存
6、发布web项目
目录 描述
------------------------------------------------------------------------------
bin 启动和关闭JBoss的脚本
client 客户端与JBoss通信所需的的Java库(JARs)
docs 配置的样本文件(数据库配置等)
doc/dtd 在JBoss中使用的各种XML文件的DTD。
lib 一些JAR,JBoss启动时加载,且被所有JBoss配置共享。(不要把你的库放在这里)
server 各种JBoss
配置。每个配置必须放在不同的
子目录。子目录的名字表示配置的名字。
JBoss包含3个默认的配置:minimial,default和all。
server/all JBoss的完全配置,启动所有服务,包括集群和
IIOP。
server/default JBoss的默认配置。在没有在JBoss命令航中指定配置名称时使用。
server/default/conf JBoss的配置文件。
server/default/data JBoss的
数据库文件。比如,嵌入的数据库,或者JBossMQ。
server/default/deploy JBoss的热部署目录。放到这里的任何文件或目录会被JBoss自动部署。EJB、WAR、EAR,甚至服务。
server/default/lib 一些JAR,JBoss在启动特定配置时加载它们。(all和minimial配置也包含这个和下面两个目录。)
server/default/log JBoss的
日志文件。
server/default/tmp JBoss的
临时文件。
补充
1、JBoss的默认端口是8080
2、对于NT和Win2000系统如果你要安装NT或Win2000服务的话,可以把JBoss加在
系统服务中,避免你每次需要到JBoss目录下运行run.bat命令,只是当系统启动时,
自动启动JBoss服务器。