WebSphere 6.1 and JSF 1.2

The last week I was asked to migrate a JSF 1.2 / Seam 2.x based web app to a WebSphere 6.1 application server. I hadn’t worked with WebSphere in a while, though I knew what I had to expect.

IBM still hasn’t released a JavaEE 5 compliant product, so the 6.1 version is still on J2SE 1.4 with JSP 2.0 and Java Servlet 2.4. Also it has a built-in JSF 1.1.

The application to be migrated luckly is using facelets as its view technology otherwise I would have been screwed anyway. JSF 1.2 itself doesn’t rely on the servlet spec 2.4 so a good chance to get it done.

To run JSF 1.2 the following is required:

  1. Make sure that you WebSphere installation is at least running with fixpack 13!
  2. Create a shared library containing JSF RI 1.2 jars (jsf-api.jar, jsf-impl.jar, el-api-1.0.jar, el-impl-1.0.jar)
  3. Create a classloader with application classes loaded first and bind it to the shared library above
  4. Set the classloading policy as application classes loaded first and assign the classloader

2 Comments

  • Neil - 2009/10/02

    I’m also having issues getting JSF 1.2 / RichFaces to play nice with WebSphere 6.1. I have followed the steps above and am now at the point where I am getting the java.lang.NoClassDefFoundError listed below. I have create a shared library (with jsf-api.jar, jsf-impl.jar, el-api-1.0.jar, el-impl-1.0.jar files) along with a new server level classloader that points to it and has a policy of “load application classes first” but still getting the error. Do I also need the richfaces jar files (richfaces-api-3.3.1.GA.jar, richfaces-impl-3.3.1.GA.jar, richfaces-ui-3.3.1.GA.jar) in that shared library as well ro something else? Anywa, any hel pwould be greatly appreciated. Thanks.

    java.lang.NoClassDefFoundError: javax.servlet.jsp.tagext.JspIdConsumer
    	at java.lang.ClassLoader.defineClassImpl(Native Method)
    	at java.lang.ClassLoader.defineClass(ClassLoader.java:258)
    	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151)
    	at com.ibm.ws.classloader.CompoundClassLoader._defineClass(CompoundClassLoader.java:555)
    	at com.ibm.ws.classloader.CompoundClassLoader.findClass(CompoundClassLoader.java:506)
    	at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:389)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:597)
    	at java.lang.ClassLoader.defineClassImpl(Native Method)
    	at java.lang.ClassLoader.defineClass(ClassLoader.java:258)
    	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151)
    	at com.ibm.ws.classloader.CompoundClassLoader._defineClass(CompoundClassLoader.java:555)
    	at com.ibm.ws.classloader.CompoundClassLoader.findClass(CompoundClassLoader.java:506)
    	at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:389)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:597)
    	at java.lang.ClassLoader.defineClassImpl(Native Method)
    	at java.lang.ClassLoader.defineClass(ClassLoader.java:258)
    	at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:151)
    	at com.ibm.ws.classloader.CompoundClassLoader._defineClass(CompoundClassLoader.java:555)
    	at com.ibm.ws.classloader.CompoundClassLoader.findClass(CompoundClassLoader.java:506)
    	at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:389)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:597)
    	at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:375)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:597)
    	at com.ibm.ws.classloader.CompoundClassLoader.loadClass(CompoundClassLoader.java:375)
    	at java.lang.ClassLoader.loadClass(ClassLoader.java:597)
    	at com.ibm.ws.jsp.translator.visitor.validator.ValidateVisitor.visitCustomTagStart(ValidateVisitor.java:420)
    	at com.ibm.ws.jsp.translator.visitor.JspVisitor.processJspElement(JspVisitor.java:267)
    	at com.ibm.ws.jsp.translator.visitor.JspVisitor.processChildren(JspVisitor.java:309)
    	at com.ibm.ws.jsp.translator.visitor.JspVisitor.processJspElement(JspVisitor.java:268)
    	at com.ibm.ws.jsp.translator.visitor.JspVisitor.processChildren(JspVisitor.java:309)
    	at com.ibm.ws.jsp.translator.visitor.JspVisitor.processJspElement(JspVisitor.java:139)
    	at com.ibm.ws.jsp.translator.visitor.JspVisitor.visit(JspVisitor.java:121)
    	at com.ibm.ws.jsp.translator.JspTranslator.processVisitors(JspTranslator.java:127)
    	at com.ibm.ws.jsp.translator.utils.JspTranslatorUtil.translateJsp(JspTranslatorUtil.java:213)
    	at com.ibm.ws.jsp.translator.utils.JspTranslatorUtil.translateJspAndCompile(JspTranslatorUtil.java:99)
    	at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.translateJsp(AbstractJSPExtensionServletWrapper.java:453)
    	at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper._checkForTranslation(AbstractJSPExtensionServletWrapper.java:421)
    	at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.checkForTranslation(AbstractJSPExtensionServletWrapper.java:284)
    	at com.ibm.ws.jsp.webcontainerext.AbstractJSPExtensionServletWrapper.handleRequest(AbstractJSPExtensionServletWrapper.java:139)
    	at com.ibm.ws.webcontainer.webapp.WebAppRequestDispatcher.forward(WebAppRequestDispatcher.java:321)
    	at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:410)
    	at com.sun.faces.application.ViewHandlerImpl.executePageToBuildView(ViewHandlerImpl.java:468)
    	at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:140)
    	at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100)
    	at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176)
    	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:110)
    	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
    	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
    	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266)
    	at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1075)
    	at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1016)
    	at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:145)
    	at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:178)
    	at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290)
    	at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:368)
    	at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:495)
    	at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
    	at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
    	at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:738)
    	at com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(FilterInstanceWrapper.java:190)
    	at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:130)
    	at com.fry.mason.util.RequestSanitizerFilter.doFilter(RequestSanitizerFilter.java:31)
    	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:771)
    	at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:679)
    	at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:546)
    	at com.ibm.ws.wswebcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:478)
    	at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3391)
    	at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:267)
    	at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:811)
    	at com.ibm.ws.wswebcontainer.WebContainer.handleRequest(WebContainer.java:1455)
    	at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:115)
    	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$1.run(AsyncChannelFuture.java:205)
    	at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1473)
    
    Reply
  • Martin Ahrer - 2009/10/06

    @Neil
    Neil, I think the problem is that JSF 1.2 requires JSP 2.1 which WebSphere 6.1 does not support. However you can use JSF 1.2 with facelets!

    See also:

    http://java.sun.com/javaee/5/docs/api/javax/servlet/jsp/tagext/JspIdConsumer.html

    http://forums.sun.com/thread.jspa?threadID=5335001

    Reply

Leave a Reply

green red blue grey