2012-12-23 8 views
8

मैं Omnifaces 1.3 + प्राइमफ़ेस 3.4.1 + Jboss 7.1.1 फ़ाइनल का उपयोग कर रहा हूं लेकिन मैं बस नहीं कर सकता अजेक्स अनुरोध द्वारा आने पर web.xml पर कॉन्फ़िगर किए गए FullAjaxExceptionHandler के साथ अपवादों को पुनर्निर्देशित करें। कुछ भी नहीं होता, बस एक और अपवाद:java.lang.AbstractMethodError: org.apache.xerces.dom.ElementImpl.getTextContent() Ljava/lang/स्ट्रिंग

19:38:05,467 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/taxMileage].[Faces Servlet]] (http--0.0.0.0-8181-4) Servlet.service() for servlet Faces Servlet threw exception: java.lang.AbstractMethodError: org.apache.xerces.dom.ElementImpl.getTextContent()Ljava/lang/String; 
    at org.omnifaces.config.WebXml.parseErrorPageLocations(WebXml.java:216) [omnifaces-1.3.jar:1.3] 
    at org.omnifaces.config.WebXml.<init>(WebXml.java:84) [omnifaces-1.3.jar:1.3] 
    at org.omnifaces.config.WebXml.<clinit>(WebXml.java:53) [omnifaces-1.3.jar:1.3] 
    at org.omnifaces.exceptionhandler.FullAjaxExceptionHandler.handleAjaxException(FullAjaxExceptionHandler.java:162) [omnifaces-1.3.jar:1.3] 
    at org.omnifaces.exceptionhandler.FullAjaxExceptionHandler.handle(FullAjaxExceptionHandler.java:145) [omnifaces-1.3.jar:1.3] 
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:119) [jsf-impl-2.1.7-jbossorg-2.jar:] 
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) [jsf-impl-2.1.7-jbossorg-2.jar:] 

क्या कोई मुझे इस बारे में एक सुझाव दे सकता है? मैं फँस गया हूँ। अगर मैं AJAX के बिना एक ही त्रुटि को कॉल करता हूं तो अपवाद को सही तरीके से रीडायरेक्ट किया जाता है।

मेरे web.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" 
    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_3_0.xsd" 
    id="WebApp_ID" version="3.0" 
