You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@myfaces.apache.org by Eisenträger, Tobias <To...@arag.de> on 2009/04/07 10:44:22 UTC

Tomahawk + Trinidad + Facelets

Hello everyone,

I have a working configuration with Trinidad+Facelets with the JSF 1.2 versions.
Now I would like to add some Tomahawk components to that but when I add the ExtensionsFilter to the web.xml I get the following error:

Error 500: Filter [MyFacesExtensionsFilter]: filter is unavailable.

Does anyone have a clue why it might not work? It looks like the fileUpload Component cant be loaded from the resource bundle. Is there anything else I need to configure?

Thank you.

Console log:

[07.04.09 10:35:30:640 CEST] 0000001f ServletWrappe I   SRVE0242I: [WDMS_InDocFlow_EAR_NewWeb] [/WDMS_InDocFlow_NewWeb] [faces]: Initialisierung erfolgreich.
[07.04.09 10:35:30:718 CEST] 0000001f ServiceLogger I com.ibm.ws.ffdc.IncidentStreamImpl initialize FFDC0009I: FFDC hat die Datenstromdatei C:\Programme\ibm\SDP70\runtimes\base_v61\profiles\Icefaces\logs\ffdc\server1_0000001f_09.04.07_10.35.30_0.txt für das Ereignis geöffnet.
[07.04.09 10:35:30:734 CEST] 0000001f ServiceLogger I com.ibm.ws.ffdc.IncidentStreamImpl resetIncidentStream FFDC0010I: FFDC hat die Datenstromdatei C:\Programme\ibm\SDP70\runtimes\base_v61\profiles\Icefaces\logs\ffdc\server1_0000001f_09.04.07_10.35.30_0.txt für das Ereignis geschlossen.
[07.04.09 10:35:30:734 CEST] 0000001f ServiceLogger I com.ibm.ws.ffdc.IncidentStreamImpl open FFDC0009I: FFDC hat die Datenstromdatei C:\Programme\ibm\SDP70\runtimes\base_v61\profiles\Icefaces\logs\ffdc\server1_0000001f_09.04.07_10.35.30_1.txt für das Ereignis geöffnet.
[07.04.09 10:35:30:874 CEST] 0000001f ServiceLogger I com.ibm.ws.ffdc.IncidentStreamImpl resetIncidentStream FFDC0010I: FFDC hat die Datenstromdatei C:\Programme\ibm\SDP70\runtimes\base_v61\profiles\Icefaces\logs\ffdc\server1_0000001f_09.04.07_10.35.30_1.txt für das Ereignis geschlossen.
[07.04.09 10:35:30:874 CEST] 0000001f ServiceLogger I com.ibm.ws.ffdc.IncidentStreamImpl open FFDC0009I: FFDC hat die Datenstromdatei C:\Programme\ibm\SDP70\runtimes\base_v61\profiles\Icefaces\logs\ffdc\server1_0000001f_09.04.07_10.35.30_2.txt für das Ereignis geöffnet.
[07.04.09 10:35:30:874 CEST] 0000001f ServiceLogger I com.ibm.ws.ffdc.IncidentStreamImpl resetIncidentStream FFDC0010I: FFDC hat die Datenstromdatei C:\Programme\ibm\SDP70\runtimes\base_v61\profiles\Icefaces\logs\ffdc\server1_0000001f_09.04.07_10.35.30_2.txt für das Ereignis geschlossen.
[07.04.09 10:35:30:874 CEST] 0000001f WebApp        E   [Servlet Error]-[faces]: java.lang.NoClassDefFoundError: org.apache.commons.fileupload.FileUpload
	at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:282)
	at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
	at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
	at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87)
	at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:832)
	at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:679)
	at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:565)
	at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)
	at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3440)
	at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:267)
	at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:815)
	at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1461)
	at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:118)
	at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:458)
	at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:387)
	at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:267)
	at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
	at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
	at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
	at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
	at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
	at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)
	at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:195)
	at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:743)
	at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:873)
	at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1473)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileUpload
	at java.net.URLClassLoader.findClass(URLClassLoader.java:496)
	at com.ibm.ws.bootstrap.ExtClassLoader.findClass(ExtClassLoader.java:132)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:631)
	at com.ibm.ws.bootstrap.ExtClassLoader.loadClass(ExtClassLoader.java:87)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:597)
	at com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:58)
	at com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:54)
	at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:394)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:597)
	... 26 more

