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

JBoss和Tomcat部署方式的区别(解释暴露式部署)
本来想写"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和Tomcat部署方式的差别(解释暴露式部署)
  • 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。


基本就是这样,接下来会放出Eclipse WTP插件run on JBoss的一个帖子。