设置Tomcat以在DocumentRoot中处理JSP

时间:2014-02-16 13:33:10

标签: apache jsp tomcat document-root

我已经在我的服务器上运行Apache了,有些VHosts通过这个为我自己设置了;但是,apache documentRoot,以及任何VHost的documentRoot似乎都在调用tomcat来处理任何JSP文件 - 为了运行JSP,我需要将其作为war存档上传,并通过domain:8080访问它。

是否有人能够指出我在设置tomcat方面的正确方向,以便它可以正常处理JSP文件?

3 个答案:

答案 0 :(得分:-1)

如果我理解正确,您希望在war / webapps之外部署JSP。不幸的是,Tomcat没有这样的工作方式。您必须将JSP部署为WAR / folder-in-webapps。与PHP或某些此类语言插件不同,Tomcat托管Java应用程序。它不处理JSP文件。

要获得通过,您是否尝试过mod_jk或现在已知的连接器? http://tomcat.apache.org/connectors-doc/miscellaneous/faq.html

答案 1 :(得分:-1)

回答我自己的问题,因为这两种解决方案都没有提供我想要的东西。

首先,我下载并编译了apache mod jk_serv;在此之后,我使用以下内容在workers.properties下配置了一个worker;

workers.tomcat_home=/opt/apache-tomcat-7.0.50

workers.java_home=/opt/jdk1.7.0_51/

ps=/

worker.list=ajp13_worker
worker.ajp13_worker.port=8009
worker.ajp13_worker.host=localhost
worker.ajp13_worker.type=ajp13
worker.ajp13_worker.lbfactor=1

worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=ajp13_worker

在此之后,在apache的conf.d下,我设置了一个由apache加载的worker配置,如下所示;

LoadModule jk_module modules/mod_jk.so

JkWorkersFile /etc/httpd/conf/workers.properties
JkLogFile     /var/log/httpd/mod_jk_log
JkShmFile     /var/log/httpd/jk-runtime-status
JkWatchdogInterval 60
JkLogLevel    info

JkMountCopy   All

# all the contexts:
JkMount        / worker1
JkMount        /*.jsp worker1

最后,我设置了一个脚本,它将更新tomcat的server.xml,添加添加到httpd.conf的任何相关vHost。

有了这个,jsp文件现在可以即时处理;无需上传单独的WAR。

答案 2 :(得分:-2)

您只需将WAR文件复制到$TOMCAT/webapps/文件夹中,并在server.xml(或context.xml)中为其定义上下文,因此它指向根目录。在server.xml中,上下文在<Host>内定义。

我还建议你删除ROOT下的$TOMCAT/webapps/文件夹(如果有的话)。

下面是上下文定义的示例:

<Host name="192.168.0.251"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">
<Alias>myhost.mydomain.com</Alias>
<Context docBase="myWarFileName" path="" reloadable="true" source="myWarFileName">

... Add any resource, etc.. for this context here, if any ...

</Context>
</Host>

注意空的path值,然后指向根目录。在某些情况下,我不得不使用“/”而不是空字符串。