OpenCAF ( *.xhtml files ) project not working after migration from CAF Project ( *.view files )

Hi guys,

MWS 9.12

  1. I’ve migrated CAF project ( *.view ) using “Migrate to JSF 2.x” option (right mouse click on project folder → CAF Tools).
    After that all files have *.xhtml extension.
  2. Later I’ve changed WEB-INF/web.xml config file by replace every occurence of “.view” to “.xhtml”. So far so good.
  3. Upload to MWS server.
  4. Now I try to open application link https://hostname:port/MyApplication/ but with no luck. Error 500.

problems.log from MWS looks:

WEB-INF/web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>MyApplication</display-name>
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>com.webmethods.caf.faces.servlet.CAFFacesServlet</servlet-class>
    <load-on-startup>2</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
  </servlet-mapping>
  <context-param>
    <description>State saving method: "client" or "server" (= default) See JSF Specification 2.5.2</description>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>
  </context-param>
  <context-param>
    <param-name>com.webmethods.caf.faces.view.FILTER</param-name>
    <param-value>.*\.xhtml</param-value>
  </context-param>
  <context-param>
    <param-name>com.webmethods.caf.faces.view.CACHE</param-name>
    <param-value>true</param-value>
  </context-param>
  <context-param>
    <description>Formats the HTML output</description>
    <param-name>com.webmethods.caf.faces.context.PRETTY_PRINT</param-name>
    <param-value>false</param-value>
  </context-param>
  <context-param>
    <description>Since CAF uses its own FacesServlet impl, this flag is needed to force the faces-config to be loaded</description>
    <param-name>com.sun.faces.forceLoadConfiguration</param-name>
    <param-value>true</param-value>
  </context-param>
  <filter>
    <description>Handles multipart form POSTs (file uploads); required by FileInput control.</description>
    <filter-name>Multipart Filter</filter-name>
    <filter-class>com.webmethods.caf.faces.servlet.MultipartFilter</filter-class>
    <init-param>
      <description>Max allowed upload size in bytes (defaults to "10 MB").</description>
      <param-name>MAX_UPLOAD_DISK_SIZE</param-name>
      <param-value>1 MB</param-value>
    </init-param>
    <init-param>
      <description>Max upload size cached in memory (defaults to "100 KB").</description>
      <param-name>MAX_UPLOAD_RAM_SIZE</param-name>
      <param-value>100 KB</param-value>
    </init-param>
    <init-param>
      <description>Path to temporary directory in which to store uploads
that are too large to keep in memory (defaults to "temp").</description>
      <param-name>TEMP_UPLOAD_DIR_PATH</param-name>
      <param-value>temp</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>Multipart Filter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <listener>
    <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
  </listener>
  <listener>
    <listener-class>com.webmethods.caf.faces.application.CAFConfigureListener</listener-class>
  </listener>
  <filter>
    <description>Compresses the response stream to reduce the network bandwith usage.</description>
    <filter-name>CompressionFilter</filter-name>
    <filter-class>com.webmethods.caf.faces.servlet.GZIPFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>CompressionFilter</filter-name>
    <url-pattern>*.css</url-pattern>
  </filter-mapping>
  <filter-mapping>
    <filter-name>CompressionFilter</filter-name>
    <url-pattern>*.js</url-pattern>
  </filter-mapping>
  <filter-mapping>
    <filter-name>CompressionFilter</filter-name>
    <url-pattern>*.view</url-pattern>
  </filter-mapping>
  <welcome-file-list>
    <welcome-file>default.xhtml</welcome-file>
  </welcome-file-list>
  <security-constraint>
    <web-resource-collection>
      <web-resource-name>Pages</web-resource-name>
      <url-pattern>*.xhtml</url-pattern>
      <url-pattern/>
    </web-resource-collection>
    <auth-constraint>
      <role-name>Everyone</role-name>
    </auth-constraint>
  </security-constraint>
  <servlet>
    <servlet-name>LogoutServlet</servlet-name>
    <servlet-class>com.webmethods.caf.faces.servlet.LogoutServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>LogoutServlet</servlet-name>
    <url-pattern>/logout</url-pattern>
  </servlet-mapping>
  <login-config>
    <auth-method>FORM</auth-method>
    <form-login-config>
      <form-login-page>/login.xhtml</form-login-page>
      <form-error-page>/login_error.xhtml</form-error-page>
    </form-login-config>
  </login-config>
  <env-entry>
    <description/>
    <env-entry-name>wsclient-socketTimeout</env-entry-name>
    <env-entry-type>java.lang.Integer</env-entry-type>
    <env-entry-value>10000</env-entry-value>
  </env-entry>
  <env-entry>
    <description/>
    <env-entry-name>wsclient-endpointAddress</env-entry-name>
    <env-entry-type>java.lang.String</env-entry-type>
    <env-entry-value/>
  </env-entry>
  <env-entry>
    <description/>
    <env-entry-name>wsclient-requiresAuth</env-entry-name>
    <env-entry-type>java.lang.Boolean</env-entry-type>
    <env-entry-value>true</env-entry-value>
  </env-entry>
  <env-entry>
    <description/>
    <env-entry-name>wsclient-authMethod</env-entry-name>
    <env-entry-type>java.lang.String</env-entry-type>
    <env-entry-value>1</env-entry-value>
  </env-entry>
  <env-entry>
    <description/>
    <env-entry-name>wsclient-username</env-entry-name>
    <env-entry-type>java.lang.String</env-entry-type>
    <env-entry-value>mySpecialUser</env-entry-value>
  </env-entry>
  <env-entry>
    <description/>
    <env-entry-name>wsclient-password</env-entry-name>
    <env-entry-type>java.lang.String</env-entry-type>
    <env-entry-value>{AES}xxxxxxxxxx</env-entry-value>
  </env-entry>
</web-app>

Do you have any idea what is happen?

Solved!

In WEB-INF/web.xml I should leave “view” extension:

  <context-param>
    <param-name>com.webmethods.caf.faces.view.FILTER</param-name>
    <param-value>.*\.view</param-value>
  </context-param>

But I change it to

<param-value>.*\.xhtml</param-value>

My embarassing mistake…