设为首页 收藏本站
查看: 460|回复: 0

[经验分享] Tomcat配置任意目录下的Web应用程序

[复制链接]

尚未签到

发表于 2017-2-5 07:21:05 | 显示全部楼层 |阅读模式
每一个Web应用程序都有一个起始目录,在开发和部署Web应用程序时,通过上下文路径(Context path)来区分不同的Web应用程序。Tomcat默认的Web应用程序的起始目录(也称为上下文根)是%CATALINA_HOME%/webapps/ROOT,例如一个关于Hello WorldWeb应用程序的起始目录是%CATALINA_HOME%/webapps/ch08,这就意味着/ch08是关于Hello WorldWeb应用程序的上下文路径。那么如何配置任意目录下的Web应用程序呢?
    我们知道,在Web服务器中可以配置虚拟目录,而虚拟目录所对应的真实目录可以在任意路径下。同样地,在Tomcat中,也有类似的配置,这主要通过在XML配置文件中设置<Context>元素来完成。一个<Context>元素就表示一个Web应用程序,运行在特定的虚拟主机中。
    这里介绍一种在Tomcat中最常用的配置方法:可以为一个Web应用程序建立%CATALINA_HOME%/conf/[enginename]/[hostname]/XXX.xml文件。这里[enginename]表示的是在servlet.xml文件中设置的<Engine>元素的name属性值,具体到Tomcat,这个属性值就是Catalina[hostname]表示的是在servlet.xml文件中设置的<Host>元素的name属性值,具体到Tomcat,这个属性值就是localhost。在这个XML文件中,<Context>元素的docBase属性通常是Web应用程序目录的绝对路径名,或者是Web应用程序归档文件的绝对路径名。
   
u      下面简要描述一下在配置Web应用程序时<Context>元素中常用的几个属性含义。
path指定Web应用程序的上下文路径。在一个特定的虚拟主机中,所有的上下文路径都必须是唯一的。如果指定一个上下文路径为空字符串(””),则定义了这个虚拟主机的默认Web应用程序,负责处理所有的没有分配给其他Web应用程序的请求。
docBase:指定Web应用程序的文档根目录或者WAR文件的路径名。可以指定目录的或WAR文件的绝对路径名,也可以指定相对于Host元素的appBase目录的路径名。该属性是必须的。
reloadable:如果设置为trueTomcat服务器在运行时,会监视WEB-INF/classesWEB-INF/lib目录下类的改变,如果发现有类被更新,Tomcat服务器将自动重新加载该Web应用程序。这个特性在应用程序开发阶段非常有用,但是它需要额外的运行时开销,所以在产品发布时不建议使用。该属性的默认值是false
 
%CATALINA_HOME%/webapps目录下的Web应用程序,如果没有在任何文件中设置<Context>元素,那么Tomcat将为这个Web应用程序自动生成<Context>元素。自动生成的<Context>元素的上下文路径将以斜杠(/)开始,后面紧跟Web应用程序所在目录的名字,如果目录的名字是ROOT,那么上下文路径将是一个空字符串(””)。所以在%CATALINA_HOME%/webapps目录下的Web应用程序可以不经配置而直接使用。
u      下面举个例子来说明:
在计算机中关于Hello WorldWeb程序被放置在目录D:/workspace/ch8下面,为了可以直接在这个目录下运行Web应用程序,可以在%CATALINA_HOME%/conf/[enginename]/[hostname]/目录下,为Hello World这个Web应用程序建立一个XML文件,例如在笔者的机器上可以在D:/apache-tomcat-5.5.31/conf/Catalina/localhost/目录下新建ch08.xml文件,编辑这个文件,输入如下所示内容。
文件名:ch08.xml

<Context path=”/test” docBase=” D:/workspace/ch08” reloadable=”true”/>
这里有三个地方需要进一步说明一下,这三个地方分别是:
u       文件名:ch08.xml
u       path=/test
u       docBase=” D:/workspace/ch08”
这三个地方在有些书上被写成如下三种值ch08.xml/ch08” D:/workspace/ch08”,容易让人以为这三个值之间似乎存在某种联系从而造成误会,其实它们之间是没有联系的。现分别说明如下:
u       文件名ch08.xml中的“ch08”将会影响将来用浏览器访问Web应用程序时地址栏中紧跟在http://localhost:8080后面的内容,如图1所示。
u       path=/ch08中的“ch08Context上下文路径,在整个Web应用程序中,一个Servlet对应一个唯一的上下文路径,而这个名称只要唯一就行,至于是什么名称,没有限定。
u       docBase=” D:/workspace/ch08”中的“ch08Web应用程序在计算机中存放的目录文件夹,由于是可以存放在任意目录下,所以这里可以是任意名称。
    通过以上分析可以看出,这三个地方虽然有时候会出现同样的内容,但是它们之间是没有什么必然联系的,详细图解见图1。
DSC0000.gif

图1 访问Web应用程序时地址栏中的内容

   
在任意目录下面配置Web应用程序的时候,类的包名也很重要,因为它会影响类在应用程序中的存放目录以及应用程序在被访问时的路径。
如图2所示,4中的SimpleHello.java文件有一个包名WZY.li,在编译该文件时使用如下命令
javac -d . D:/workspace/ch08/src/SimpleHello.java
u       回车运行后,会在C:/Documents and Settings/Administrator(这里Administrator可以是当前系统登录用户名)目录下生成/WZY/li/SimpleHello.class文件如图25所示,这里就看到使用-d选项,会按照Java源文件中定义的包的层次生成对应的目录层次。
u       Web应用程序所在目录中新建一个文件夹命名为WEB-INF,将配置文件web.xml放入其中,并在该文件夹中新建一个class文件夹,将前面生成的目录/WZY/li/SimpleHello.class一并拷贝到class文件夹下面。
经过上面两步就配置好了Web应用程序,就可以在浏览器地址栏中输入
http://localhost:8080/[localhost文件夹下XXX.xml文件名]/[web.xml文件中元素<url-pattern>内容]
这里还需要记住一点,在web.xml文件中对带有包名的Servlet class进行配置时,元素<servlet-class>内容中的类名称千万要写出完整的包名如图28所示,否则Web应用程序会报错HTTP Status 500,说无法找到相关的类。
 
DSC0001.gif

 

2 Web应用程序配置中的包

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-337550-1-1.html 上篇帖子: Tomcat Sql Server2005 连接池折腾小记 下篇帖子: Setup Tomcat SSL and Spring RESTful webservice Client
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表