2013-03-04 199 views
2

前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,帮助很大。

回答

1

的JSF ResourceHandler发出与<contextPath>/javax.faces.resource/路线的网址,虽然是间接地通过ScriptRenderer,StyleSheetRenderer等

既然你在ProxyPass指令省略应用程序名称(上下文路径),你需要使用一个URL重写器,可在将URL提供给浏览器之前省略这些URL。请参阅the related question中有关如何实现此目的的答案。

1

出现同样的问题,也没有找到配置apache服务器的方法。

如果你只是想整理你的网址,我可以推荐URLRewriteFilter这帮助我在这种情况下。

希望这个尽情享受吧!

2

我使用多个ProxyPassProxyPassReverse条目来适应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会触及第一条规则并按原样传递。

注:

  1. 的顺序很重要!这些规则将自上而下处理。如果您首先将ProxyPass设置为'/',那么其他条件将永远不会得到处理。由于每个URI在主机名后面都有一个/,所以每个请求都将使用该条件进行处理......这就是为什么/条件应该始终最后一个。
  2. 我强烈建议使用Apache JServ协议(ajp)连接器(而不是HTTP)。它内置在Apache和JBOSS中,它很容易打开,它显着提高了性能......特别是如果有任何种类的二进制数据(图像)被路由。 https://docs.jboss.org/jbossweb/2.1.x/config/ajp.html