JBoss和tomcat的区别

注意JBoss和tomcat是不一样,JBoss是一个可伸缩的服务器平台,当你的EJB程序编制完成后,如果访问量增加,只要通过增加服务器硬件就可以实现多台服务器同时运算,提高了负载容量,这个性能容量理论上是没有限制的,理论上无最大支持在线人数的上限,对于JBoss/EJB这样的平台来说,无最大访问量限制一说。

这是JBoss/EJB不同于Spring /Tomcat等平台的最大优点所在,而且EJB 3.0也将出现轻量化解决方案,其实随着发展,已经模糊了轻量/重量的区别,如果还是以轻量/重量作为架构选择的标准,无疑是不明智的。

可伸缩性应该是架构选择的主要标准,所谓可伸缩性,只在小型系统、一台服务器情况下,我的系统也可以良好运转,多台服务器扩展后,我的系统只需通过增加硬件就可以实现性能扩展,无需修改太多软件。

JBoss和Tomcat部署方式的区别(解释暴露式部署)

转自:http://wwwcomy.iteye.com/blog/2106246

本来想写"Eclipse Juno(j2ee)开发环境下JBoss热部署的实现方式(暴露式部署,WTP)"

但是内容貌似有点多,写在一个贴子里太罗嗦了,单独拎一个出来记录一下基础知识。

之前的开发一直使用Tomcat作为servlet容器,最近公司的项目需要EJB容器,所以不得不看一下JBoss的部署方式。

以下所说的JBoss都是5.10GA版本,免费的嘛,谁用谁知道。

其实每个人都有自己习惯的调试方式,有的人喜欢搞完代码ant打个包放到server下远程调试,有的喜欢直接在IDE(比如Eclipse)下
直接debug on server调试。 我更倾向于后者,因为现在的项目往往都比较大,打个包要好久,直接debug on
server会更方便一些。

首先普及一下JBoss和Tomcat的部署方式区别

1. 沉思。。。 其实没什么特别大的区别=。=,毕竟JBoss使用了Tomcat的很多特性嘛(甚至很多代码,servlet处理这一块应该都是Tomcat的东西)

2. Tomcat的部署方式:

  • 打成war包放到webapps下
  • 直接把符合J2EE规范的目录(其实就是war包解压出来的目录)放到webapps下
  • 在server.xml里面配置context自定义webapp的加载目录
  • 在%Tomcat_Home%\conf\Catalina\localhost下添加一个xml用来定义webapp目录(之前开发我就是用的这种方式,很快很舒坦,用的Tomcatplugin)

