【问题标题】:jsf resources inproperly resolved via ajp connectorjsf 资源通过 ajp 连接器错误解析
【发布时间】:2016-01-19 03:32:42
【问题描述】:

我在 JSF2 中有应用程序(使用 Primefaces)。我使用h:outputStylesheet 将 url 解析为资源,因此指向我的 css 的链接如下所示:

/project/javax.faces.resource/style.css.xhtml?ln=css

当我在服务器上的 tomcat 上部署项目时,一切正常。当我将 url 放入浏览器时,我可以看到我的 css 文件:

http://myserver.com:8080/project/javax.faces.resource/style.css.xhtml?ln=css

当然我也可以使用直接 url 来访问它,比如:

http://myserver.com:8080/project/resources/css/style.css

当我将 apache 配置为将端口 80 上的请求转发到 tomcat 时,问题就开始了。我尝试了两种方法:

  • ajp 与 mod_jk
  • 带有 mod_proxy 的 ajp

两种配置在作为 jsf 资源访问时都会生成无效的 css 文件。当我放:

http://myserver.com/project/javax.faces.resource/style.css.xhtml?ln=css

我收到以下错误消息:

This page contains the following errors:
error on line 1 at column 1: Document is empty
Below is a rendering of the page up to the first error.

但是,我的 css 文件的直接 url 仍然有效:

http://myserver.com/project/resources/css/style.css

我的问题是:我在 ajp 配置中遗漏了什么?


这是配置:

ajp 工人:

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

使用 JK 的 ajp 连接:

JkMount /project/ ajp13_worker
JkMount /project ajp13_worker
JkMount /project/* ajp13_worker

使用代理的替代 ajp 连接:

ProxyPass /project/ ajp://127.0.0.1:8009/project/
ProxyPassReverse /project/ http://127.0.0.1:80/project/

tomcat server.xml

<Connector port="8009"  enableLookups="false" protocol="AJP/1.3" redirectPort="8443" />

我用:

  • 雄猫 7
  • Java 8
  • Primefaces 4.0

【问题讨论】:

  • stackoverflow.com/questions/9905946/… 是否包含相关信息?
  • 我已经看过了。它没有 - 它是关于更改为资源生成的 url,但我的项目的 url 很好,只是通过 ajp 完成连接时数据填充不正确。
  • 此错误是客户端无法解析的 XML 文档的典型错误。显然代理设置了与 XML 相关的内容类型标头,因此客户端(网络浏览器)感到困惑并尝试将其解析为 XML。 CSS 文件的内容类型必须是text/css
  • @BalusC 非常感谢,这给了我一个很好的提示在哪里寻找

标签: tomcat jsf-2 primefaces ajp mod-proxy-ajp


【解决方案1】:

问题是,正如 BalusC 所提到的,apache 将内容类型设置为application/xhtml+xml,它应该是text/css。 xml 类型已设置,因为 apache 中的 mod_mime 模块已打开。最简单的解决方案是删除 xhtml 的文件扩展名和内容类型之间的映射。这可以通过添加:

RemoveType xhtml

apache 配置中的行。

更多解决方案可以在这里找到:https://serverfault.com/questions/544723/how-to-set-different-mod-mime-rules-for-reverse-proxy

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-08
    • 2016-03-25
    • 1970-01-01
    相关资源
    最近更新 更多