Domanda

Ho un webapp funzionante su JBoss come 5.1.0 GA. Che utilizza i barattoli Mojarra 2.0.4. Sono in un processo di migrazione di questo su JBoss come 7.1.1. Questa versione di JBoss viene spedita con 2.1.7. Così ho declassato la versione Mojarra definendo gli slot per 2.0.4 e riferendosi a loro come dipendenza nel META-INF/jboss-deployment-structure.xml insieme ad altre dipendenze.

JBoss-Deployment-Structure.xml

<?xml version="1.0" encoding="UTF-8"?>
<jboss-deployment-structure xmlns="urn:jboss:deployment-structure:1.0">
  <deployment>
    <exclusions>
          <module name="javax.faces.api" slot="main"/>
          <module name="com.sun.jsf-impl" slot="main"/>
          <module name="javax.faces.api" slot="1.2"/>
          <module name="com.sun.jsf-impl" slot="1.2"/>          
        </exclusions>
        <dependencies>
          <module name="org.hibernate.validator" export="true"/>
          <module name="javax.validation.api" export="true"/>
          <module name="com.google.gson" export="true"/>
          <module name="org.codehaus.jettison" export="true"/>
          <module name="org.jboss.resteasy.resteasy-jaxrs" export="true"/>
          <module name="org.jboss.resteasy.resteasy-jackson-provider" export="true"/>
          <module name="org.apache.log4j" export="true"/>
          <module name="org.jboss.as.web" slot="main" export="true"/>
          <module name="javax.faces.api" slot="2.0.4" export="true"/>
          <module name="com.sun.jsf-impl" slot="2.0.4" export="true"/>       
        </dependencies>
  </deployment>   
 </jboss-deployment-structure>
.

Ciò ha causato la lancia della distribuzione

12:51:18,761 INFO  [javax.enterprise.resource.webcontainer.jsf.config] (MSC service thread 1-3) Initializing Mojarra 2.0.4 (FCS b09) for context ''
12:51:20,355 INFO  [javax.enterprise.resource.webcontainer.jsf.config] (MSC service thread 1-3) Unsanitized stacktrace from failed start...: javax.faces.FacesException: Class org.jboss.as.web.deployment.jsf.JandexAnnotationProvider is not an instance of com.sun.faces.spi.AnnotationProvider
.

a cui mi riferivo a link e modifica le mie dipendenze come segue che si è liberato dell'errore alla distribuzione ma ha introdotto la seguente eccezione di runtime

12:59:19,434 ERROR [stderr] (http--0.0.0.0-8080-4) java.lang.IllegalArgumentException: null source
12:59:19,435 ERROR [stderr] (http--0.0.0.0-8080-4)  at java.util.EventObject.<init>(EventObject.java:38)
12:59:19,436 ERROR [stderr] (http--0.0.0.0-8080-4)  at javax.faces.event.SystemEvent.<init>(SystemEvent.java:71)
12:59:19,444 ERROR [stderr] (http--0.0.0.0-8080-4)  at javax.faces.event.ComponentSystemEvent.<init>(ComponentSystemEvent.java:73)
.

e

12:59:19,489 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/].[Faces Servlet]] (http--0.0.0.0-8080-4) Servlet.service() for servlet Faces Servlet threw exception: java.lang.NullPointerException
    at com.sun.faces.context.PartialViewContextImpl.createPartialResponseWriter(PartialViewContextImpl.java:431) [jsf-impl.jar:2.0.4-b09]
    at com.sun.faces.context.PartialViewContextImpl.access$300(PartialViewContextImpl.java:72) [jsf-impl.jar:2.0.4-b09]
    at com.sun.faces.context.PartialViewContextImpl$DelayedInitPartialResponseWriter.getWrapped(PartialViewContextImpl.java:559) [jsf-impl.jar:2.0.4-b09]
.

I figurato (da Google, ovviamente) che l'eccezione è spesso causata da tre cose

    .
  1. Tag non validi / non incluiti utilizzati in XHTML (un'eccezione erroneamente propagata)
  2. timeout della sessione (un'eccezione erroneamente propagata)
  3. Limite su No dei parametri post in Tomcat
  4. Sfortunatamente, i primi due non erano le cause. Ho corso le mie errate pagine XHTML attraverso i validatori e ho scoperto che Markup era valido, né la mia sessione era scaduta. Ho anche aumentato il org.apache.tomcat.util.http.Parameters.MAX_COUNT a 5000 in standalone.xml per affrontare il terzo punto. L'errore persiste ancora.

    Ho anche provato a migrare alla versione predefinita Mojarra 2.7.1. Che ha impedito la prima eccezione di runtime ma il secondo è rimasto. L'unica cosa particolare di quelle pagine che causano questo errore è che hanno chiamate ajax in loro. Abbastanza divertente, l'applicazione funziona bene con come 5.1.0 GA, quindi se il mio markup è errato, mi avrebbe dato un momento difficile su 5.1.0, che non è stato. Quindi il markup non valido è improbabile. Tutti i puntatori molto apprezzati!

    Aggiornamento : Ho appena scoperto che la linea su PartialViewContextImpl.java:431 mostra che il ctx.getRenderKit() sta valutando null. Nessuna idea Perché però

    Update2 : Si scopre che il problema è visto solo se utilizzo i componenti in ingresso HTML pure all'interno del modulo IE <input type="text">, <select> ecc. Se rimuovo quelli dal <h:form> o lo converti in corrispondenti tag JSF , funziona bene. Qualcosa sta andando terribilmente sbagliato da qualche parte. Non sono in grado di capire esattamente se questo è causato da Jboss, Mojarra o in particolare la mia app. L'ho provato con una semplice app Vanilla JSF e non ho avuto errori se utilizzo o meno i tag di input HTML. Quindi è la combinazione della mia app e JBoss 7.x che sta causando questo. Qualche idea?

È stato utile?

Soluzione

Infine!Il problema è stato correlato a un bug in Mojarra 2.1.7 come riportato qui

La soluzione è dare un nome Nome Attributo ad ogni componente HTML puro incluso in <h:form>.La parte che non riuscivo a capire che questo bug sembra essere correlato a Mojarra 2.1.7.E i vasi che ho configurato per la mia app erano la versione 2.0.4, eppure l'errore è stato visto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top