Problem with Seam 2.3 tag library
jimmy68 Feb 4, 2013 11:34 AMI am trying to upgrade a Seam application to 2.3 with JSF 2, Richfaces 3.3.3, and Facelets1.1.15.B1 to run on JBoss AS 7.1.1.Final. It deploys but when the login screen loads I get the following stacktrace below. Even though I get this exception the login screen renders and I am able to login (although I have other problems afterwards).
10:22:17,532 SEVERE [facelets.compiler] (http-localhost-127.0.0.1-8280-1) Error Loading Library: vfs:/C:/Users/a814805/jboss-as-7.1.1.Final/standalone/deployments/invmgmt-gui-4.0.0.ear/invmgmt-webapp-4.0.0.war/WEB-INF/lib/jboss-seam-ui-2.3.0.Final.jar/META-INF/s.taglib.xml: java.io.IOException: Error parsing [vfs:/C:/Users/a814805/jboss-as-7.1.1.Final/standalone/deployments/invmgmt-gui-4.0.0.ear/invmgmt-webapp-4.0.0.war/WEB-INF/lib/jboss-seam-ui-2.3.0.Final.jar/META-INF/s.taglib.xml]:
at com.sun.facelets.compiler.TagLibraryConfig.create(TagLibraryConfig.java:410) [jsf-facelets-1.1.15.B1.jar:1.1.15.B1]
at com.sun.facelets.compiler.TagLibraryConfig.loadImplicit(TagLibraryConfig.java:431) [jsf-facelets-1.1.15.B1.jar:1.1.15.B1]
at com.sun.facelets.compiler.Compiler.initialize(Compiler.java:87) [jsf-facelets-1.1.15.B1.jar:1.1.15.B1]
at com.sun.facelets.compiler.Compiler.compile(Compiler.java:104) [jsf-facelets-1.1.15.B1.jar:1.1.15.B1]
at com.sun.facelets.impl.DefaultFaceletFactory.createFacelet(DefaultFaceletFactory.java:218) [jsf-facelets-1.1.15.B1.jar:1.1.15.B1]
at com.sun.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:149) [jsf-facelets-1.1.15.B1.jar:1.1.15.B1]
at com.sun.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:100) [jsf-facelets-1.1.15.B1.jar:1.1.15.B1]
at com.sun.facelets.FaceletViewHandler.buildView(FaceletViewHandler.java:517) [jsf-facelets-1.1.15.B1.jar:1.1.15.B1]
at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:567) [jsf-facelets-1.1.15.B1.jar:1.1.15.B1]
at org.ajax4jsf.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:100) [richfaces-api-3.3.3.Final.jar:3.3.3.Final]
at org.ajax4jsf.application.AjaxViewHandler.renderView(AjaxViewHandler.java:176) [richfaces-impl-jsf2-3.3.3.Final.jar:3.3.3.Final]
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121) [jsf-impl-2.1.7-jbossorg-2.jar:]
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl-2.1.7-jbossorg-2.jar:]
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) [jsf-impl-2.1.7-jbossorg-2.jar:]
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) [jboss-jsf-api_2.1_spec-2.0.1.Final.jar:2.0.1.Final]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
at org.ajax4jsf.webapp.BaseXMLFilter.doXmlFilter(BaseXMLFilter.java:206) [richfaces-impl-jsf2-3.3.3.Final.jar:3.3.3.Final]
at org.ajax4jsf.webapp.BaseFilter.handleRequest(BaseFilter.java:290) [richfaces-impl-jsf2-3.3.3.Final.jar:3.3.3.Final]
at org.ajax4jsf.webapp.BaseFilter.processUploadsAndHandleRequest(BaseFilter.java:388) [richfaces-impl-jsf2-3.3.3.Final.jar:3.3.3.Final]
at org.ajax4jsf.webapp.BaseFilter.doFilter(BaseFilter.java:515) [richfaces-impl-jsf2-3.3.3.Final.jar:3.3.3.Final]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83) [jboss-seam.jar:2.3.0.Final]
at org.jboss.seam.web.LoggingFilter.doFilter(LoggingFilter.java:60) [jboss-seam.jar:2.3.0.Final]
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) [jboss-seam.jar:2.3.0.Final]
at gui.shared.util.timing.TimingFilter.doFilter(TimingFilter.java:39) [gui-shared-lib-2.1.1.jar:]
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) [jboss-seam.jar:2.3.0.Final]
at org.jboss.seam.web.IdentityFilter.doFilter(IdentityFilter.java:40) [jboss-seam.jar:2.3.0.Final]
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) [jboss-seam.jar:2.3.0.Final]
at org.jboss.seam.web.MultipartFilter.doFilter(MultipartFilter.java:90) [jboss-seam.jar:2.3.0.Final]
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) [jboss-seam.jar:2.3.0.Final]
at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64) [jboss-seam.jar:2.3.0.Final]
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) [jboss-seam.jar:2.3.0.Final]
at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45) [jboss-seam.jar:2.3.0.Final]
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) [jboss-seam.jar:2.3.0.Final]
at org.jboss.seam.web.HotDeployFilter.doFilter(HotDeployFilter.java:53) [jboss-seam.jar:2.3.0.Final]
at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69) [jboss-seam.jar:2.3.0.Final]
at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158) [jboss-seam.jar:2.3.0.Final]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:280) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.13.Final.jar:]
at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:153) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.13.Final.jar:]
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.13.Final.jar:]
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.13.Final.jar:]
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.13.Final.jar:]
at java.lang.Thread.run(Unknown Source) [rt.jar:1.7.0_05]
Caused by: org.xml.sax.SAXException: Error Handling [vfs:/C:/Users/a814805/jboss-as-7.1.1.Final/standalone/deployments/invmgmt-gui-4.0.0.ear/invmgmt-webapp-4.0.0.war/WEB-INF/lib/jboss-seam-ui-2.3.0.Final.jar/META-INF/s.taglib.xml@4,178]
at com.sun.facelets.compiler.TagLibraryConfig$LibraryHandler.error(TagLibraryConfig.java:376) [jsf-facelets-1.1.15.B1.jar:1.1.15.B1]
at org.apache.xerces.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:135)
at org.apache.xerces.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:390)
at org.apache.xerces.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:322)
at org.apache.xerces.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:281)
at org.apache.xerces.impl.dtd.XMLDTDValidator.rootElementSpecified(XMLDTDValidator.java:1643)
at org.apache.xerces.impl.dtd.XMLDTDValidator.handleStartElement(XMLDTDValidator.java:1921)
at org.apache.xerces.impl.dtd.XMLDTDValidator.startElement(XMLDTDValidator.java:786)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:827)
at org.apache.xerces.impl.XMLDocumentScannerImpl$ContentDispatcher.scanRootElementHook(XMLDocumentScannerImpl.java:1141)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.dispatch(XMLDocumentFragmentScannerImpl.java:1754)
at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:324)
at org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java:845)
at org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java:768)
at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:108)
at org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1196)
at org.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:555)
at org.apache.xerces.jaxp.SAXParserImpl.parse(SAXParserImpl.java:289)
at javax.xml.parsers.SAXParser.parse(Unknown Source) [rt.jar:1.7.0_05]
at com.sun.facelets.compiler.TagLibraryConfig.create(TagLibraryConfig.java:407) [jsf-facelets-1.1.15.B1.jar:1.1.15.B1]
... 52 more
EAR configuration:
EAR
jboss-seam.jar
- lib
- antlr-runtime-3.3.jar
- commons-beanutils-1.7.0.jar
- commons-collections-3.2.jar
- commons-digester-1.8.jar
- commons-lang-2.1.jar
- drools-compiler-5.3.3.Final.jar
- drools-core-5.3.3.Final.jar
- drools-decisiontables-5.3.3.Final.jar
- ecj-3.5.1.jar
- guava-12.0.jar
- janino-2.5.10.jar
- jboss-el-1.0_02.CR6.jar
- jbpm-jpdl-3.2.2.jar
- jsr173_api-1.0.jar
- knowledge-api-5.3.3.Final.jar
- mvel-2.1.0.jar
- richfaces-api-3.3.3.Final.jar
- richfaces-impl-jsf2-3.3.3.Final.jar
WEBAPP
- WEB-INF
- lib
- commons-beanutils-1.7.0.jar
- commons-collections-3.2.jar
- commons-digester-1.8.jar
- commons-lang-2.1.jar
- cssparser-0.9.5.jar
- guava-12.0.jar
- jboss-seam-debug-2.3.0.Final.jar
- jboss-seam-ui- 2.3.0.Final.jar
- jsf-facelets-1.1.15.B1.jar
- jsr305-1.3.9.jar
- jstl-1.0.jar
- richfaces-api-3.3.3.Final.jar
- richfaces-impl-jsf2-3.3.3.Final.jar
- sac-1.3.jar
jboss-structure.xml:
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
<deployment>
<dependencies>
<module name="org.apache.log4j" export="true"/>
<module name="org.dom4j" export="true"/>
<module name="org.apache.commons.logging" export="true"/>
<module name="org.apache.commons.collections" export="true"/>
<module name="javax.faces.api" export="true"/>
<module name="javax.ejb.api"/>
<module name="org.picketbox"/>
</dependencies>
</deployment>
</jboss-deployment-structure>
components.xml:
<?xml version="1.0" encoding="UTF-8"?>
<components xmlns="http://jboss.org/schema/seam/components"
xmlns:core="http://jboss.org/schema/seam/core"
xmlns:security="http://jboss.org/schema/seam/security"
xmlns:components="http://jboss.org/schema/seam/components"
xmlns:bpm="http://jboss.org/schema/seam/bpm"
xmlns:persistence="http://jboss.org/schema/seam/persistence"
xmlns:transaction="http://jboss.org/schema/seam/transaction"
xmlns:web="http://jboss.org/schema/seam/web"
xmlns:international="http://jboss.org/schema/seam/international"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:excel="http://jboss.org/schema/seam/excel"
xmlns:drools="http://jboss.org/schema/seam/drools"
xsi:schemaLocation="http://jboss.org/schema/seam/core http://jboss.org/schema/seam/core-2.3.xsd
http://jboss.org/schema/seam/security http://jboss.org/schema/seam/security-2.3.xsd
http://jboss.org/schema/seam/components http://jboss.org/schema/seam/components-2.3.xsd
http://jboss.org/schema/seam/bpm http://jboss.org/schema/seam/bpm-2.3.xsd
http://jboss.org/schema/seam/transaction http://jboss.org/schema/seam/transaction-2.3.xsd
http://jboss.org/schema/seam/transaction http://jboss.org/schema/seam/web-2.3.xsd
http://jboss.org/schema/seam/persistence http://jboss.org/schema/seam/persistence-2.3.xsd
http://jboss.org/schema/seam/international http://jboss.org/schema/seam/international-2.3.xsd
http://jboss.org/schema/seam/excel http://jboss.org/schema/seam/excel-2.3.xsd
http://jboss.org/schema/seam/drools http://jboss.org/schema/seam/drools-2.3.xsd">
<!-- 120 second conversation timeout -->
<core:manager conversation-timeout="120000" concurrent-request-timeout="10000" conversation-id-parameter="cid" />
<core:init jndi-pattern="java:app/inv-mgmt-app-4.0.0/#{ejbName}" debug="true" distributable="false" transaction-management-enabled="false" />
<persistence:managed-persistence-context name="entityManager" auto-create="true" persistence-unit-jndi-name="java:/InvMgmtSessionFactory" />
<transaction:ejb-transaction/>
<security:identity jaas-config-name="inv-mgmt" />
<event type="org.jboss.seam.notLoggedIn">
<action execute="#{redirect.captureCurrentView}" />
</event>
<event type="org.jboss.seam.postAuthenticate">
<action execute="#{redirect.returnToCapturedView}" />
</event>
<drools:rule-base name="securityRules">
<drools:rule-files>
<value>/META-INF/security.drl</value>
</drools:rule-files>
</drools:rule-base>
<component class="org.jboss.seam.transaction.EjbSynchronizations" jndi-name="java:app/jboss-seam/EjbSynchronizations"/>
<component class="org.jboss.seam.async.TimerServiceDispatcher" jndi-name="java:app/jboss-seam/TimerServiceDispatcher"/>
</components>
faces-config.xml:
<?xml version='1.0' encoding='UTF-8'?>
<faces-config version="2.3"
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-facesconfig_2_3.xsd">
<locale-config>
<default-locale>en</default-locale>
</locale-config>
<application>
<view-handler>org.ajax4jsf.application.AjaxViewHandler</view-handler>
</application>
</faces-config>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
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_3_0.xsd">
<display-name>Investment Management
GUI</display-name>
<!-- Seam -->
<listener>
<listener-class>org.jboss.seam.servlet.SeamListener</listener-class>
</listener>
<servlet>
<servlet-name>Seam Resource Servlet</servlet-name>
<servlet-class>org.jboss.seam.servlet.SeamResourceServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Seam Resource Servlet</servlet-name>
<url-pattern>/seam/resource/*</url-pattern>
</servlet-mapping>
<filter>
<filter-name>Seam Filter</filter-name>
<filter-class>org.jboss.seam.servlet.SeamFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Seam Filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--Configuration for Richfaces-->
<filter>
<display-name>RichFaces Filter</display-name>
<filter-name>richfaces</filter-name>
<filter-class>org.ajax4jsf.Filter</filter-class>
</filter>
<filter-mapping>
<filter-name>richfaces</filter-name>
<servlet-name>Faces Servlet</servlet-name>
<dispatcher>REQUEST</dispatcher>
<dispatcher>FORWARD</dispatcher>
<dispatcher>INCLUDE</dispatcher>
</filter-mapping>
<context-param>
<param-name>org.richfaces.enableControlSkinning</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>org.richfaces.SKIN</param-name>
<param-value>invMgmt</param-value>
</context-param>
<!-- JSF -->
<context-param>
<param-name>javax.faces.DEFAULT_SUFFIX</param-name>
<param-value>.xhtml</param-value>
</context-param>
<context-param>
<param-name>facelets.VIEW_MAPPINGS</param-name>
<param-value>*.xhtml</param-value>
</context-param>
<context-param>
<param-name>facelets.SKIP_COMMENTS</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>org.ajax4jsf.VIEW_HANDLERS</param-name>
<param-value>com.sun.facelets.FaceletViewHandler</param-value>
</context-param>
<context-param>
<param-name>javax.faces.DISABLE_FACELET_JSF_VIEWHANDLER</param-name>
<param-value>true</param-value>
</context-param>
<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>*.seam</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>10</session-timeout>
</session-config>
</web-app>
When I look in the jboss-seam-ui-2.3.0.Final.jar and open the s.taglib.xml I see that the schema is version 2.0. I think that the facelets compiler cannot parse version 2.0. I noticed that previous versions of seam had version 1.0.
<?xml version="1.0" encoding="UTF-8"?>
<facelet-taglib id="s" version="2.0"
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-facelettaglibrary_2_0.xsd">
<namespace>http://jboss.org/schema/seam/taglib</namespace>
I am considering trying to see if the app can work using JSF 1.2 but I have spent considerable time trying to get this configuration to work.
Thanks for any help on this!