3.JBoss的部署方式:

    • 打成war/ear包放到%JBOSS_HOME%/server/default/deploy下
    • 直接把符合J2EE规范的目录(其实就是war包解压出来的目录)放到webapps下,这里要注意一点,这个目录的名字要做一下修
      改:比如你的项目叫
      "webproject",那么你的解压之后目录应该改名成webproject.war(我把war去掉就访问不了了,至于原因我也没查),注意这个不是文件,是个目录,他下面会有WEB-INF目录。而这种直接部署目录的方式,就叫做暴露式部署Exploded Deployment,见链接
    • 放个截图:

    • JBoss不支持修改server.xml添加context的方式自定义webapp路径。这个算待讨论吧,反正我加了个context节点然后JBoss就起不来的,尽管网上有这种添加的说法。
    • JBoss自定义webapp部署路径的方式可以详见JBoss_Enterprise_Application_Platform-5-Getting_Started_Guide-en-US.pdf,chapter6,section2。 我就不细说了,下载地址google吧,redhat官网就有。
    • JBoss应该还支持在启动时候加参数的方式指定webapp目录,据说WTP插件启动时候就是这么干的,但是这点我没有确认过,而且看了下WTP的行为好像不是这么干的,有需要的可以自行google。
      如果对部署方式有疑问,请先看这个帖子:
      JBoss和Tomcat部署方式的区别(解释暴露式部署)

      我们说一下Eclipse J2ee版本(下个WTP插件也行)自带的run on server功能,支持好多webserver,但是jboss只支持到5了,原因你懂的。接下来我们就看一下如何使用。

      1. Window-preferences-Server-Runtime Environment-Add-Jboss-选择ApplicationServer的Home即可添加一个Server。

      2.新创建一个Dynamic Web Project,注意Dynamic web module version选2.5(5.10应该支持不了3.0)。

      3.在WebContent下面写个index.html,然后在工程右键,run as-run on server,选择你刚才创建的JBoss,finish。然后就可以访问了。

      接下来是贴题的内容了:

      Eclipse的这个功能实际上是把项目打成war放到了JBoss的deploy目录下面,当我们在eclipse里面修改文件的时候,如果仔细观察console的话,会发现有类似以下的内容会闪着出现:

      1. Buildfile: C:\eclipse\plugins\org.eclipse.jst.server.generic.jboss_1.6.1.v200904151730\buildfiles\jboss323.xml

      这个目录可能和WTP或者eclipse版本有关,具体请自查。我们来看一下jboss323.xml,发现实际上是个ant脚本。以下内容

      1. <target name="deploy.j2ee.web">
      2. <jar compress="false" destfile="${project.working.dir}/${module.name}.war">
      3. <zipfileset dir="${module.dir}">
      4. <include name="**/*.*"/>
      5. <exclude name="**/*.war"/>
      6. </zipfileset>
      7. </jar>
      8. <move file="${project.working.dir}/${module.name}.war" todir="${server.publish.dir}"/>
      9. <sleep seconds="${pause.deploy}"/>
      10. </target>

      描述了web项目发布时候的动作,先把整个项目打成war包,然后把他复制到了JBoss server的publish路径,这个路径我看了下应该是%JBOSS_HOME%\server\default\deploy。

      现在的问题是,每次修改完,他都要重新去做jar操作来打包,当项目比较大的时候这个操作是很耗时的,所以我们现在使用暴露式部署的方式进行部署,因为修改的文件少的时候,ant会检查文件的修改时间,没修改的文件是不会复制的:

      1. 把上面那段xml修改为

      1. <target name="deploy.j2ee.web">
      2. <property name="deploy.dir" location="${server.publish.dir}/${module.name}.war" />
      3. <mkdir dir="${deploy.dir}" />
      4. <copy todir="${deploy.dir}">
      5. <fileset dir="${module.dir}">
      6. <include name="**/*.*"/>
      7. <exclude name="**/*.war"/>
      8. <exclude name="**/web.xml"/>
      9. </fileset>
      10. </copy>
      11. <copy todir="${deploy.dir}" overwrite="true">
      12. <fileset dir="${module.dir}">
      13. <include name="**/web.xml"/>
      14. </fileset>
      15. </copy>
      16. <sleep seconds="${pause.deploy}"/>
      17. </target>

      2.找到undeploy.j2ee.web这个target,这个是如果undeploy进行的动作,修改为:

      1. <target name="undeploy.j2ee.web">
      2. <!--<delete file="${server.publish.dir}/${module.name}.war" failonerror="false"> </delete>-->
      3. <delete dir="${server.publish.dir}/${module.name}.war" failonerror="false"> </delete>
      4. <sleep seconds="${pause.undeploy}"/>
      5. </target>

      解释:

      • deploy.j2ee.web这个target修改为先根据项目名称在jboss的deploy里面创建一个 项目名称.war的目录,然后把eclipse工程下的所有文件,除了war和web.xml,都拷贝到那个新创建的目录下。
      • 接下来,单独拷贝web.xml。单独拷贝的原因在于,我试了一下修改一个servlet类,发现已经同步过去了,但是JBoss并没有去重新部署他,但是修改一个静态html或者jsp都会即时生效,找了好半天资料,在链接发现,如果以暴露式部署的话,必须要修改web.xml,JBoss才认为需要重新部署,所以单独复制了一下web.xml用来修改他的修改时间,这样JBoss就会重新部署了。
      • undeploy.j2ee.web就是为了把deploy里面创建的那个目录删掉。

      其实这样还是稍微有一点问题,毕竟还多了一个复制操作。先把公司项目跑起来看看效率行不行吧,如果不行的话,就要修改JBoss添加自定义的load路径了,去掉这个复制操作。

      参考资料:http://www.blogjava.net/brian/articles/315942.html这个没有处理web.xml

    •  

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

      JBoss7.1.0.CR1b官方下载地址:http://download.jboss.org/jbossas/7.1/jboss-as-7.1.0.CR1b/jboss-as-7.1.0.CR1b.zip

      JBoss7.0.2.Final官方下载地址:http://download.jboss.org/jbossas/7.0/jboss-as-7.0.2.Final/jboss-as-web-7.0.2.Final.zip

      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官方网站:http://www.jboss.org

      JBoss官方下载地址
      http://www.jboss.org/jbossas/downloads/

