java.lang.AbstractMethodError: org.apache.xerces.dom.ElementImpl.getTextContent()Ljava/lang/String
Je suis en utilisant Omnifaces 1.3 + Primefaces 3.4.1 + Jboss 7.1.1 Finale, mais je ne peux pas rediriger les exceptions à la FullAjaxExceptionHandler
configuré sur mon web.xml
lorsqu'ils viennent d'une requête ajax. Il ne se passe rien, juste une autre exception:
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:]
Quelqu'un peut-donnez-moi un conseil à ce sujet? Je suis coincé. Si j'appelle la même erreur sans ajax l'exception est redirigée correctement.
Mon 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>
Mon 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>
Merci!
OriginalL'auteur Basileus | 2012-12-23
Vous devez vous connecter pour publier un commentaire.
Ce sera le cas quand il y a des Xerces les fichiers JAR dans votre GUERRE
/WEB-INF/lib
(ou même JRE/lib
) qui est d'une version plus ancienne que celle interne utilisé par le servletcontainer. La version la plus ancienne, qui, apparemment, met en œuvre JAXP de Java 1.4.2 ou plus, est absent de la méthode mentionnée, qui a été introduit dans JAXP de Java 1.5.Il y a 2 options:
De mise à niveau de Xerces les fichiers JAR à une version plus récente correspondant au moins à celui utilisé le servletcontainer.
Supprimer ces Xerces fichiers JAR de
/WEB-INF/lib
. Elles n'en fait pas partie. Le servletcontainer est livré avec son propre JAXP mise en œuvre. Vous n'avez pas besoin de fournir votre propre via la webapp.L'Option 2 est recommandé. Attention lors de l'utilisation d'une dépendance cadre de gestion tels que Maven. Le pauvre bibliothèques spécifiquement un JAXP mise en œuvre comme une dépendance transitive même si l'API est déjà une partie de Java SE.
Noter que le béton problème n'est pas lié à OmniFaces. C'est seulement causée par classpath de la pollution. OmniFaces utilise JAXP pour analyser les
web.xml
(etweb-fragment.xml
) et de l'extrait de la page d'erreur endroits. Mise à jour: ce spécifiques exception ne devrait pas se produire plus depuis OmniFaces 2.0 comme il a comme par numéro 90 remplacégetTextContent()
appels pargetFirstChild().getNodeValue()
.Vous êtes les bienvenus.
Droit de réponse. Merci
J'ai eu un problème similaire avec une ancienne dépendance transitive. Cette réponse a aidé!
En raison de cette réponse, a résolu ce même problème avec minutes - merci! Oui, j'ai utilisé l'Option #2!
OriginalL'auteur BalusC