13 Replies Latest reply on Feb 4, 2013 12:27 PM by izan

    org.apache.xerces.jaxp.DocumentBuilderFactoryImpl cannot be cast to  javax.xml.parsers.DocumentBuilderFactory after removing xercesimpl.jar from WAR

    anithakothandapani

      Hi

      I am using Jboss 5.1.0GA , Open Jdk 1.6

       

      I have xercesimpl.jar in my war. I got the following error during deployment

       

       

      Caused by: org.jboss.xb.binding.JBossXBException: Failed to create a new SAX parser
          at org.jboss.xb.binding.parser.sax.SaxJBossXBParser.<init>(SaxJBossXBParser.java:97)
          at org.jboss.xb.binding.UnmarshallerImpl.<init>(UnmarshallerImpl.java:56)
          at org.jboss.xb.binding.UnmarshallerFactory$UnmarshallerFactoryImpl.newUnmarshaller(UnmarshallerFactory.java:96)
          ... 73 more
      Caused by: java.lang.ClassCastException: org.apache.xerces.parsers.XIncludeAwareParserConfiguration cannot be cast to org.apache.xerces.xni.parser.XMLParserConfiguration
          at org.apache.xerces.parsers.SAXParser.<init>(Unknown Source)
          at org.apache.xerces.parsers.SAXParser.<init>(Unknown Source)
      

       

      To resolve that I removed xercesimpl.jar from my war . But now I am getting the different error as given below

       

       

      2010-05-19 11:28:26,473 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/AdminWebApp]] (main) Exception sending context initialized event to listener instance of class org.jboss.web.jsf.integration.config.JBossJSFConfigureListener
      java.lang.ClassCastException: com.bluecast.xml.JAXPSAXParserFactory cannot be cast to javax.xml.parsers.SAXParserFactory
          at javax.xml.parsers.SAXParserFactory.newInstance(SAXParserFactory.java:128)
          at com.sun.faces.config.ConfigureListener$WebXmlProcessor.getConfiguredFactory(ConfigureListener.java:698)
          at com.sun.faces.config.ConfigureListener$WebXmlProcessor.scanForFacesServlet(ConfigureListener.java:670)
          at com.sun.faces.config.ConfigureListener$WebXmlProcessor.<init>(ConfigureListener.java:644)
      2010-05-19 11:28:26,520 ERROR [STDERR] (main) javax.servlet.ServletException: java.lang.ClassCastException
      : org.apache.xerces.jaxp.DocumentBuilderFactoryImpl cannot be cast to javax.xml.parsers.DocumentBuilderFac
      tory
      2010-05-19 11:28:31,660 INFO  [STDOUT] (main) 11:28:31,660 ERROR  [ContextLoader] Context initialization failed
       org.springframework.beans.factory.BeanDefinitionStoreException:  Unexpected exception parsing XML document from ServletContext resource  [/WEB-INF/spring-conf/application-service.xml]; nested exception is  java.lang.ClassCastException:  org.apache.xerces.jaxp.DocumentBuilderFactoryImpl cannot be cast to  javax.xml.parsers.DocumentBuilderFactory
           at  org.springframework.beans.factory.xml.XmlBeanDefinitionReader.doLoadBeanDefinitions(XmlBeanDefinitionReader.java:420)
           at  org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:342)
           at  org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:310)
           at  org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:143)
           at  org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:178)
           at  org.springframework.beans.factory.support.AbstractBeanDefinitionReader.loadBeanDefinitions(AbstractBeanDefinitionReader.java:149)
           at  org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:124)
           at  org.springframework.web.context.support.XmlWebApplicationContext.loadBeanDefinitions(XmlWebApplicationContext.java:92)
      

       

       

      Please help me to resolve this issue..

        • 1. Re: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl cannot be cast to  javax.xml.parsers.DocumentBuilderFactory after removing xercesimpl.jar from WAR
          jaikiran

          Do you have any jar(s) containing  javax.xml.parsers.* classes in your application? If yes, remove those jars from your application packaging.

          • 2. Re: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl cannot be cast to  javax.xml.parsers.DocumentBuilderFactory after removing xercesimpl.jar from WAR
            anithakothandapani

            Thanks for your reply . yes. xml-apis.jar ,xmlbeans-qname.jar,piccolo.jar are the jars . Is it possible to resolve this issue without removing these jars.

             

            And even if I try by removing the three jars mentioned above  I get the following errors

             

             

             

            2010-05-19 14:43:57,514 ERROR [STDERR] (main) log4j:ERROR A "org.jboss.logging.appender.FileAppender" object is not assignable to a "org.apache.log4j.Appender" variable.
            2010-05-19 14:43:57,514 ERROR [STDERR] (main) log4j:ERROR The class "org.apache.log4j.Appender" was loaded by 
            2010-05-19 14:43:57,514 ERROR [STDERR] (main) log4j:ERROR [BaseClassLoader@178d35f{vfsfile:/C:/jboss-5.1.0.GA/server/default/deploy/AdminWebApp.war/}] whereas object of type
            2010-05-19 14:43:57,905 INFO  [STDOUT] (main) 14:43:57,874 ERROR [JaxBConfigurationManager] JAXB Exception occured while unmurshalling.
            javax.xml.bind.JAXBException
             - with linked exception:
            [java.lang.LinkageError: loader constraint violation in interface itable initialization: when resolving method "com.sun.xml.bind.DatatypeConverterImpl.parseQName(Ljava/lang/String;Ljavax/xml/namespace/NamespaceContext;)Ljavax/xml/namespace/QName;" the class loader (instance of org/jboss/classloader/spi/base/BaseClassLoader) of the current class, com/sun/xml/bind/DatatypeConverterImpl, and the class loader (instance of <bootloader>) for interface javax/xml/bind/DatatypeConverterInterface have different Class objects for the type javax/xml/namespace/NamespaceContext used in the signature]
            
            • 3. Re: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl cannot be cast to  javax.xml.parsers.DocumentBuilderFactory after removing xercesimpl.jar from WAR
              anithakothandapani

              After seeing https://jira.jboss.org/browse/JBAS-7210 ,I understand that this seems to be a bug in Jboss 5.1.0 GA and it got fixed in jboss 6.0.0.M2  ,

               

              But I want to know whether I can fix this by applying any patch which is readily availble for Jboss 5.1.0 GA ?

              • 4. Re: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl cannot be cast to  javax.xml.parsers.DocumentBuilderFactory after removing xercesimpl.jar from WAR
                jaikiran

                Anitha Kothandapani wrote:


                 

                But I want to know whether I can fix this by applying any patch which is readily availble for Jboss 5.1.0 GA ?

                You can checkout AS 5.1.0 from tag then apply the patch from here http://fisheye.jboss.org/rdiff/JBossAS?csid=97418&u&N and rebuild the AS.

                • 5. Re: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl cannot be cast to  javax.xml.parsers.DocumentBuilderFactory after removing xercesimpl.jar from WAR
                  ohmygod

                  Hi jaikiran,

                   

                  Could you please confirm if this patch can also resolve this classcast exception?

                   

                  java.lang.ClassCastException: org.apache.xerces.jaxp.SAXParserFactoryImpl cannot be cast to javax.xml.parsers.SAXParserFactory

                  • 6. Re: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl cannot be cast to  javax.xml.parsers.DocumentBuilderFactory after removing xercesimpl.jar from WAR
                    jaikiran

                    Probably yes. I personally haven't given it a try.

                    • 7. Re: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl cannot be cast to  javax.xml.parsers.DocumentBuilderFactory after removing xercesimpl.jar from WAR
                      ohmygod

                      Could you give me this binary patch based on 5.1.0 GA? I really do not know how to get the source code and do a re-build of 5.1.0. If you can do that for me or guide me how to do this, I will thank you really from my heart.

                      • 8. Re: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl cannot be cast to  javax.xml.parsers.DocumentBuilderFactory after removing xercesimpl.jar from WAR
                        jaikiran

                        mike just wrote:

                         

                        I really do not know how to get the source code and do a re-build of 5.1.0. If you can do that for me or guide me how to do this

                        1) Checkout AS 5.1.0 from tag http://anonsvn.jboss.org/repos/jbossas/tags/JBoss_5_1_0_GA/
                        2) Build the AS as per the instructions here http://community.jboss.org/wiki/jbossasbuild (section JBossAS 5.x and Earlier versions)
                        3) Once the AS is built, just run it once to make sure everything  is fine.

                        4) Apply this patch http://fisheye.jboss.org/rdiff/JBossAS?csid=97418&u&N on the AS source code

                        5) Repeat step#2.

                         

                        If you have any problem building the server, please create a separate thread with the details.

                        • 9. Re: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl cannot be cast to  javax.xml.parsers.DocumentBuilderFactory after removing xercesimpl.jar from WAR
                          maltiyadav

                          Hi Anitha,

                           

                          have u got any solution for the error,because i am also getting same issue.

                          Is applying patch solving the issue?

                          please let me know i am also stuck with same kind or error.

                           

                          Thanks.

                          • 11. Re: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl cannot be cast to  javax.xml.parsers.DocumentBuilderFactory after removing xercesimpl.jar from WAR
                            erico.mtx

                            Hello

                             

                            I am trying to run myfaces-example-simple20-1.1.11 in a JBoss 5.1.0 and have followed all the instructions from the links provided in the past replies but I am getting at this point so far :

                             

                             

                            Error: javax.faces.application.Application.createComponent(Ljavax/faces/context/FacesContext;Ljava/lang/String;Ljava/lang/String;)Ljavax/faces/component/UIComponent;

                             

                            I have tried several changes in the deployment descriptor and removing myfaces and el jar files from the project but none worked

                             

                            my web.xml is as follows :

                             

                            <?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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5">

                              <description>debug web.xml</description>

                              <context-param>

                                <description>Comma separated list of URIs of (additional) faces config files.

                                        (e.g. /WEB-INF/my-config.xml)

                                        See JSF 1.0 PRD2, 10.3.2

                                        Attention: You do not need to put /WEB-INF/faces-config.xml in here.

                                </description>

                                <param-name>javax.faces.CONFIG_FILES</param-name>

                                <param-value>/WEB-INF/examples-config.xml,/WEB-INF/testSuite-config.xml</param-value>

                              </context-param>

                             

                              <context-param>

                                <description>State saving method: "client" or "server" (= default)

                                        See JSF Specification 2.5.3</description>

                                <param-name>javax.faces.STATE_SAVING_METHOD</param-name>

                                <param-value>server</param-value>

                              </context-param>

                             

                              <context-param>

                                <description>Only applicable if state saving method is "server" (= default).

                                        Defines the amount (default = 20) of the latest views are stored in session.</description>

                                <param-name>org.apache.myfaces.NUMBER_OF_VIEWS_IN_SESSION</param-name>

                                <param-value>20</param-value>

                              </context-param>

                             

                              <context-param>

                                <description>Only applicable if state saving method is "server" (= default).

                                        If true (default) the state will be serialized to a byte stream before it

                                        is written to the session.

                                        If false the state will not be serialized to a byte stream.</description>

                                <param-name>org.apache.myfaces.SERIALIZE_STATE_IN_SESSION</param-name>

                                <param-value>true</param-value>

                              </context-param>

                             

                              <context-param>

                                <description>Only applicable if state saving method is "server" (= default) and if

                                        org.apache.myfaces.SERIALIZE_STATE_IN_SESSION is true (= default)

                                        If true (default) the serialized state will be compressed before it

                                        is written to the session. If false the state will not be compressed.</description>

                                <param-name>org.apache.myfaces.COMPRESS_STATE_IN_SESSION</param-name>

                                <param-value>true</param-value>

                              </context-param>

                             

                              <context-param>

                                <description>This parameter tells MyFaces if javascript code should be allowed in the

                                        rendered HTML output.

                                        If javascript is allowed, command_link anchors will have javascript code

                                        that submits the corresponding form.

                                        If javascript is not allowed, the state saving info and nested parameters

                                        will be added as url parameters.

                                        Default: "true"</description>

                                <param-name>org.apache.myfaces.ALLOW_JAVASCRIPT</param-name>

                                <param-value>true</param-value>

                              </context-param>

                             

                              <context-param>

                                <param-name>org.apache.myfaces.DETECT_JAVASCRIPT</param-name>

                                <param-value>false</param-value>

                              </context-param>

                             

                              <context-param>

                                <description>If true, rendered HTML code will be formatted, so that it is "human readable".

                                        i.e. additional line separators and whitespace will be written, that do not

                                        influence the HTML code.

                                        Default: "true"</description>

                                <param-name>org.apache.myfaces.PRETTY_HTML</param-name>

                                <param-value>true</param-value>

                              </context-param>

                             

                              <context-param>

                                <description>If true, a javascript function will be rendered that is able to restore the

                                        former vertical scroll on every request. Convenient feature if you have pages

                                        with long lists and you do not want the browser page to always jump to the top

                                        if you trigger a link or button action that stays on the same page.

                                        Default: "false"</description>

                                <param-name>org.apache.myfaces.AUTO_SCROLL</param-name>

                                <param-value>true</param-value>

                              </context-param>

                             

                                <context-param>

                                      <description>

                                          Validate managed beans, navigation rules and ensure that forms are not nested.

                                      </description>

                                       <param-name>org.apache.myfaces.VALIDATE</param-name>

                                       <param-value>true</param-value>

                                </context-param>

                             

                              <context-param>

                                <description>A class implementing the

                                        org.apache.myfaces.shared.renderkit.html.util.AddResource

                                        interface. It is responsible to

                                           place scripts and css on the right position in your HTML document.

                                        Default: "org.apache.myfaces.shared.renderkit.html.util.DefaultAddResource"

                                        Follow the description on the MyFaces-Wiki-Performance page to enable

                                        StreamingAddResource instead of DefaultAddResource if you want to

                                        gain performance.

                                </description>

                                <param-name>org.apache.myfaces.ADD_RESOURCE_CLASS</param-name>

                                <!-- param-value>org.apache.myfaces.renderkit.html.util.DefaultAddResource</param-value -->

                                <param-value>org.apache.myfaces.renderkit.html.util.NonBufferingAddResource</param-value>

                                <!--param-value>org.apache.myfaces.component.html.util.StreamingAddResource</param-value -->

                              </context-param>

                             

                             

                              <context-param>

                                <param-name>org.apache.myfaces.DISABLE_TOMAHAWK_FACES_CONTEXT_WRAPPER</param-name>

                                <param-value>false</param-value>

                              </context-param>

                             

                             

                              <context-param>

                                <description>

                                    A very common problem in configuring MyFaces-web-applications

                                    is that the Extensions-Filter is not configured at all

                                    or improperly configured. This parameter will check for a properly

                                    configured Extensions-Filter if it is needed by the web-app.

                                    In most cases this check will work just fine, there might be cases

                                    where an internal forward will bypass the Extensions-Filter and the check

                                    will not work. If this is the case, you can disable the check by setting

                                    this parameter to false.

                                </description>

                                <param-name>org.apache.myfaces.CHECK_EXTENSIONS_FILTER</param-name>

                                <param-value>true</param-value>

                              </context-param>

                               

                                 <!-- JBossEL -->

                                <context-param>

                                    <param-name>org.apache.myfaces.EXPRESSION_FACTORY</param-name>

                                    <param-value>org.jboss.el.ExpressionFactoryImpl</param-value>

                                </context-param>

                               

                              <context-param>

                                <param-name>javax.faces.PROJECT_STAGE</param-name>

                                <param-value>Development</param-value>

                              </context-param>

                             

                              <context-param>

                                <param-name>org.apache.myfaces.USE_MULTIPLE_JS_FILES_FOR_JSF_UNCOMPRESSED_JS</param-name>

                                <param-value>true</param-value>

                              </context-param>

                             

                              

                              <context-param>

                                <param-name>org.jboss.jbossfaces.WAR_BUNDLES_JSF_IMPL</param-name>

                                <param-value>true</param-value>

                              </context-param>

                             

                              <listener>

                                <listener-class>com.sun.faces.config.ConfigureListener</listener-class>

                              </listener>

                             

                              <filter>

                                <filter-name>extensionsFilter</filter-name>

                                <filter-class>org.apache.myfaces.webapp.filter.ExtensionsFilter</filter-class>

                                <init-param>

                                  <description>Set the size limit for uploaded files.

                                            Format: 10 - 10 bytes

                                                    10k - 10 KB

                                                    10m - 10 MB

                                                    1g - 1 GB</description>

                                  <param-name>uploadMaxFileSize</param-name>

                                  <param-value>100m</param-value>

                                </init-param>

                                <init-param>

                                  <description>Set the threshold size - files

                                                below this limit are stored in memory, files above

                                                this limit are stored on disk.

                             

                                            Format: 10 - 10 bytes

                                                    10k - 10 KB

                                                    10m - 10 MB

                                                    1g - 1 GB</description>

                                  <param-name>uploadThresholdSize</param-name>

                                  <param-value>100k</param-value>

                                </init-param>

                              </filter>

                              <filter-mapping>

                                <filter-name>extensionsFilter</filter-name>

                                <url-pattern>*.jsf</url-pattern>

                              </filter-mapping>

                              <filter-mapping>

                                <filter-name>extensionsFilter</filter-name>

                                <url-pattern>/faces/*</url-pattern>

                              </filter-mapping>

                             

                             

                              <servlet>

                                <servlet-name>Faces Servlet</servlet-name>

                                <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>

                                <load-on-startup>1</load-on-startup>

                              </servlet>

                             

                              <servlet>

                                <servlet-name>SourceCodeServlet</servlet-name>

                                <servlet-class>org.apache.myfaces.examples.webapp.SourceCodeServlet</servlet-class>

                              </servlet>

                             

                             

                              <servlet-mapping>

                                <servlet-name>Faces Servlet</servlet-name>

                                <url-pattern>*.jsf</url-pattern>

                              </servlet-mapping>

                             

                              <servlet-mapping>

                                <servlet-name>Faces Servlet</servlet-name>

                                <url-pattern>/faces/*</url-pattern>

                              </servlet-mapping>

                             

                              <servlet-mapping>

                                <servlet-name>SourceCodeServlet</servlet-name>

                                <url-pattern>*.source</url-pattern>

                              </servlet-mapping>

                             

                              <welcome-file-list>

                                <welcome-file>index.html</welcome-file>

                              </welcome-file-list>

                            </web-app>

                             

                            I have also created a jboss-classloading.xml in WEB-INF directory in my war file with the following content :

                             

                                <classloading xmlns="urn:jboss:classloading:1.0" 

                                              name="myfaces-example-simple20-1.1.11.war" 

                                              domain="localhost">

                                

                                              parent-domain="Ignored"

                                 

                                              export-all="NON_EMPTY" 

                                              import-all="true"> 

                                </classloading>

                             

                            Can you guys help us out on this ?

                             

                            Thks

                            Érico

                            • 12. Re: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl cannot be cast to  javax.xml.parsers.DocumentBuilderFactory after removing xercesimpl.jar from WAR
                              rise.uday

                              you need to ensure that you donot have any library in your war which contains package javax.xml.parsers; the jboss-classloading.xml you have created is in-correct.

                              • 13. Re: org.apache.xerces.jaxp.DocumentBuilderFactoryImpl cannot be cast to  javax.xml.parsers.DocumentBuilderFactory after removing xercesimpl.jar from WAR
                                izan

                                Hi,

                                 

                                I've been trying to apply this patch to the tagged version, but it's nowhere to be found. Could you please point to it current location or how to obtain it?

                                 

                                Appreciate it!