简体   繁体   English

漂亮的面孔配置WebSphere Application Server上的问题 - JSF2

[英]Pretty faces config issues on WebSphere Application server - JSF2

"Error 500: com.ocpsoft.pretty.PrettyFilter incompatible with javax.servlet.Filter" “错误500:com.ocpsoft.pretty.PrettyFilter与javax.servlet.Filter不兼容”

  • JSF2.1.2 JSF2.1.2
  • Prettyfaces-jsf2-3.3.2 Prettyfaces-jsf2-3.3.2
  • Primefaces 3.2 Primefaces 3.2
  • WebSphere Application Server 7.0.0.9 WebSphere Application Server 7.0.0.9

Tried with adding custom properties in WebSphere admin console for filter compatibility(Last in FAQ at http://ocpsoft.org/prettyfaces/ ). 尝试在WebSphere管理控制台中添加自定义属性以实现过滤器兼容性(最后在http://ocpsoft.org/prettyfaces/中的FAQ中)。 Tomcat 6.0.32 don't have any issues but once deployed the app in WAS got the issue. Tomcat 6.0.32没有任何问题,但一旦在WAS中部署应用程序就遇到了问题。

Below is webxml 下面是webxml

<context-param>
    <param-name>defaultHtmlEscape</param-name>
    <param-value>true</param-value>
</context-param>

<context-param>
    <param-name>com.sun.faces.numberOfViewsInSession</param-name>
    <param-value>3</param-value>
</context-param>

<context-param>
    <param-name>com.sun.faces.numberOfLogicalViews</param-name>
    <param-value>10</param-value>
</context-param>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath*:WEB-INF/Controller-servlet.xml</param-value>
</context-param>

<context-param>
    <param-name>com.sun.faces.expressionFactory</param-name>
    <param-value>com.sun.el.ExpressionFactoryImpl</param-value>
</context-param>

 <context-param>
    <description>JSF Injection provider</description>
    <param-name>com.sun.faces.injectionProvider</param-name>
    <param-value>net.devgrok.jsf.Tomcat6GuiceInjectionProvider</param-value>
</context-param>

<context-param>
    <param-name>primefaces.THEME</param-name>
    <param-value>cupertino</param-value>
</context-param>

<context-param>
    <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
    <param-value>false</param-value>
</context-param>

<context-param>
    <param-name>javax.faces.FULL_STATE_SAVING_VIEW_IDS</param-name>
    <param-value>abc.xhtml</param-value>
</context-param>

<!--  JSF Required Context Params END-->

<!--  JSF Required Filters & Listeners START-->
<filter>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class>
    <init-param>
        <param-name>thresholdSize</param-name>
        <param-value>1048576000</param-value><!--51200-->
    </init-param>
    <init-param>
        <param-name>uploadDirectory</param-name>
        <param-value>/temp</param-value>
    </init-param>
</filter>

<filter-mapping>
    <filter-name>PrimeFaces FileUpload Filter</filter-name>
    <servlet-name>Faces Servlet</servlet-name>
</filter-mapping>
<!-- Creates the Spring Container shared by all Servlets and Filters -->

<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<filter>
    <filter-name>Pretty Filter</filter-name>
    <filter-class>com.ocpsoft.pretty.PrettyFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>Pretty Filter</filter-name>
    <url-pattern>/*</url-pattern>
    <dispatcher>FORWARD</dispatcher>
    <dispatcher>REQUEST</dispatcher>

</filter-mapping>

<!--  JSF Required Filters & Listeners END-->

<!--  JSF Required Servlets START -->

<servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.jsf</url-pattern>
</servlet-mapping>
  1. Changed war class loader order to "parent last" and policy to "Single class loader for application" in WebSphere admin console to pick apps own JSF version. 在WebSphere管理控制台中将war类加载器顺序更改为“parent last”并将策略更改为“应用程序的单个类加载器”以选择应用程序自己的JSF版本。

  2. Removed the redundant jars (servlet-api.jar and xml-apis-1.0.b2.jar are in my case) from WEB-INF/Lib folder as it collides with server versions. 从WEB-INF / Lib文件夹中删除了多余的jar(servlet-api.jar和xml-apis-1.0.b2.jar),因为它与服务器版本冲突。

The above solved this issue. 以上解决了这个问题。 However creating Isolated shared library ( https://stackoverflow.com/a/12081307/1341062 ) would be better option when you have app-specific dependencies that may collide with server versions. 但是,当您具有可能与服务器版本冲突的特定于应用程序的依赖项时,创建独立共享库( https://stackoverflow.com/a/12081307/1341062 )将是更好的选择。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM