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. [转]MySQL单列索引和组合索引的区别介绍

    FROM : http://database.ctocio.com.cn/353/11664853.shtml MySQL单列索引是我们使用MySQL数据库中经常会见到的,MySQL单列索引和组合索引 ...

  2. [已解决]下载chromium源码 download_from_google_storage 无法下载文件

    当使用 gclient runhooks 后 出现下面的错误 File gs://chromium-gn/1088992877b3a13f25b61c8fc18e25296d8cab33 for sr ...

  3. HDU1208:Pascal's Travels(DP)

    Problem Description An n x n game board is populated with integers, one nonnegative integer per squa ...

  4. 如何使用.net访问Access数据库 (转)

    前言:今天整理程序,看到之前写的一个Demo,也不知道是从哪里参考的了,写到这里,留作备用吧. 使用.net访问Access数据库:1.BL层:新增一个DataAccess类. Code].Defau ...

  5. [Math]理解卡尔曼滤波器 (Understanding Kalman Filter)

    1. 卡尔曼滤波器介绍 卡尔曼滤波器的介绍, 见 Wiki 这篇文章主要是翻译了 Understanding the Basis of the Kalman Filter Via a Simple a ...

  6. ARM 汇编的mov操作立即数的疑问

    1. 因为对arm汇编有些指令还不能理解,特别是一些相似功能指令间的区别.偶然在网上搜到"faq ARM assembly",其中描述的几个问题还是值得好好研究一下. 2. 慢慢的 ...

  7. Redis集群搭建最佳实践

    要搭建Redis集群.首先得考虑以下的几个问题; Redis集群搭建的目的是什么?或者说为什么要搭建Redis集群? Redis集群搭建的目的事实上也就是集群搭建的目的.全部的集群主要都是为了解决一个 ...

  8. Java集合遍历时删除

    public static void main(String[] args){ List<Integer> list = new ArrayList<Integer>(); l ...

  9. 一个WEB应用的开发流程

    转载:http://www.51testing.com/html/56/n-3721856.html 先说项目开发过程中团队人员的分工协作. 一.人员安排 毕业至今的大部分项目都是独立完成,虽然也有和 ...

  10. 面试总结——Java高级工程师(三)

    https://blog.csdn.net/moneyshi/article/details/53086927