tomcat下发布自己的WEB项目



Tomcat和jboss 热部署调试Web应用,不重启Server

常用的web服务器一般为tomcat和jboss,现一一做介绍。
         1.tomcat热部署
                  在 tomcat中支持热部署有两种方式(在原理上来说,这两种方式是一致的,只是放的位置不同)
                 a)在 catalina_base/conf/catalina/localhost/中依照manager.xml定义一个xml文件,比如我的项目称作 sodoperation,我们就可以写一个sodoperation.xml,内容如下:
           <context path="/sodoperation"  docBase="d:/myportal/sodoperation/src/webapp"/>
            其中,path指的是你在tomcat中的项目名称,就像manager一样,docBase是指你的项目所在的web目录。一直到欢迎页面为止(也就是 web-inf的前一个目录)。但是一般来说,这个目录中最好不要有中文,如果有的话,可以在文件开始加入
            <?xml version='1.0" encoding='utf-8' ?>来试一下,即整个文件变为:
             <?xml version='1.0" encoding='utf-8' ?>
            <context path="/sodoperation"  docBase="d:/myportal/sodoperation/src/webapp"/>
           这样就可以了,如果用这种广告,同时使用myeclipse的部署的话,轻易不要remove,这样会使文件都会被删掉,不能持久。所以,建议使用第二种方法。
              b)第二种方法和第一种方法在原理上是一致的,其区别就是位置的不同,这次在catalina_base/conf下的server.xml,在文件末加入:
      <context path="/sodoperation"  docBase="d:/myportal/sodoperation/src/webapp"/>

<Context   path="/oa"  docBase="D:/workspace/firstoa/webapp"  debug="0"reloadable="false">
reloadable="false"这个菜是关键!要么不用写这个参数,要么设为false 

    解释和上面一样,这种方法在启动tomcat后,会在catalina_base/conf/catalina/localhost/中加入一个与第一种方法的文件。这样保证,只要对 server.xml不做修改,你可以随便对新生成的文件删除,对热部署没有任何问题。

例如:

 <Host appBase="webapps" autoDeploy="true" name="localhost"
    unpackWARs="true" xmlNamespaceAware="false" xmlValidation="false">

    <!-- SingleSignOn valve, share authentication between web applications
     Documentation at: /docs/config/valve.html -->
    <!--
     <Valve className="org.apache.catalina.authenticator.SingleSignOn" />
    -->

    <!-- Access log processes all example.
     Documentation at: /docs/config/valve.html -->
    <!--
     <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" 
     prefix="localhost_access_log." suffix=".txt" pattern="common" resolveHosts="false"/>
    -->
    <Context docBase="D:/work/work/WebContent"
     path="/app1">
    </Context>

   </Host>

2.jboss热部署
     在 jboss中做热部署也有两种方法,因为jobss集成了tomcat,也可以说这两种方法是在jobss上的一个修改。
     a)修改jboss-4.0.4RC1/server/default/deploy/jbossweb-tomcat55.sar/context.xml 
      <Context cookies="true" crossContext="true"antiResourceLocking="true" antiJARLocking="true">
         <Manager pathname=""/>
         <InstanceListener>org.jboss.web.tomcat.security.RunAsListener</InstanceListener>
        </Context>
   加上红色的部分,重启jboss,再用myeclipse Redeploy project的时候就不需要重启,部署完了直接开浏览器预览啦


************************************************************************

找到%tomcathome%\conf\server.xml文件,在<host>标签中加入:

<Context path="/虚拟目录名" docBase="本地路径" debug="0"
reloadable="true" crossContext="true">
</Context>
这样将你的jsp文件放到"本地路径"下,然后在浏览器中输入http://127.0.0.1:8080/虚拟目录名/xxx.jsp即可执行.
注意!!!还没有完!!这时候你的这个虚拟目录还没有执行servlet的能力(当然如果你不用servlet那就令当别论了).
下面是一个范例:

