我已经在我的服务器上运行Apache了,有些VHosts通过这个为我自己设置了;但是,apache documentRoot,以及任何VHost的documentRoot似乎都在调用tomcat来处理任何JSP文件 - 为了运行JSP,我需要将其作为war存档上传,并通过domain:8080访问它。
是否有人能够指出我在设置tomcat方面的正确方向,以便它可以正常处理JSP文件?
答案 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
值,然后指向根目录。在某些情况下,我不得不使用“/”而不是空字符串。