> 
    <display-name>taxMileage</display-name> 
    <welcome-file-list> 
     <welcome-file>/pages/protected/user/dashboard.xhtml</welcome-file> 
    </welcome-file-list> 
    <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>InitializeApplication</servlet-name> 
     <servlet-class>com.taxMileage.server.util.InitializeApplication</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 
    <context-param> 
     <param-name>primefaces.THEME</param-name> 
     <param-value>south-street</param-value> 
    </context-param> 
    <filter> 
     <filter-name>PrimeFaces FileUpload Filter</filter-name> 
     <filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class> 
    </filter> 
    <filter-mapping> 
     <filter-name>PrimeFaces FileUpload Filter</filter-name> 
     <servlet-name>Faces Servlet</servlet-name> 
    </filter-mapping> 
    <filter> 
     <filter-name>facesExceptionFilter</filter-name> 
     <filter-class>org.omnifaces.filter.FacesExceptionFilter</filter-class> 
    </filter> 
    <filter-mapping> 
     <filter-name>facesExceptionFilter</filter-name> 
     <servlet-name>Faces Servlet</servlet-name> 
    </filter-mapping> 

    <servlet-mapping> 
     <servlet-name>Faces Servlet</servlet-name> 
     <url-pattern>/faces/*</url-pattern> 
     <url-pattern>*.jsf</url-pattern> 
     <url-pattern>*.xhtml</url-pattern> 
    </servlet-mapping> 

    <servlet-mapping> 
     <servlet-name>javax.ws.rs.core.Application</servlet-name> 
     <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 

    <!-- --> 

    <!-- Protected area definition --> 
    <security-constraint> 
     <web-resource-collection> 
      <web-resource-name>Restricted Area - ADMIN Only</web-resource-name> 
      <url-pattern>/pages/protected/admin/*</url-pattern> 
     </web-resource-collection> 
     <auth-constraint> 
      <role-name>ADMIN</role-name> 
     </auth-constraint> 
    </security-constraint> 
    <security-constraint> 
     <web-resource-collection> 
      <web-resource-name>Restricted Area - USER and ADMIN</web-resource-name> 
      <url-pattern>/pages/protected/user/*</url-pattern> 
     </web-resource-collection> 
     <auth-constraint> 
      <role-name>USER</role-name> 
      <role-name>ADMIN</role-name> 
     </auth-constraint> 
    </security-constraint> 
    <security-constraint> 
     <web-resource-collection> 
      <web-resource-name>Secured resources</web-resource-name> 
      <url-pattern>/rest/*</url-pattern> 
     </web-resource-collection> 
     <user-data-constraint> 
      <transport-guarantee>NONE</transport-guarantee> 
     </user-data-constraint> 
    </security-constraint> 

    <!-- Login page --> 
    <login-config> 
     <auth-method>FORM</auth-method> 
     <form-login-config> 
      <form-login-page>/pages/public/login.xhtml</form-login-page> 
      <form-error-page>/pages/public/loginError.xhtml</form-error-page> 
     </form-login-config> 
    </login-config> 

    <!-- System roles --> 
    <security-role> 
     <role-name>ADMIN</role-name> 
    </security-role> 
    <security-role> 
     <role-name>USER</role-name> 
    </security-role> 

    <error-page> 
     <exception-type>java.lang.RuntimeException</exception-type> 
     <location>/pages/error/error1.xhtml</location> 
    </error-page> 
</web-app> 

मेरे faces-config.xml:

<?xml version="1.0" encoding="UTF-8"?> 

<faces-config 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_1.xsd" 
    version="2.1"> 

    <lifecycle> 
     <phase-listener>com.taxMileage.server.util.MultiPageMessagesSupport</phase-listener> 
    </lifecycle> 

    <factory> 
     <exception-handler-factory>org.omnifaces.exceptionhandler.FullAjaxExceptionHandlerFactory</exception-handler-factory> 
    </factory> 

    <application> 
     <resource-bundle> 
      <base-name>messages</base-name> 
      <var>msgs</var> 
     </resource-bundle> 
    </application> 
</faces-config> 

धन्यवाद!

उत्तर

20

java.lang.AbstractMethodError: org.apache.xerces.dom.ElementImpl.getTextContent()Ljava/lang/String;

यह जब वहाँ में Xerces जार फ़ाइलें हैं क्या होगा अपने युद्ध के /WEB-INF/lib (या यहां तक ​​कि JRE का /lib) एक आंतरिक servletcontainer द्वारा प्रयोग किया जाता से एक पुराने संस्करण का है। पुराने संस्करण, जो स्पष्ट रूप से Java 1.4.2 या पुराने के जेएक्सपी लागू करता है, में उल्लिखित विधि अनुपलब्ध है जिसे Java 1.5 के जेएक्सपी में पेश किया गया था।

  1. अपग्रेड Xerces JAR एक नए संस्करण मिलान कम से कम एक servletcontainer इस्तेमाल किया करने के लिए फ़ाइलों:

    2 विकल्प हैं।

  2. उन Xerces JAR फ़ाइलों को /WEB-INF/lib से हटाएं। वे वास्तव में वहां से संबंधित नहीं हैं। सर्वलेटकेंटर अपने स्वयं के जेएक्सपी कार्यान्वयन के साथ आता है। आपको वेबपैड के माध्यम से अपना खुद की आपूर्ति करने की आवश्यकता नहीं है।

विकल्प 2 की अनुशंसा की जाती है। मेवेन जैसे निर्भरता प्रबंधन ढांचे का उपयोग करते समय देखें। कुछ गरीब पुस्तकालयों में विशेष रूप से एक जेएसीपी कार्यान्वयन को एक पारस्परिक निर्भरता के रूप में शामिल किया जाएगा, भले ही एपीआई जावा एसई का हिस्सा हो।

ध्यान दें कि ठोस समस्या OmniFaces से असंबंधित है। यह सिर्फ क्लासपाथ प्रदूषण के कारण होता है। OmniFaces web.xml (और web-fragment.xml) को पार्स करने और त्रुटि पृष्ठ स्थानों को निकालने के लिए JAXP का उपयोग करता है। अद्यतन: यह विशिष्ट अपवाद तब नहीं होना चाहिए जब से ओमनीफेस 2.0 के रूप में issue 90getTextContent()getFirstChild().getNodeValue() द्वारा कॉल किया गया है।

+0

आप पूरी तरह से सही हैं ... बहुत बहुत धन्यवाद! मेरे क्रिसमस उपहार! – Basileus

+0

आपका स्वागत है। – BalusC

+0

सही उत्तर। धन्यवाद –

संबंधित मुद्दे