阿帕奇在JSF
前JBoss AS中7:阿帕奇在JSF
把Apache的与本Jboss的前工作正常:
ProxyPass/http://localhost:8080
ProxyPassReverse/http://localhost:8080
所以应用程序是由domain.com/app访问。瞄准更清晰的网址(只是domain.com)时,会出现
问题:
ProxyPass/http://localhost:8080/app
ProxyPassReverse/http://localhost:8080/app
所有javax.faces.resource没有在第二种情况下交付,因为它们不使用战争上下文URL。
任何想法如何在第二种情况下获取人脸资源?也许只是搬到mod_jk?
关于ResourceHandler的这answer,帮助很大。
的JSF ResourceHandler
发出与<contextPath>/javax.faces.resource/
路线的网址,虽然是间接地通过ScriptRenderer,StyleSheetRenderer等
既然你在ProxyPass指令省略应用程序名称(上下文路径),你需要使用一个URL重写器,可在将URL提供给浏览器之前省略这些URL。请参阅the related question中有关如何实现此目的的答案。
我使用多个ProxyPass
和ProxyPassReverse
条目来适应JSF可能吐出的不同上下文路径。以下是我通常默认情况下,每一个域(ServerName
)...
<VirtualHost 127.0.0.1:8080>
ServerAdmin [email protected]
DocumentRoot "/"
ServerName "dev.mydomain.com"
ProxyPass /MyApp/ ajp://127.0.0.1:8009/MyApp/
ProxyPassReverse /MyApp/ http://127.0.0.1:80/MyApp/
ProxyPass /MyApp ajp://127.0.0.1:8009/MyApp/
ProxyPassReverse/http://127.0.0.1:80
ProxyPass/ajp://127.0.0.1:8009/MyApp/
ProxyPassReverse/http://127.0.0.1:80/
</VirtualHost>
上述的配置将允许访问使用以下任一URI的Web应用程序:
http://dev.myapp.com/MyApp/
http://dev.myapp.com/MyApp
http://dev.myapp.com/
因此,http://dev.myapp.com/javax.faces.resource/example.css
会击中最后一条规则并被路由到http://dev.myapp.com/MyApp/javax.faces.resource/example.css
。此外,http://dev.myapp.com/MyApp/javax.faces.resource/example.css
会触及第一条规则并按原样传递。
注:
-
的顺序很重要!这些规则将自上而下处理。如果您首先将
ProxyPass
设置为'/',那么其他条件将永远不会得到处理。由于每个URI在主机名后面都有一个/
,所以每个请求都将使用该条件进行处理......这就是为什么/
条件应该始终最后一个。 - 我强烈建议使用Apache JServ协议(
ajp
)连接器(而不是HTTP)。它内置在Apache和JBOSS中,它很容易打开,它显着提高了性能......特别是如果有任何种类的二进制数据(图像)被路由。 https://docs.jboss.org/jbossweb/2.1.x/config/ajp.html