• 在Tomcat中部署Java Web应用程序几种方式


    在Tomcat中部署Java Web应用程序有两种方式:静态部署和动态部署。在下文中$CATALINA_HOME指的是Tomcat根目录。 
    一、静态部署 
         静态部署指的是我们在服务器启动之前部署我们的程序,只有当服务器启动之后,我们的Web应用程序才能访问。以下3中方式都可以部署: 
        1、将PetWeb目录拷贝到$CATALINA_HOMEwebapps下,然后启动服务器就可以了。这种方式比较简单,但是web应用程序必须在webapps目录下。访问地址如下: 
    http://localhost:8080/PetWeb/ 
       2、这种方式可以不必将PetWeb目录拷贝到webapps下,直接在F:部署。方法如下,更改$CATALINA_HOMEconfserver.xml文件,在<host>标签内添加<Context>标签,内容如下: 
    <Context docBase="F:/PetWeb" reloadable="false" path="/Pet"/> 
    其中reloadable="false"表示当应用程序中的内容发生更改之后服务器不会自动加载,这个属性在开发阶段通常都设为true,方便开发,在发布阶段应该设置为false,提高应用程序的访问速度。docBase为路径,可以使用绝对路径,也可以使用相对路径,相对路径相对于webapps。path属性的值是访问时的根地址。访问地址如下:http://localhost:8080/Pet/ 
        3、这种方式和第二种方式差不多,但是不是在Server.xml文件中添加Context标签,而是在$CATALINA_HOMEconfCatalinalocalhost中添加一个xml文件,如Pet.xml,内容如下: 
    <Context docBase="F:/PetWeb" reloadable="false" />大家可能发现和第二种方式差不多,但是缺少了path属性,这种方式服务器会使用.xml的名字作为path属性的值。访问地址如下:http://localhost:8080/Pet/ 
        
        我们刚才是将PetWeb文件夹部署在了服务器中,我们知道可以将Web应用程序的内容打成.war包,然后在部署在服务器上。打包请参考如下步骤: 
        1、打开命令提示符(Start-->Run-->cmd) 
        2、设置jdk环境变量 
        3、在命令提示符中进入F:PetWeb文件后,键入如下命令: 
    jar ..Pet.war *.*  这样在F:下应该有Pet.war文件。其中..表示当前目录的父目录。 
         部署Pet.war文件非常简单,将刚才有docBase="F:PetWeb"更改为docBase="F:Pet.war"或者直接将其拷贝到webapps下也可以。重新启动服务器就可以将Pet.war部署为一个Web应用程序了。如果你够细心的话你会发现,服务器将Pet.war文件解开,并且在webapps下面又生成了一个Pet文件夹,然后把Pet.war的内容拷贝到里面去了。我们可以通过以下方式取消自动解压缩,配置方式如下: 
    <Context docBase="F:/PetWeb" reloadable="false" unpackWAR="false"/> 
    二、动态部署 
        动态部署是指可以在服务器启动之后部署web应用程序,而不用重新启动服务器。动态部署要用到服务器提供的manager.war文件,如果在$CATALINA_HOMEwebapps下没有该文件,你必须去重新下载tomcat,否则不能完成以下的功能。要想使用该管理程序必须首先编辑$CATALINA_HOMEconf omcat-users.xml文件, 
    上文且说到tomcat-users.xml文件,这个文件中的内容是不依赖于任何一个web应用程序,所以在任何一个web程序中都可以使用,如果这些用户和角色只对你的应用起作用,那么你完全可以放置在你自己的应用程序中,比如WEB-INF中.下面我们将上次加入到tomcat-users.xml文件中的内容,加入到我们在WEB-INF下新建的myUser.xml文件中,注意此文件应该是以<tomcat-users>为根目录,如下所示: 
    <tomcat-users> 
      <!--定义角色--> 
      <role rolename="suozhangshi"/> 
      <role rolename="guahaoshi"/> 
      <role rolename="danganshi"/> 
      <!--定义用户,并加入到角色中--> 
      <user username="gua1" password="gua1" roles="guahaoshi"/> 
      <user username="gua2" password="gua2" roles="guahaoshi"/> 
      <user username="dang1" password="dang1" roles="danganshi"/> 
      <user username="dang2" password="dang2" roles="danganshi"/> 
      <user username="suo1" password="suo1" roles="suozhangshi"/> 
      <user username="suo2" password="suo2" roles="suozhangshi"/> 
    </tomcat-users> 

        这个文件已经建立好了,那么怎么告诉Tomcat加载这个文件呢?我们通过下面这一种方式,在你的Web应用程序中的META-INF文件夹中加入Context.xml 文件,这样当此应用程序部署的时候,就会加载该文件的内容,内容如下: 
    <Context> 
      <Realm className="org.apache.catalina.realm.MemoryRealm" 
             pathname="webapps/SecurityWeb/WEB-INF/myUsers.xml" /> 
    </Context> 
        Realm标签中className属性定义了使用MemoryRealm类从pathname处加载xml文件。。还要注意这里的pathname它是以相对Tomcat根目录的,所以上文件路径应该从webapps开始。最后重新启动服务器再访问你程序,应该能够看到和上次相同的效果

  • 相关阅读:
    Linux关闭You have new mail in /var/spool/mail/root提示
    表单验证提交内容不能为空的几种方法
    CSS选择器的优先级
    SQL Server BCP 资料导入导出
    软考数据库-系统开发与软件工程
    软考数据库-无损联接分解
    软考数据库-数据结构
    反转字符串, 以单词反转句子
    数组中是否存在两数之和等于目标值
    栈 (Swift数组实现栈)
  • 原文地址:https://www.cnblogs.com/Y-S-X/p/6395416.html
Copyright © 2020-2023  润新知