Web.xml:
<?xml version = '1.0' encoding = 'ISO-8859-1'?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	version="2.5">

	<filter>
		<filter-name>MyFacesExtensionsFilter</filter-name>
		<filter-class>
			org.apache.myfaces.webapp.filter.ExtensionsFilter
		</filter-class>
		<init-param>
			<param-name>maxFileSize</param-name>
			<param-value>20m</param-value>
		</init-param>
	</filter>

	<filter-mapping>
		<filter-name>MyFacesExtensionsFilter</filter-name>
		<url-pattern>*.arag</url-pattern>
	</filter-mapping>
	<filter-mapping>
		<filter-name>MyFacesExtensionsFilter</filter-name>
		<url-pattern>/faces/*</url-pattern>
	</filter-mapping>
	
	<!-- Use client-side state saving.  In Trinidad, it is an
		optimized, token-based mechanism that is almost always a
		better choice than the standard JSF server-side state saving. -->
	<context-param>
		<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
		<param-value>client</param-value>
		<!--param-value>server</param-value-->
	</context-param>

	<!-- Trinidad by default uses an optimized client-side state saving
		mechanism. To disable that, uncomment the following -->
	<!--context-param>
		<param-name>org.apache.myfaces.trinidad.CLIENT_STATE_METHOD</param-name>
		<param-value>all</param-value>
		</context-param-->

	<!-- Trinidad also supports an optimized strategy for caching some
		view state at an application level, which significantly improves
		scalability.  However, it makes it harder to develop (updates to
		pages will not be noticed until the server is restarted), and in
		some rare cases cannot be used for some pages (see Trinidad
		documentation for more information) -->
	<context-param>
		<param-name>
			org.apache.myfaces.trinidad.USE_APPLICATION_VIEW_CACHE
		</param-name>
		<param-value>false</param-value>
	</context-param>

	<!-- Apache Trinidad by default obfuscates the Javascript it delivers to 
		the client, as well as stripping comments and whitespace. This dramatically 
		reduces the size of our Javascript download, but also makes it tricky to 
		debug the Javascript. This flag can be set to true to turn off the 
		obfuscation.  -->
	<context-param>
		<param-name>
			org.apache.myfaces.trinidad.DEBUG_JAVASCRIPT
		</param-name>
		<param-value>true</param-value>
	</context-param>

	<!-- If this parameter is enabled, Trinidad will automatically
		check the modification date of your JSPs, and discard saved
		state when they change;  this makes development easier,
		but adds overhead that should be avoided when your application
		is deployed -->
	<context-param>
		<param-name>
			org.apache.myfaces.trinidad.CHECK_FILE_MODIFICATION
		</param-name>
		<param-value>true</param-value>
	</context-param>

	<!-- Enables Change Persistence at a session scope.  By default,
		Change Persistence is entirely disabled. The ChangeManager is
		an API, which can persist component modifications (like,
		is a showDetail or tree expanded or collapsed). For providing
		a custom Change Persistence implementation inherit from the 
		Trinidad API's ChangeManager class. As the value you have 
		to use the fullqualified class name. -->
	<context-param>
		<param-name>
			org.apache.myfaces.trinidad.CHANGE_PERSISTENCE
		</param-name>
		<param-value>session</param-value>
	</context-param>

	<!-- Trinidad has its own ViewHandler, which is a "decorating"
		view handler - for example, it needs to wrap methods like renderView()
		to perform some extra pre- and post-handling.  Facelets, on the other
		hand, is more of a true ViewHandler - it actually implements
		renderView() (yeah, it decorates too, but forget about that
		for a second).  As a result, the world is a better place if
		the Trinidad ViewHandler runs around the Facelets ViewHandler.
		But since Facelets is registered in WEB-INF/faces-config.xml,
		and Trinidad's is registered from META-INF/faces-config.xml in its
		JAR, exactly the opposite happens as per the JSF spec.
		
		Hence, the following config parameter, which Trinidad
		exposes to allow pushing a ViewHandler inside
		of ours.  FWIW, you retain the entire delegation stack - 
		just flipped around a bit - so that Facelets still decorates
		the standard ViewHandler, and therefore you've still got
		JSP support.
	-->
	<context-param>
		<param-name>
			org.apache.myfaces.trinidad.ALTERNATE_VIEW_HANDLER
		</param-name>
		<param-value>com.sun.facelets.FaceletViewHandler</param-value>
	</context-param>

	<!-- Once you are using Facelets you are perhaps interested in putting some comments to your XHTML template
		Not every component likes this, because the comments are interpreted as regular components and not every component likes every other component to be its child  -->
	<context-param>
		<param-name>facelets.SKIP_COMMENTS</param-name>
		<param-value>true</param-value>
	</context-param>

	<filter>
		<filter-name>trinidad</filter-name>
		<filter-class>
			org.apache.myfaces.trinidad.webapp.TrinidadFilter
		</filter-class>
	</filter>

	<filter-mapping>
		<filter-name>trinidad</filter-name>
		<servlet-name>faces</servlet-name>
	</filter-mapping>

	<!-- Faces Servlet -->
	<servlet>
		<servlet-name>faces</servlet-name>
		<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
	</servlet>

	<!-- resource loader servlet -->
	<servlet>
		<servlet-name>resources</servlet-name>
		<servlet-class>
			org.apache.myfaces.trinidad.webapp.ResourceServlet
		</servlet-class>
	</servlet>

	<!-- Faces Servlet Mappings -->
	<servlet-mapping>
		<servlet-name>faces</servlet-name>
		<url-pattern>/faces/*</url-pattern>
	</servlet-mapping>

	<servlet-mapping>
		<servlet-name>faces</servlet-name>
		<url-pattern>*.arag</url-pattern>
	</servlet-mapping>

	<servlet-mapping>
		<servlet-name>resources</servlet-name>
		<url-pattern>/adf/*</url-pattern>
	</servlet-mapping>

	<!-- Use documents saved as *.xhtml for Facelets -->
	<context-param>
		<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
		<param-value>.jspx</param-value>
	</context-param>

	<!-- Welcome Files -->
	<welcome-file-list>
		<welcome-file>index.html</welcome-file>
	</welcome-file-list>

</web-app>

Tobias Eisenträger

AW: Tomahawk + Trinidad + Facelets

Posted by Eisenträger, Tobias <To...@arag.de>.
That worked great - Thank you!

You need to commons fileupload to your classpath.
On Tue, Apr 7, 2009 at 9:44 AM, Eisenträger, Tobias <To...@arag.de> wrote:
Hello everyone,

I have a working configuration with Trinidad+Facelets with the JSF 1.2 versions.
Now I would like to add some Tomahawk components to that but when I add the ExtensionsFilter to the web.xml I get the following error:

Error 500: Filter [MyFacesExtensionsFilter]: filter is unavailable.

Does anyone have a clue why it might not work? It looks like the fileUpload Component cant be loaded from the resource bundle. Is there anything else I need to configure?

Thank you.

Console log:

[07.04.09 10:35:30:640 CEST] 0000001f ServletWrappe I   SRVE0242I: [WDMS_InDocFlow_EAR_NewWeb] [/WDMS_InDocFlow_NewWeb] [faces]: Initialisierung erfolgreich.
[07.04.09 10:35:30:718 CEST] 0000001f ServiceLogger I com.ibm.ws.ffdc.IncidentStreamImpl initialize FFDC0009I: FFDC hat die Datenstromdatei C:\Programme\ibm\SDP70\runtimes\base_v61\profiles\Icefaces\logs\ffdc\server1_0000001f_09.04.07_10.35.30_0.txt für das Ereignis geöffnet.
[07.04.09 10:35:30:734 CEST] 0000001f ServiceLogger I com.ibm.ws.ffdc.IncidentStreamImpl resetIncidentStream FFDC0010I: FFDC hat die Datenstromdatei C:\Programme\ibm\SDP70\runtimes\base_v61\profiles\Icefaces\logs\ffdc\server1_0000001f_09.04.07_10.35.30_0.txt für das Ereignis geschlossen.
[07.04.09 10:35:30:734 CEST] 0000001f ServiceLogger I com.ibm.ws.ffdc.IncidentStreamImpl open FFDC0009I: FFDC hat die Datenstromdatei C:\Programme\ibm\SDP70\runtimes\base_v61\profiles\Icefaces\logs\ffdc\server1_0000001f_09.04.07_10.35.30_1.txt für das Ereignis geöffnet.
[07.04.09 10:35:30:874 CEST] 0000001f ServiceLogger I com.ibm.ws.ffdc.IncidentStreamImpl resetIncidentStream FFDC0010I: FFDC hat die Datenstromdatei C:\Programme\ibm\SDP70\runtimes\base_v61\profiles\Icefaces\logs\ffdc\server1_0000001f_09.04.07_10.35.30_1.txt für das Ereignis geschlossen.
[07.04.09 10:35:30:874 CEST] 0000001f ServiceLogger I com.ibm.ws.ffdc.IncidentStreamImpl open FFDC0009I: FFDC hat die Datenstromdatei C:\Programme\ibm\SDP70\runtimes\base_v61\profiles\Icefaces\logs\ffdc\server1_0000001f_09.04.07_10.35.30_2.txt für das Ereignis geöffnet.
[07.04.09 10:35:30:874 CEST] 0000001f ServiceLogger I com.ibm.ws.ffdc.IncidentStreamImpl resetIncidentStream FFDC0010I: FFDC hat die Datenstromdatei C:\Programme\ibm\SDP70\runtimes\base_v61\profiles\Icefaces\logs\ffdc\server1_0000001f_09.04.07_10.35.30_2.txt für das Ereignis geschlossen.
[07.04.09 10:35:30:874 CEST] 0000001f WebApp        E   [Servlet Error]-[faces]: java.lang.NoClassDefFoundError: org.apache.commons.fileupload.FileUpload
       at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:282)
       at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
       at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
       at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87)
       at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:832)
       at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:679)
       at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:565)
       at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)
       at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3440)
       at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:267)
       at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:815)
       at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1461)
       at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:118)
       at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:458)
       at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:387)
       at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:267)
       at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
       at com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
       at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
       at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
       at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
       at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)
       at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:195)
       at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:743)
       at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:873)
       at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1473)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.fileupload.FileUpload
       at java.net.URLClassLoader.findClass(URLClassLoader.java:496)
       at com.ibm.ws.bootstrap.ExtClassLoader.findClass(ExtClassLoader.java:132)
       at java.lang.ClassLoader.loadClass(ClassLoader.java:631)
       at com.ibm.ws.bootstrap.ExtClassLoader.loadClass(ExtClassLoader.java:87)
       at java.lang.ClassLoader.loadClass(ClassLoader.java:597)
       at com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:58)
       at com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:54)
       at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:394)
       at java.lang.ClassLoader.loadClass(ClassLoader.java:597)
       ... 26 more

Web.xml:
<?xml version = '1.0' encoding = 'ISO-8859-1'?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
       version="2.5">

       <filter>
               <filter-name>MyFacesExtensionsFilter</filter-name>
               <filter-class>
                       org.apache.myfaces.webapp.filter.ExtensionsFilter
               </filter-class>
               <init-param>
                       <param-name>maxFileSize</param-name>
                       <param-value>20m</param-value>
               </init-param>
       </filter>

       <filter-mapping>
               <filter-name>MyFacesExtensionsFilter</filter-name>
               <url-pattern>*.arag</url-pattern>
       </filter-mapping>
       <filter-mapping>
               <filter-name>MyFacesExtensionsFilter</filter-name>
               <url-pattern>/faces/*</url-pattern>
       </filter-mapping>

       <!-- Use client-side state saving.  In Trinidad, it is an
               optimized, token-based mechanism that is almost always a
               better choice than the standard JSF server-side state saving. -->
       <context-param>
               <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
               <param-value>client</param-value>
               <!--param-value>server</param-value-->
       </context-param>

       <!-- Trinidad by default uses an optimized client-side state saving
               mechanism. To disable that, uncomment the following -->
       <!--context-param>
               <param-name>org.apache.myfaces.trinidad.CLIENT_STATE_METHOD</param-name>
               <param-value>all</param-value>
               </context-param-->

       <!-- Trinidad also supports an optimized strategy for caching some
               view state at an application level, which significantly improves
               scalability.  However, it makes it harder to develop (updates to
               pages will not be noticed until the server is restarted), and in
               some rare cases cannot be used for some pages (see Trinidad
               documentation for more information) -->
       <context-param>
               <param-name>
                       org.apache.myfaces.trinidad.USE_APPLICATION_VIEW_CACHE
               </param-name>
               <param-value>false</param-value>
       </context-param>

       <!-- Apache Trinidad by default obfuscates the Javascript it delivers to
               the client, as well as stripping comments and whitespace. This dramatically
               reduces the size of our Javascript download, but also makes it tricky to
               debug the Javascript. This flag can be set to true to turn off the
               obfuscation.  -->
       <context-param>
               <param-name>
                       org.apache.myfaces.trinidad.DEBUG_JAVASCRIPT
               </param-name>
               <param-value>true</param-value>
       </context-param>

       <!-- If this parameter is enabled, Trinidad will automatically
               check the modification date of your JSPs, and discard saved
               state when they change;  this makes development easier,
               but adds overhead that should be avoided when your application
               is deployed -->
       <context-param>
               <param-name>
                       org.apache.myfaces.trinidad.CHECK_FILE_MODIFICATION
               </param-name>
               <param-value>true</param-value>
       </context-param>

       <!-- Enables Change Persistence at a session scope.  By default,
               Change Persistence is entirely disabled. The ChangeManager is
               an API, which can persist component modifications (like,
               is a showDetail or tree expanded or collapsed). For providing
               a custom Change Persistence implementation inherit from the
               Trinidad API's ChangeManager class. As the value you have
               to use the fullqualified class name. -->
       <context-param>
               <param-name>
                       org.apache.myfaces.trinidad.CHANGE_PERSISTENCE
               </param-name>
               <param-value>session</param-value>
       </context-param>

       <!-- Trinidad has its own ViewHandler, which is a "decorating"
               view handler - for example, it needs to wrap methods like renderView()
               to perform some extra pre- and post-handling.  Facelets, on the other
               hand, is more of a true ViewHandler - it actually implements
               renderView() (yeah, it decorates too, but forget about that
               for a second).  As a result, the world is a better place if
               the Trinidad ViewHandler runs around the Facelets ViewHandler.
               But since Facelets is registered in WEB-INF/faces-config.xml,
               and Trinidad's is registered from META-INF/faces-config.xml in its
               JAR, exactly the opposite happens as per the JSF spec.

               Hence, the following config parameter, which Trinidad
               exposes to allow pushing a ViewHandler inside
               of ours.  FWIW, you retain the entire delegation stack -
               just flipped around a bit - so that Facelets still decorates
               the standard ViewHandler, and therefore you've still got
               JSP support.
       -->
       <context-param>
               <param-name>
                       org.apache.myfaces.trinidad.ALTERNATE_VIEW_HANDLER
               </param-name>
               <param-value>com.sun.facelets.FaceletViewHandler</param-value>
       </context-param>

       <!-- Once you are using Facelets you are perhaps interested in putting some comments to your XHTML template
               Not every component likes this, because the comments are interpreted as regular components and not every component likes every other component to be its child  -->
       <context-param>
               <param-name>facelets.SKIP_COMMENTS</param-name>
               <param-value>true</param-value>
       </context-param>

       <filter>
               <filter-name>trinidad</filter-name>
               <filter-class>
                       org.apache.myfaces.trinidad.webapp.TrinidadFilter
               </filter-class>
       </filter>

       <filter-mapping>
               <filter-name>trinidad</filter-name>
               <servlet-name>faces</servlet-name>
       </filter-mapping>

       <!-- Faces Servlet -->
       <servlet>
               <servlet-name>faces</servlet-name>
               <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
       </servlet>

       <!-- resource loader servlet -->
       <servlet>
               <servlet-name>resources</servlet-name>
               <servlet-class>
                       org.apache.myfaces.trinidad.webapp.ResourceServlet
               </servlet-class>
       </servlet>

       <!-- Faces Servlet Mappings -->
       <servlet-mapping>
               <servlet-name>faces</servlet-name>
               <url-pattern>/faces/*</url-pattern>
       </servlet-mapping>

       <servlet-mapping>
               <servlet-name>faces</servlet-name>
               <url-pattern>*.arag</url-pattern>
       </servlet-mapping>

       <servlet-mapping>
               <servlet-name>resources</servlet-name>
               <url-pattern>/adf/*</url-pattern>
       </servlet-mapping>

       <!-- Use documents saved as *.xhtml for Facelets -->
       <context-param>
               <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
               <param-value>.jspx</param-value>
       </context-param>

       <!-- Welcome Files -->
       <welcome-file-list>
               <welcome-file>index.html</welcome-file>
       </welcome-file-list>

</web-app>

Tobias Eisenträger


Re: Tomahawk + Trinidad + Facelets

Posted by Cagatay Civici <ca...@gmail.com>.
You need to commons fileupload to your classpath.

On Tue, Apr 7, 2009 at 9:44 AM, Eisenträger, Tobias <
Tobias.Eisentraeger@arag.de> wrote:

> Hello everyone,
>
> I have a working configuration with Trinidad+Facelets with the JSF 1.2
> versions.
> Now I would like to add some Tomahawk components to that but when I add the
> ExtensionsFilter to the web.xml I get the following error:
>
> Error 500: Filter [MyFacesExtensionsFilter]: filter is unavailable.
>
> Does anyone have a clue why it might not work? It looks like the fileUpload
> Component cant be loaded from the resource bundle. Is there anything else I
> need to configure?
>
> Thank you.
>
> Console log:
>
> [07.04.09 10:35:30:640 CEST] 0000001f ServletWrappe I   SRVE0242I:
> [WDMS_InDocFlow_EAR_NewWeb] [/WDMS_InDocFlow_NewWeb] [faces]:
> Initialisierung erfolgreich.
> [07.04.09 10:35:30:718 CEST] 0000001f ServiceLogger I
> com.ibm.ws.ffdc.IncidentStreamImpl initialize FFDC0009I: FFDC hat die
> Datenstromdatei
> C:\Programme\ibm\SDP70\runtimes\base_v61\profiles\Icefaces\logs\ffdc\server1_0000001f_09.04.07_10.35.30_0.txt
> für das Ereignis geöffnet.
> [07.04.09 10:35:30:734 CEST] 0000001f ServiceLogger I
> com.ibm.ws.ffdc.IncidentStreamImpl resetIncidentStream FFDC0010I: FFDC hat
> die Datenstromdatei
> C:\Programme\ibm\SDP70\runtimes\base_v61\profiles\Icefaces\logs\ffdc\server1_0000001f_09.04.07_10.35.30_0.txt
> für das Ereignis geschlossen.
> [07.04.09 10:35:30:734 CEST] 0000001f ServiceLogger I
> com.ibm.ws.ffdc.IncidentStreamImpl open FFDC0009I: FFDC hat die
> Datenstromdatei
> C:\Programme\ibm\SDP70\runtimes\base_v61\profiles\Icefaces\logs\ffdc\server1_0000001f_09.04.07_10.35.30_1.txt
> für das Ereignis geöffnet.
> [07.04.09 10:35:30:874 CEST] 0000001f ServiceLogger I
> com.ibm.ws.ffdc.IncidentStreamImpl resetIncidentStream FFDC0010I: FFDC hat
> die Datenstromdatei
> C:\Programme\ibm\SDP70\runtimes\base_v61\profiles\Icefaces\logs\ffdc\server1_0000001f_09.04.07_10.35.30_1.txt
> für das Ereignis geschlossen.
> [07.04.09 10:35:30:874 CEST] 0000001f ServiceLogger I
> com.ibm.ws.ffdc.IncidentStreamImpl open FFDC0009I: FFDC hat die
> Datenstromdatei
> C:\Programme\ibm\SDP70\runtimes\base_v61\profiles\Icefaces\logs\ffdc\server1_0000001f_09.04.07_10.35.30_2.txt
> für das Ereignis geöffnet.
> [07.04.09 10:35:30:874 CEST] 0000001f ServiceLogger I
> com.ibm.ws.ffdc.IncidentStreamImpl resetIncidentStream FFDC0010I: FFDC hat
> die Datenstromdatei
> C:\Programme\ibm\SDP70\runtimes\base_v61\profiles\Icefaces\logs\ffdc\server1_0000001f_09.04.07_10.35.30_2.txt
> für das Ereignis geschlossen.
> [07.04.09 10:35:30:874 CEST] 0000001f WebApp        E   [Servlet
> Error]-[faces]: java.lang.NoClassDefFoundError:
> org.apache.commons.fileupload.FileUpload
>        at
> org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:282)
>        at
> com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
>        at
> com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
>        at
> com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:87)
>        at
> com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:832)
>        at
> com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:679)
>        at
> com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:565)
>        at
> com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)
>        at
> com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3440)
>        at
> com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:267)
>        at
> com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:815)
>        at
> com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1461)
>        at
> com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:118)
>        at
> com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:458)
>        at
> com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewInformation(HttpInboundLink.java:387)
>        at
> com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.ready(HttpInboundLink.java:267)
>        at
> com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.sendToDiscriminators(NewConnectionInitialReadCallback.java:214)
>        at
> com.ibm.ws.tcp.channel.impl.NewConnectionInitialReadCallback.complete(NewConnectionInitialReadCallback.java:113)
>        at
> com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
>        at
> com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
>        at
> com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
>        at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:136)
>        at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:195)
>        at
> com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:743)
>        at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:873)
>        at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1473)
> Caused by: java.lang.ClassNotFoundException:
> org.apache.commons.fileupload.FileUpload
>        at java.net.URLClassLoader.findClass(URLClassLoader.java:496)
>        at
> com.ibm.ws.bootstrap.ExtClassLoader.findClass(ExtClassLoader.java:132)
>        at java.lang.ClassLoader.loadClass(ClassLoader.java:631)
>        at
> com.ibm.ws.bootstrap.ExtClassLoader.loadClass(ExtClassLoader.java:87)
>        at java.lang.ClassLoader.loadClass(ClassLoader.java:597)
>        at
> com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:58)
>        at
> com.ibm.ws.classloader.ProtectionClassLoader.loadClass(ProtectionClassLoader.java:54)
>        at
> com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:394)
>        at java.lang.ClassLoader.loadClass(ClassLoader.java:597)
>        ... 26 more
>
> Web.xml:
> <?xml version = '1.0' encoding = 'ISO-8859-1'?>
>
> <web-app xmlns="http://java.sun.com/xml/ns/javaee"
>        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
> http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
>        version="2.5">
>
>        <filter>
>                <filter-name>MyFacesExtensionsFilter</filter-name>
>                <filter-class>
>                        org.apache.myfaces.webapp.filter.ExtensionsFilter
>                </filter-class>
>                <init-param>
>                        <param-name>maxFileSize</param-name>
>                        <param-value>20m</param-value>
>                </init-param>
>        </filter>
>
>        <filter-mapping>
>                <filter-name>MyFacesExtensionsFilter</filter-name>
>                <url-pattern>*.arag</url-pattern>
>        </filter-mapping>
>        <filter-mapping>
>                <filter-name>MyFacesExtensionsFilter</filter-name>
>                <url-pattern>/faces/*</url-pattern>
>        </filter-mapping>
>
>        <!-- Use client-side state saving.  In Trinidad, it is an
>                optimized, token-based mechanism that is almost always a
>                better choice than the standard JSF server-side state
> saving. -->
>        <context-param>
>                <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
>                <param-value>client</param-value>
>                <!--param-value>server</param-value-->
>        </context-param>
>
>        <!-- Trinidad by default uses an optimized client-side state saving
>                mechanism. To disable that, uncomment the following -->
>        <!--context-param>
>
>  <param-name>org.apache.myfaces.trinidad.CLIENT_STATE_METHOD</param-name>
>                <param-value>all</param-value>
>                </context-param-->
>
>        <!-- Trinidad also supports an optimized strategy for caching some
>                view state at an application level, which significantly
> improves
>                scalability.  However, it makes it harder to develop
> (updates to
>                pages will not be noticed until the server is restarted),
> and in
>                some rare cases cannot be used for some pages (see Trinidad
>                documentation for more information) -->
>        <context-param>
>                <param-name>
>
>  org.apache.myfaces.trinidad.USE_APPLICATION_VIEW_CACHE
>                </param-name>
>                <param-value>false</param-value>
>        </context-param>
>
>        <!-- Apache Trinidad by default obfuscates the Javascript it
> delivers to
>                the client, as well as stripping comments and whitespace.
> This dramatically
>                reduces the size of our Javascript download, but also makes
> it tricky to
>                debug the Javascript. This flag can be set to true to turn
> off the
>                obfuscation.  -->
>        <context-param>
>                <param-name>
>                        org.apache.myfaces.trinidad.DEBUG_JAVASCRIPT
>                </param-name>
>                <param-value>true</param-value>
>        </context-param>
>
>        <!-- If this parameter is enabled, Trinidad will automatically
>                check the modification date of your JSPs, and discard saved
>                state when they change;  this makes development easier,
>                but adds overhead that should be avoided when your
> application
>                is deployed -->
>        <context-param>
>                <param-name>
>                        org.apache.myfaces.trinidad.CHECK_FILE_MODIFICATION
>                </param-name>
>                <param-value>true</param-value>
>        </context-param>
>
>        <!-- Enables Change Persistence at a session scope.  By default,
>                Change Persistence is entirely disabled. The ChangeManager
> is
>                an API, which can persist component modifications (like,
>                is a showDetail or tree expanded or collapsed). For
> providing
>                a custom Change Persistence implementation inherit from the
>                Trinidad API's ChangeManager class. As the value you have
>                to use the fullqualified class name. -->
>        <context-param>
>                <param-name>
>                        org.apache.myfaces.trinidad.CHANGE_PERSISTENCE
>                </param-name>
>                <param-value>session</param-value>
>        </context-param>
>
>        <!-- Trinidad has its own ViewHandler, which is a "decorating"
>                view handler - for example, it needs to wrap methods like
> renderView()
>                to perform some extra pre- and post-handling.  Facelets, on
> the other
>                hand, is more of a true ViewHandler - it actually implements
>                renderView() (yeah, it decorates too, but forget about that
>                for a second).  As a result, the world is a better place if
>                the Trinidad ViewHandler runs around the Facelets
> ViewHandler.
>                But since Facelets is registered in
> WEB-INF/faces-config.xml,
>                and Trinidad's is registered from META-INF/faces-config.xml
> in its
>                JAR, exactly the opposite happens as per the JSF spec.
>
>                Hence, the following config parameter, which Trinidad
>                exposes to allow pushing a ViewHandler inside
>                of ours.  FWIW, you retain the entire delegation stack -
>                just flipped around a bit - so that Facelets still decorates
>                the standard ViewHandler, and therefore you've still got
>                JSP support.
>        -->
>        <context-param>
>                <param-name>
>                        org.apache.myfaces.trinidad.ALTERNATE_VIEW_HANDLER
>                </param-name>
>
>  <param-value>com.sun.facelets.FaceletViewHandler</param-value>
>        </context-param>
>
>        <!-- Once you are using Facelets you are perhaps interested in
> putting some comments to your XHTML template
>                Not every component likes this, because the comments are
> interpreted as regular components and not every component likes every other
> component to be its child  -->
>        <context-param>
>                <param-name>facelets.SKIP_COMMENTS</param-name>
>                <param-value>true</param-value>
>        </context-param>
>
>        <filter>
>                <filter-name>trinidad</filter-name>
>                <filter-class>
>                        org.apache.myfaces.trinidad.webapp.TrinidadFilter
>                </filter-class>
>        </filter>
>
>        <filter-mapping>
>                <filter-name>trinidad</filter-name>
>                <servlet-name>faces</servlet-name>
>        </filter-mapping>
>
>        <!-- Faces Servlet -->
>        <servlet>
>                <servlet-name>faces</servlet-name>
>
>  <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
>        </servlet>
>
>        <!-- resource loader servlet -->
>        <servlet>
>                <servlet-name>resources</servlet-name>
>                <servlet-class>
>                        org.apache.myfaces.trinidad.webapp.ResourceServlet
>                </servlet-class>
>        </servlet>
>
>        <!-- Faces Servlet Mappings -->
>        <servlet-mapping>
>                <servlet-name>faces</servlet-name>
>                <url-pattern>/faces/*</url-pattern>
>        </servlet-mapping>
>
>        <servlet-mapping>
>                <servlet-name>faces</servlet-name>
>                <url-pattern>*.arag</url-pattern>
>        </servlet-mapping>
>
>        <servlet-mapping>
>                <servlet-name>resources</servlet-name>
>                <url-pattern>/adf/*</url-pattern>
>        </servlet-mapping>
>
>        <!-- Use documents saved as *.xhtml for Facelets -->
>        <context-param>
>                <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
>                <param-value>.jspx</param-value>
>        </context-param>
>
>        <!-- Welcome Files -->
>        <welcome-file-list>
>                <welcome-file>index.html</welcome-file>
>        </welcome-file-list>
>
> </web-app>
>
> Tobias Eisenträger
>