Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有Apache和Tomcat的JSF 2/RichFaces 4 webapp找不到webapp资源库_Apache_Jsf 2_Tomcat7 - Fatal编程技术网

带有Apache和Tomcat的JSF 2/RichFaces 4 webapp找不到webapp资源库

带有Apache和Tomcat的JSF 2/RichFaces 4 webapp找不到webapp资源库,apache,jsf-2,tomcat7,Apache,Jsf 2,Tomcat7,我正在实现一个在Tomcat7下运行的JSF2/RichFaces4Web应用程序。我在Eclipse下使用MyEclipse和Tomcat7开发了它,一切正常。当我将应用程序部署到完整的生产环境时,资源库映像/css/js文件从Apache获得404。生产环境是Apache2,带有SSL和mod_代理前端Tomcat7。我怀疑代理设置是错误的,当TomcatWebApp运行时,ApacheGet请求没有被正确代理,但我认为我不知道为什么 从顶部开始,下面是我的带有代理的apache虚拟主机(注

我正在实现一个在Tomcat7下运行的JSF2/RichFaces4Web应用程序。我在Eclipse下使用MyEclipse和Tomcat7开发了它,一切正常。当我将应用程序部署到完整的生产环境时,资源库映像/css/js文件从Apache获得404。生产环境是Apache2,带有SSL和mod_代理前端Tomcat7。我怀疑代理设置是错误的,当TomcatWebApp运行时,ApacheGet请求没有被正确代理,但我认为我不知道为什么

从顶部开始,下面是我的带有代理的apache虚拟主机(注意*:443表示ssh):

此图像的实际JSF代码是:

  <h:outputLink value="http://www.arabidopsis.org">
    <h:graphicImage library="default" name="images/tairlogo.png"
      alt="TAIR web site"></h:graphicImage>
  </h:outputLink>

我认为问题在于,反向代理规则假设URL中不存在上下文名称(
testapp
),而在HTML中则假设它存在(如
img
标记的
src
属性)。您应该删除路径和目标URL中的上下文名称,以将所有内容代理给Tomcat,例如:

ProxyPass         /      http://localhost:8080/
ProxyPassReverse  /      http://localhost:8080/
或者将其保留在两者中,以便仅将该webapp代理给Tomcat:

ProxyPass         /testapp/      http://localhost:8080/testapp/
ProxyPassReverse  /testapp/      http://localhost:8080/testapp/

这将使您的webapp在
https://testapp.xxx.org/testapp/
。如果您不希望URL中包含上下文名称部分,可以。

我将我的应用程序更改为ROOT.war(删除了tomcat/webapps下的根目录),使其成为默认的webapp。我将反向代理更改为第一选择,没有“testapp”。但我很好奇:如果你有10个在tomcat下运行的web应用程序和10个不同的子域来运行它们,你会怎么做?在JBoss中,您可以使用JBoss-web.xml中定义的虚拟主机执行此操作。在定义虚拟主机方面,tomcat有类似的功能吗?或者你只需要在URL中使用/webapp语法就行了?我从来没有实现过这样的设置,但我相信你必须在Tomcat和Apache中定义虚拟主机,并为它们每个定义一个ProxyPass规则。看见
  <h:outputLink value="http://www.arabidopsis.org">
    <h:graphicImage library="default" name="images/tairlogo.png"
      alt="TAIR web site"></h:graphicImage>
  </h:outputLink>
ProxyPass         /      http://localhost:8080/
ProxyPassReverse  /      http://localhost:8080/
ProxyPass         /testapp/      http://localhost:8080/testapp/
ProxyPassReverse  /testapp/      http://localhost:8080/testapp/