资源描述
是什么?JBoss是免费的,开放源代码J2EE的实现,它通过LGPL许可证进行发布。(LGPL许可证:GNU通用公共许可证(General Public License简称为GPL),是由自由软件基金会发行的用于计算机软件的许可证。目的就是发明出一种四海之内皆可使用的许可证,这样就能为许多源代码共享筹划带来福音。GPL原理简朴:在版权法下,你不遵守GPL的条款和条件你就没有相应权利。而作品在没有GPL的状况下,版权法作为默认条款发生效力,而不是作品进入公有领域。目前大多数的GNU程序和超过半数的自由软件使用此许可证。此许可证最新版本为“版本2”,1991年发布。GNU宽通用公共许可证(Library General Public License,简称LGPL)是由GPL衍生出的许可证,被用于某些GNU程序库。GPL授予程序接受人如下权利,或称“自由:以任何目的运营此程序的自由;以学习程序工作机理为目的,对程序进行修改的自由(能得到源代码是前提);再发行复制件的自由;改善此程序,并公开发布改善的自由(能得到源代码是前提)。)它提供了基本的EJB容器以及J2EE服务。在J2EE应用服务器领域,Jboss是发展最为迅速的应用服务器。(应用服务器又称为“应用服务器软件平台”,是现代软件的基本设施,是最为重要的一类中间件。应用服务器可以把不同的应用软件作为构件整合到一种协同 工作的环境里,并为应用提供了名字、事务、安全、消息、数据访问等服务,此外它还提供应用构件的开发、部署、运营及管理功能。近年来,应用服务器产业的发展呈现百家争鸣的大好形势。不仅国外出名厂商IBM(WebSphere)、BEA(WebLogic Server)、Oracle(IAS)等纷纷推出了自己的应用服务器,并且随着国内市场需求的扩大,中国中间件厂商也已经开始涉足应用服务器领域并形成了有竞争力的产品。目前,国内的J2EE应用服务器产品重要有中创软件的InforWeb应 用服务器、金蝶软件的Apusic应用服务器、东方通科技的TongWeb应用服务器。虽然略晚几年,但从技术上讲,中国的J2EE应用服务器事实上已经可以与国外主流产品一争高下。)为什么诞生?JBoss Group开办人兼总裁Marc Fleuryy原是个SUN 的Java软件工程师,闲暇之余,她突发奇想何不运用J2EE规格来写一套开放源代码应用服务器?(:Java 2 Platform,Enterprise Edition。是一套全然不同于老式应用开发的技术架构,涉及许多组件,重要可简化且规范应用系统的开发与部署,进而提高可移植性、安全与再用价值。 J2EE核心是一组技术规范与指南,其中所涉及的各类组件、服务架构及技术层次,均有共通的原则及规格,让多种依循J2EE架构的不同平台之间,存在良好的兼容性,解决过去公司后端使用的信息产品彼此之间无法兼容,导致公司内部或外部难以互通的窘境。) (Spring是一种J2EE FrameWork,Jboss是一种J2EE应用服务器)JBoss是开放源代码组织,但是负责开发JBoss产品的JBoss组织是一种商业组织,通过提供JBoss服务来获得利润。JBoss组织的服务项目涉及技术培训、技术支持、征询顾问、市场合伙等。年4月7日JBoss Group被RedHat以3.5亿美元收购。JBoss 服务器架构概述 JBoss的构架和其她J2EE应用服务器的构架有着巨大的不同。JBoss的模块架构是建立在JMX底层上的,下图呈现了JBoss重要组件和JMX的联系。 3.1 JMX是什么 JMX 是Java Management Extension 的缩写,是java下的资源管理规范。泛指的资源可以代表任何对象和事务,如网络,设备,应用程序。通过jmx,可以在程序运营期变化资源的配备和状态,启动或者停止服务。相应着javabean,就是调用setter设立新的属性值,调用bean上的 措施完毕某些功能。例如关闭本来的数据库连接,设立一种新的数据库url,然后启动新的数据库连接,这些都是运营期的作,不需要停止服务器。固然,完全可以自己编码,实现对bean配备的管理。 3.2 JBoss重要模块1. JBoss EJB容器是JBoss服务器的核心实现。它有两个特性,第一是在运营期产生EJB 对象的Stub和Skeleton类,第二是支持热部署。(EJB容器:提供应运营在其中的组件EJB多种管理功能。只要满足J2EE规范的EJB放入该容器,立即就会被容器进行高效率的管理。并且可以通过现成的接口来获得系统级别的服务。例如邮件服务、事务管理等)(“热”部署的意思就是在部署BEAN只是简朴拷贝BEAN的JAR文献到部署途径下,如果BEAN已经被LOAD,JBOSS卸载它,然后LOAD一种新版本BEAN。)2. JBossTX 是由JTA/JTS支持的事务管理控制。(JTA Java Transaction API,JTA 是事务服务的 J2EE 解决方案。本质上,它描述了某些有关事务的接口,开发人员直接使用该接口或者通过 J2EE 容器使用该接口来保证业务逻辑可以可靠地运营。开发人员可以全神贯注于她们的应用程序的业务逻辑,同步由 J2EE 容器来负责事务逻辑。JTA 运营在 Java Transaction Service(JTS) 之上,JTS 解决输入和输出事务发送的祈求。JTS 是一种由 CORBA 定义的对象事务服务(OTS)的 Java 实现。CORBA (Common Object Request Broker Architecture):公共对象祈求代理构造)是一系列定义分布式操作系统的原则,是OMG定义的一套与语言无关的分布式对象互换原则框架。)3. 部署服务支持EJB(jar)、Web应用文档(war)和公司级应用文档(ears)的部署。它会时刻关怀J2EE应用的URL状况,一旦它们被变化或浮现的时候将自动部署。4. JBossNS是JBoss命名服务用来定位对象和资源。它实现了JNDI J2EE规范。(JNDI:Java Naming and Directory Interface。由于J2EE应用程序组件一般分布在不同的机器上,因此需要一种机制以便于组件客户使用者查找和引用组件及资源。在J2EE体系中,使用JNDI (Java Naming and Directory Interface)定位多种对象,这些对象涉及EJB、数据库驱动、JDBC数据源及消息连接等。JNDI API为应用程序提供了一种统一的接口来完毕原则的目录操作,如通过对象属性来查找和定位该对象。)(参见此外的文档阐明)5. Web服务器支持Web容器和Servlet引擎。JBoss 2.4.x版本支持Tomcat 4.0.1,Tomcat 3.23和Jetty 3.x服务。(JBOSS不涉及serverlers/JSP page 的WEB容器,固然可以和Tomcat或Jetty绑定使用)6. JBossCX实现了部分JCA的功能。JCA制定了J2EE应用组件如何访问基于连接的资源。(JCA(J2EE Connector Architecture)是J2EE体系架构的一部分,为开发人员提供了一套连接多种公司信息系统(EIS,涉及ERP、SCM、CRM等)的体系架构,对于EIS开发商而言,它们只需要开发一套基于JCA的EIS连接适配器,开发人员就可以在任何的J2EE应用服务器中连接并使用它。基于JCA的连 接适配器的实现,需要波及J2EE中的事务管理、安全管理及连接管理等服务组件。)7. JBossSX支持基于JAAS的或不支持JAAS机制的安全实现。(JAAS(Java Authentication and Authorization Service)实现了一种Java版本的原则Pluggable Authentication Module(PAM)的框架。JAAS可用来进行顾客身份的鉴定,从而可以可靠并安全地拟定谁在执行Java代码。同步JAAS还能通过对顾客进行授权,实现基于顾客的访问控制)8. JBossMQ使Java 消息规范(JMS)的实现。(JMS:Java Message Service。在不同系统之间互换信息的一大障碍是如何在精确互换和格式化数据方面获得一致。JMS通过提供一种与J2EE应用程序或老式系统交互的措施部分的解决了这个问题。)3.3 JBoss重要模块间时怎么工作的4 Jboss的获得 Jboss可以到官方网站上直接下载。目前最高版本是5.0Beta1。5 Jboss的目录构造 一方面下载到Jboss的程序包。(本文档是在Windows中进行开发,则相应下载ZIP文献即可)由于Jboss5.0版本还处在测试阶段,因此我们下载了比较稳定的前一种版本4.2。解压到指定的目录中。解压后,就可以看到,在Jboss的目录下有如下的子目录为了完毕程序编译,更新配备或者部署应用等,开发者应当理解Jboss中各个文献的寄存位置。目录描述binJboss附带的启动脚本,以windows为例,是run.bat和shutdonw.bat脚本。client客户端所需要的jar文献都放在该目录中。一般状况下,客户端一般需要如下几种jar文献:jbossall-client.jarconcurrent.jarlog4j.jarserverJboss服务配备集合位于server服务下。默认的服务器配备为server/default。默认提供了三个服务器实例,分别是all、default和minimal,其中all提供了JBOSS的所有扩展组件(涉及嵌入一种TOMCAT Web容器),default提供了JBOSS大部分的组件组件,而minimal则不提供任何扩展组件。lib涉及了Jboss启动、或开发时的jar文献,开发者不要再该目录中寄存任何文献。docs放置jboss的例子、测试脚本和多种脚本配备文献的DTD(Documnet Type Definition, DTD 是一种保证XML文档格式对的的有效措施,可以通过比较XML文档和DTD文献来看文档与否符合规范,元素和标签使用与否对的。)Server目录下默认启动的服务器实例default的文献构造阐明。目录描述conf寄存了bootstrap的配备描述符(默认是jboss-service.xml),服务器配备等。lib是bootstrap部署描述符指定的默认位置。deploy用于寻找动态部属的位置。当JBoss服务器没有启动的时候,仅存在以上三条目录。但在实际服务器在运营时,还会创立和用到某些目录。目录描述data为需要在文献系统中寄存数据的应用提供服务log日记服务默认将该服务作为寄存日记文献的途径tmp寄存诸如为打包的分布文献等临时文献。work寄存的是JSP编译后的.java及.class文献,如果调试JSP时出错了,可以到该目录下去找相应的文献,调试问题。有时我们明明把一种JSP更新到相应的目录里了,可是去刷新页面时,内容还是旧的,为理解决该问题,我们可以到work目录下,将相应的.java及.class文献删了,再刷新即可。6. Jboss的简朴部署 6.1 JAR,WAR,EAR文献阐明一方面阐明EAR(EnterpriseARchive),WAR(WebApplictionaRrchive),JAR(Java ARchive)文献及其作用。 JAR:顾客可将多种 Java applet 及其所需组件(.class 文献、图像和声音)绑定到 JAR 文献中,而后作为单个的简朴 HTTP事务下载到浏览器中,从而大大提高下载速度。JAR 格式也支持压缩,从而减小了文献的大小,进一步缩短下载时间。或者中间件开发者,可以将产品打包成一种JAR文献来发布。 WAR:一种WAR文献涉及一种Web应用。 EAR:一种J2EE应用以及它的所有模块被提交到一种EAR文献中。 一种EAR文献就是一种具有.ear扩展名的原则的Java Archive (JAR)文献。EAR文献可以涉及多种Web应用,EAR文献中的每个Web应用必须有一种唯一的部署上下文。EAR文献的部署机制容许指定此类不同的上下文。SUN的网站上有有关EAR文献的阐明: 这三种文献之间的关系如下图所示:EAROther filesWARWARJARsJSPsSource filesservletsstatic pages 6.2 Jboss对这些文献的应用 将EAR或WAR拷贝到deploy目录下,即可。如果EAR或WAR配备对的,则在Jboss启动时,就可以自动发布了。对于一种WEB程序究竟应当打包成EAR,还是WAR,则根据具体的需求和应用程序的规模来决定。 但是开发过程中,往往不需要频繁地打包发布,可以采用此外一种方式:将要在deploy目录下发布的WEB应用程序,则可创立文献目录,并将目录的命名为xxx.ear或$xxx.war。(如果创立了xxx.ear目录,则在该目录下,根据需要,还可创立若干不同的 _&+gn$xxx.war目录名,用于封装 Web 模块。)Jboss在启动时,可以找到并且发布它们,这样对于开发过程中的热部署也提供了很大的便利。 这次以Exp项目,就采用了在ear目录下创立war目录的措施,对我们开发者来说,热部署给我们带来了很大的便利。Exp1.earExp1.war 7.从一种现成的Jboss应用开始 7.1 Jboss的基本配备 直接解压从官方网站上下载到的Jboss压缩包,在其bin目录下,直接执行run.bat即可启动Jboss。这之前,应当保证安装了JDK,并且Jboss的版本与JDK的版本相匹配。(由于,高版本的Jboss须相应高版本的JDK来支持) 若此时要关闭,则Ctrl + C即可。 Jboss启动成功后,可以在本地浏览器中输入http:/localhost:8080,浮现Jboss的界面,则阐明启动成功。 7.2 启动ThaiExportor应用(我们人们的劳动成果)将exp1.ear拷贝至默认发布目录(serverdefaultdeploy)下;配备应用的数据库连接。数据源配备文献的途径,$JBOSS-HOME/server/default/deploy,文献格式必须是*-ds.xml的样式。不同的数据库配备参数可参照$JBOSS-HOME/docs/examples/jca/下的示例文档。JBoss使用的默认数据库是纯Java数据库Hypersonic。这个数据库的配备信息位于hsqldb-ds.xml文献中。这个XML配备文献描述了如何连接到Hypersonic数据库。Exp1-ds.xml的位置和内容如下: 7.3 启动Jboss,即可启动ThaiExportor应用。8. Jboss 和 Eclipse的配备Jboss在Eclipse的配备,一般措施有:运用Lomboz插件、直接采用Jboss Eclipse IDE、或者在Eclipse中安装Jboss插件。8.1 Lomboz 插件Lomboz是Eclipse的一种重要的开源插件(open-source plug-in),Lomboz插件可以使Java开发者更好的使用Eclipse去创立,调试和部署一种100%基于J2EE的Java应用服务器。 Lomboz的功能比较多,比较显眼的功能是Wizard功能,和支持JSP调试。目前,NSF没有采用这个插件。8.2 Jboss Eclipse IDEJBoss Eclipse IDE还是Eclipse IDE。JBoss Eclipse IDE的浮现是为了以便开发和发布 基于Jboss Server的J2EE应用。 在Jboss网站,可如下载。 将下载到压缩文献进行解压,即得到了Jboss Eclipse IDE。 8.2.1 Jboss Eclipse IDE 中Jboss的配备 显示Server Navigator窗口。 在Server Navigator窗口中单击鼠标右键,配备一种新的Server。选择Jboss的寄存目录配备完毕后,即可在Eclipse中启动Jboss。 8.3 安装Jboss的Eclipse插件 从Jboss网站上下载JBossIDE-x.x.x.GA-ALL.zip(x代表的是版本号),解压,得到features和plugins文献夹,将其内的文献拷贝到Eclipse相应的文献夹中,即安装成功。 然后,重新启动Eclipse。此时配备Jboss的过程与9.2所述一致。9 运用Jboss来进行开发 建立工程的目录构造比较灵活,一般根据工程的实际状况来建立工程的目录构造,不同的工程可以有不同的目录构造。 有某些比较通用的组织形式可供参照,例如所有的jakarta项目都使用类似的目录构造。目录 文献 bin 公共的二进制文献,以及运营脚本 build 临时创立的文献,如类文献等 dist 目的输出文献,如生成Jar文献等。 doc/javadocs 文档。 lib 需要导出的Java包 src 源文献 固然在这样的目录构造上,也可以做某些调节,例如,可以建立一种extra目录来放置需要发布的Jar文献、Inf文献及图像文献等。同样,如果开发Web应用可以建立一种Web目录放置JSP、HTML等文献。此时,发布时要采用Ant工具,将相应的资源打包成ear文献,或者war文献。 但是,如果我们要运用热部署在deploy目录下创立XXX.ear文献夹,则要按照ear的目录构造来来寄存工程中的资源。 如下我们就创立一种例子。 Step 1: 创立工程在deploy目录下创立JbossStudy.ear文献夹打开Eclipse,在JbossStudy.ear目录中创立工程。变化工程途径至JbossStudy.ear目录Step 2: 在工程中创立如下图所示的ear目录构造为什么要创立META-INF目录? 涉及ear文献的meta信息(data翻译成中文是“元数据”,重要是指基本的核心数据。),这样的目录在Jar,War,Ear文献中都要建立。META-INF目录中的application.xml是做什么的? Ear文献发布时的必需的描述文献之一。其中重要涉及icons,description,web application module,ecurity role names等的描述。如下是一种例子:/small.gif/large.jpgmy-display-nameApplication description/alt-descriptors/myejb-altdd.xml/ this sub-element can apply to any module typemyejb.jarmyappclient.jarmyresourceadapter.rarmywebapp.warhelloworldJust the Matts / overrides the description of the same role-name in a moduleMatt与上述描述文献相相应的文献的寄存途径:/META-INF/MANIFEST.MF/META-INF/application.xml/META-INF/sun-application.xml/alt-descriptors/myejb-altdd.xml/small.gif/large.jpg/mywebapp.war/myejb.jar/myresourceadapter.rar/myappclient.jar在META-INF中除了application.xml,尚有一种MANIFEST.MF文献(manifest:载货单)。这个文献用来指定classpath。如果web应用没有运用WEB-INF/lib,则需要在MANIFEST.MF中指定jar文献的途径。如在MANIFEST.MF文献中:Class-Path: acme/beans.jar myclasses.jar 在这个例子中,在Application 中写入如下的配备信息:my-display-nameApplication description mywebapp.war /HelloWorld 并且在src下,编写一种简朴的Servlet:package jbossForstExercise;import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HolleWorld extends HttpServlet public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException,ServletException response.setContentType(text/html); PrintWriter out = response.getWriter(); out.println(); out.println(This is my first Servlet); out.println(); out.println(Hello,World!); out.println(); Step 3: 在工程中创立如下图所示的war目录构造 在war文献中,JSP文献,HTML文献,保存在顶级目录(在我们做过的两个项目中,其实并没有将JSP放在顶级目录,而是放在了以业务分类的各个自目录中。其实,随着业务复杂限度的提高,JSP的途径也许更加繁杂。如何让这些JSP之间有条不紊地互相调用?在提交.do的祈求时(还记得那个MENU表吗?),加入JSP的途径即可。.do是一种servlet的映射,即.do的祈求都交给servlet来解决。Web.xml中有这样的配备语句: action *.do 意思是,.do的祈求都交给叫action的servlet解决。action根据.do前面东东的不同,在转交给相应的Action类。如/exp1/dl/dl002/EXP1DL002S1Init.do就会映射到/exp1/dl/dl002/EXP1DL002S1Init的Action,此Action就是各自业务struts-config.xml中定义的Action.);Servlet和有关的文献保存在WEB-INF/classes目录中;运营所需的JAR文献保存在WEB-INF/lib中;发布的配备文献Web.xml寄存在WEB-INF目录中。(注意:目录名一定要注意大小写)固然,根据业务的繁简限度,不是每个文献夹都是需要的。Step 4: 编译程序,将生成的class文拷贝到war的WEB-INF/classes目录中。启动Jboss,打开浏览器,即可看到成果。Step 5:编写简朴的HTML文献在war中。 Hello, World! Hello, my friends! 打开,浏览器,也可以访问到。Step 5:编写简朴的JSP文献在war中。在浏览器中输入http:/localhost:8080/HelloWorld/FirstJSP.jsp
展开阅读全文