<Context path="/bbs" docBase="work" debug="0"
reloadable="true" crossContext="true">
</Context>
你要建一个名叫work的目录在webapps\下
要使这个work目录可以执行servlet,要有一个配置文件--web.xml,内容为:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>MyWEB</display-name>
<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
</web-app>

这个使最小配置,仅仅是指明servlet的位置.要把这个文件放到webapps\work\WEB-INF\下,你自己的servlet放到webapps\work\WEB-INF\classes\下.

**********************************************************************************************

tomcat部署工程有很多种:


1、最常用的方法是在开发阶段通过Myeclipse直接部署,然后可以进行调试等操作。


2、把工程目录下的WebRoot目录直接复制到tomcat目录webapps中。


3、把工程打包成war包直接复制到tomcat目录webapps中。


4、使用context节点配置工程路径:


1、将工程打包成war之后,在server.xml配置context节点。


 


Xml代码   收藏代码
  1. <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">  
  2.       <Context path="/demo" docBase="E:\demo.war" reloadable="false" privileged="true" debug="0"/>   
  3. </Host>  


 


  


 注意的是:path不能为空,因为有时可能不需要输入工程名或者path配置的访问路径来访问我们的站点(http://127.0.0.1:8080/),就把path设置为空,但是war包是需要解压到tomcat目录webapps中,如果path为空,tomcat就不知道压缩包解压之后应该取一个什么样的文件夹名,所以部署不成功。


 


2、直接将context节点中的docBase属性指向工程目录的WebRoot目录(或者是解压war包之后的文件夹目录,如果不想通过项目名访问就不要将解压文件夹放在webapps目录下)


 


Xml代码   收藏代码
  1. <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false">   
  2.     <Context path="" docBase="E:\demo\WebRoot" reloadable="false" privileged="true" debug="0"/>   
  3. </Host>   


 


  


 path可以为空也可以设置一个访问路径,如:/demo。如果只想通过IP来访问,就把端口设置为80,把path设置为空。


 


这里要注意的是:在工程中lib目录中的jar包应该全部放在lib目录下,不要在lib目录下建文件夹并且把jar放到文件夹中,这样做在tomcat启动的时候(如果在web.xml中配置了监听器,而监听器的jar包在lib目录下的文件夹中)就会抛出java.lang.ClassNotFoundException,如果没有配置日志,直接启动tomcat,就只会显示严重错误:Error listenerStart与Context [] startup failed due to previous errors。(通过MyEclipse部署项目与通过war包部署项目,当工程部署成功之后,去看webapps中部署的工程中的lib目录,会发现,所有原本被放在自己建的文件夹中的jar包,现在全部放到了lib目录下)


 


3、很灵活,在conf目录中,新建 Catalina\localhost目录,在该目录中新建一个xml文件,名字可以随意取,与path后的那个名字也可以不一致,但是访问的时候,必须是xml文件的名字。如:xml文件名为demo,path的名称为hello,那么访问的时候为:http://localhost:8080/demo/,如果为http://localhost:8080/hello/就会出现404错误。(红色部分自己改的,原文地址:http://laotu5i0.iteye.com/blog/577204)


Xml代码   收藏代码
  1. <Context path="/hello" docBase="E:\workspace\hello\WebRoot" debug="0" privileged="true">   
  2. </Context>   


 


 
5、下面一个内容以前用过,但是忘了,在找问题解决办法时候找到了,这里记录下:


 


原文地址:http://daidalei321.iteye.com/blog/966228


修改操作系统的hosts文件


按照路径C:\windows\system32\drivers\etc找到hosts文件


添加:  127.0.0.1       www.dai.com


请注意:“127.0.0.1 ”为本地回环地址,“www.dai.com”为自定义域名(你可以自行定义)。


 


如果在其他电脑访问该项目也想使用该自定义域名,在其hosts文件中


添加: 所要访问服务器的ip      www.dai.com  即可。



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值