JBoss和tomcat的区别的更多相关文章

  1. 服务端技术进阶(二)JBoss和tomcat的区别

    JBoss和tomcat的区别 注意JBoss和tomcat是不一样,JBoss是一个可伸缩的服务器平台,当你的EJB程序编制完成后,如果访问量增加,只要通过增加服务器硬件就可以实现多台服务器同时运算 ...

  2. JBoss Web和Tomcat的区别

    在Web2.0的时代,基于Tomcat内核的JBoss在J2EE应用服务器领域已成为发展最为迅速的应用服务器.这一青出于蓝而胜于蓝的产品与Tomcat的区别又在哪里? 基于Tomcat内核,青胜于蓝. ...

  3. tomcat与jboss等容器的区别

    1.JBoss 是 J2EE 应用服务器,而 Tomcat 只是一个 Servlet 容器,或者说是一个简单的 J2EE 应用服务器. JBoss 中的 Servlet 容器还是 Tomcat. 与  ...

  4. 转 : JBoss Web和 Tomcat的区别

    JBoss Web和 Tomcat的区别 在Web2.0的浪潮中,各种页面技术和框架不断涌现,为服务器端的基础架构提出了更高的稳定性和可扩展性的要求.近年来,作为开源中间件的全 球领导者,JBoss在 ...

  5. 【转】JBoss Web和 Tomcat的区别

    转载于:http://www.verydemo.com/demo_c202_i780.html JBoss Web和 Tomcat的区别 在Web2.0的浪潮中,各种页面技术和框架不断涌现,为服务器端 ...

  6. jboss和tomcat有什么不同

    2.tomcat 是 JSP/Servlet 容器jboss 是 JEE 容器,JEE 包括JSP/Servlet,JMS, EJB,JAX-WS,JAX-RS,CDI等等, tomcat是完全开源, ...

  7. JBoss、Tomcat、JBoss EAP、JBoss AS、wildfly,JBoss EAP安装部署,JBoss各个版本下载,JBoss允许远程访问

    感谢: https://www.cnblogs.com/invlong/p/5983334.html https://blog.csdn.net/mooncarp/article/details/78 ...

  8. JBoss和Tomcat版本、及Servlet、JSP规范版本对应一览 【转】

    原文地址:http://blog.csdn.net/hills/article/details/40896357 JBoss和Tomcat版本.及Servlet.JSP规范版本对应一览 JBossAS ...

  9. Jetty与Tomcat的区别 转

    Jetty与Tomcat的区别 由于没有研究过Tomcat,所以区别不好说,这里暂时就网上的一些言论和自己所了解到的一些总结下(摘自于许令波). Jetty 的架构从前面的分析可知,它的所有组件都是基 ...

随机推荐

  1. probotuf 标量数值类型

    标量数值类型 一个标量消息字段可以含有一个如下的类型--该表格展示了定义于.proto文件中的类型,以及与之对应的.在自动生成的访问类中定义的类型: .proto类型 Java 类型 C++类型 备注 ...

  2. 图解 MongoDB 地理位置索引的实现原理(转)

    原文链接:图解 MongoDB 地理位置索引的实现原理 地理位置索引支持是MongoDB的一大亮点,这也是全球最流行的LBS服务foursquare 选择MongoDB的原因之一.我们知道,通常的数据 ...

  3. 泊松分布E(X^2)

    由于求期望实际就是求平均值,所以E(X^2)=E[X*X]=E[X*X]+E(X)-E(X)=E[X*X+X-X]=E[X(X-1)+X]E[X(X-1)+X]=E[X(X-1)]+E(X)即:和的平 ...

  4. 使用 GNU Libtool 创建库

    这篇文档向大家介绍 GNU Libtool 的用途及基本使用方法,同时描述如何结合 GNU Autoconf 和 Automake 来使用 Libtool. 3 评论: 吴 小虎, 程序员, 天用唯勤 ...

  5. SharePoint 2010/2013: List view Lookup threshold uncovered

    SharePoint with Large lists is common scenario in any Sharepoint deployment. While there are Several ...

  6. Authentication and Authorization in ASP.NET Web API

      You've created a web API, but now you want to control access to it. In this series of articles, we ...

  7. String escape/unescape into XML

    Is there any C# function which could be used to escape and un-escape a string, which could be used t ...

  8. 推荐一些socket工具,TCP、UDP调试、抓包工具

    还记得我在很久很久以前和大家推荐的Fiddler和Charles debugger么?他们都是HTTP的神器级调试工具,非常非常的好用.好工具能让你事半功倍,基本上,我是属于彻头彻尾的工具控. 假如有 ...

  9. 百科知识 英特尔处理器I5 4460和4590有哪些区别

    4460是855元   4590是880元   i5 4460与4590CPU主要区别在:1.主频差0.3GHz;;2.最大睿频相差0.5GHz;:3.核显(HD4600)最大动态频率相差0.1GHz ...

  10. OCIEnvCreate 失败,返回代码为 -1的解决方法

    错误描述 连接Oracle始终报这个错误: {System.Exception: OCIEnvCreate 失败,返回代码为 -1,但错误消息文本不可用 本机环境是oracle10g客户端,以前也连过 ...