在 Tomcat 中部署 Java Web 应用程序有两种形式:动态部署和动静部署。
在下文中 $CATALINA_HOME 指的是 Tomcat 根目录。
一、动态部署
动态部署:指的是咱们在服务器启动之前部署咱们的程序,只有当服务器启动之后,咱们的 Web 应用程序能力拜访。
以下 3 中形式都能够部署:
拷贝你的 WebProject 我的项目拷贝到 $CATALINA_HOME\webapps 下,而后启动服务器就能够了。
这种形式比较简单,然而 web 应用程序必须在 webapps 目录下。
拜访地址如:http://localhost:8080/ 我的项目名 /
这种形式能够不用将 WebProject 目录拷贝到 webapps 下,间接在任意地位部署,如部署在 F 盘。
办法如下,更改 $CATALINA_HOME\conf\server.xml 文件,在 <host> 标签内增加 <Context> 标签,内容如下:
<Context docBase=”F:/” reloadable=”false” path=”/WebProject”/>
docBase 是我的项目门路(能够应用绝对路径,也能够应用相对路径,相对路径绝对于 webapps)。
path 是项目名称(属性的值是拜访时的根地址,拜访地址如:http://localhost:8080/WebProj…)。
reloadable=“false”示意当应用程序中的内容产生更改之后服务器不会主动加载,这个属性在开发阶段通常都设为 true,不便开发,在公布阶段应该设置为 false,进步应用程序的访问速度。java 培训
这种形式和第二种形式差不多,然而不是在 server.xml 文件中增加 context 标签,
而是在 $CATALINA_HOME\conf\Catalina\localhost 中增加一个 xml 文件,
这种形式能够不用将 WebProject 目录拷贝到 webapps 下,间接在任意地位部署。
如果你的我的项目成名是:WebProject,那你的文件命名为:WebProject.xml。
当然也能够写成 ROOT.xml , 拜访时不写我的项目名能够间接拜访。
文件里一句话:
<Context docBase=”F:\WebProject” reloadable=”true”/>
大家可能发现和第二种形式差不多,然而短少了 path 属性,这种形式服务器会应用.xml 的名字作为 path 属性的值。拜访地址如:http://localhost:8080/WebProj…
docBase 是我的项目门路(能够应用绝对路径,也能够应用相对路径,相对路径绝对于 webapps)。
path 是项目名称(属性的值是拜访时的根地址,拜访地址如:http://localhost:8080/Pet/)。
reloadable=“false”示意当应用程序中的内容产生更改之后服务器不会主动加载,这个属性在开发阶段通常都设为 true,不便开发,在公布阶段应该设置为 false,进步应用程序的访问速度。
二、动静部署
动静部署是指能够在服务器启动之后部署 web 应用程序,而不必重新启动服务器。动静部署要用到服务器提供的 manager.war 文件,如果在 $CATALINA_HOME\webapps\ 下没有该文件,你必须去从新下载 tomcat,否则不能实现以下的性能。要想应用该管理程序必须首先编辑 $CATALINA_HOME\conf\tomcat-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 开始。最初重新启动服务器再拜访你程序,应该可能看到和上次雷同的成果。