0

Context : Weblogic 12.2.1 / JSF 2.1.6 / Richfaces 4.2.2 / Primefaces 3.4

I have a JSF application that was on Weblogic 10.3.6 and that I successfully deploy on Weblogic 12.2.1.

I am facing the following error after each ajax request :

Received 'error@malformedXML' event from <input ...
[200] undefined: undefined

This error usually occurres when the component to be rendered is not present in the page but as you'll see in the following pieces of code, this is not the case :

Java

private int count = 0;

public void commandButton() {
    System.out.println("Click");
    count++;
}

public int getCount() {
    return count;
}

public void setCount(int count) {
    this.count = count;
}

HTML


JSF with Ajax

<h:form>
    <h:commandButton value="JSF with ajax">
        <f:ajax listener="#{myBean.commandButton}" render="count1" />
    </h:commandButton>
    <h:outputText id="count1" value="#{myBean.count}" />
</h:form>

The click on this button correctly executes myBean.commandButton but then produces the error described below and does a "refresh" of the page.


Richfaces

<h:form>
    <a4j:commandButton value="Richfaces" action="#{myBean.commandButton}" render="count2" />
    <h:outputText id="count2" value="#{myBean.count}" />
</h:form>

The click on this button correctly executes myBean.commandButton but then produces the error described below and does a "refresh" of the page.


Primefaces

<h:form>
    <p:commandButton value="Primefaces" action="#{myBean.commandButton}" update="count3" />
    <h:outputText id="count3" value="#{myBean.count}" />
</h:form>

The click on this button correctly executes myBean.commandButton and renders the output text with the incremented value.


EDIT 1 :

In order to deploy on Weblogic 12.2.1, I had to force Weblogic to use the given JSF 2.1.6 package through the weblogic-application.xml as mentioned here, such as :

<prefer-application-packages>
    <package-name>javax.faces.*</package-name>
    <package-name>com.sun.faces.*</package-name>
    <package-name>com.bea.faces.*</package-name>
</prefer-application-packages>

<prefer-application-resources> 
    <resource-name>javax.faces.*</resource-name> 
    <resource-name>com.sun.faces.*</resource-name> 
    <resource-name>com.bea.faces.*</resource-name> 
    <resource-name>META-INF/services/javax.servlet.ServletContainerInitializer</resource-name>
    <resource-name>META-INF/services/com.sun.faces.spi.FacesConfigResourceProvider</resource-name>
    <resource-name>META-INF/resources/javax.faces/jsf.js</resource-name>
</prefer-application-resources>

I am pretty sure that JSF packages are not conflicting since FacesContext.class.getPackage().getImplementationVersion() returns 2.1.6-SNAPSHOT and the wls-cat tool returns the following conflicted packages list and JSF's packages are not among them.

But I notice that even if I force Weblogic to use META-INF/resources/javax.faces/jsf.js from my JSF package, it actually uses the jsf.js file from Weblogic's JSF package : Web browser jsf.js

Conflicted packages list :

com.google.common.*
com.sun.mail.*
javax.el.*
javax.mail.*
javax.mail.event.*
javax.mail.internet.*
javax.mail.search.*
javax.mail.util.*
javax.persistence.*
javax.persistence.spi.*
javax.servlet.*
javax.servlet.http.*
javax.servlet.jsp.*
javax.transaction.*
javax.transaction.xa.*
javax.validation.*
javax.validation.bootstrap.*
javax.validation.constraints.*
javax.validation.groups.*
javax.validation.metadata.*
javax.validation.spi.*
net.jcip.annotations.*
net.sf.cglib.*
oracle.core.lmx.*
oracle.core.lvf.*
oracle.jdbc.*
oracle.jdbc.connector.*
oracle.jdbc.driver.*
oracle.jdbc.internal.*
oracle.jdbc.oci.*
oracle.jdbc.oracore.*
oracle.jdbc.pool.*
oracle.jdbc.rowset.*
oracle.jdbc.util.*
oracle.jdbc.xa.*
oracle.jpub.runtime.*
oracle.net.ano.*
oracle.net.jndi.*
oracle.net.ns.*
oracle.net.nt.*
oracle.net.resolver.*
oracle.security.o3logon.*
oracle.sql.*
oracle.sql.converter.*
org.aopalliance.aop.*
org.aopalliance.intercept.*
org.apache.commons.*
org.apache.oro.*
org.apache.xerces.*
org.apache.xmlbeans.*
org.bouncycastle.*
org.bouncycastle.asn1.*
org.bouncycastle.crypto.*
org.bouncycastle.i18n.*
org.bouncycastle.jce.*
org.bouncycastle.math.*
org.bouncycastle.ocsp.*
org.bouncycastle.util.*
org.bouncycastle.x509.*
org.slf4j.*
org.slf4j.helpers.*
org.slf4j.spi.*
org.w3c.dom.*
repackage.*
schemaorg_apache_xmlbeans.system.sXMLCONFIG.*
schemaorg_apache_xmlbeans.system.sXMLLANG.*
schemaorg_apache_xmlbeans.system.sXMLSCHEMA.*
schemaorg_apache_xmlbeans.system.sXMLTOOLS.*

Does anyone have an idea for this problem ?
Thanks in advance.

Pcz5
  • 300
  • 1
  • 2
  • 11
  • Are you observing this behavior in all browsers or in some specific browser ? – Vikas Sachdeva Jan 03 '17 at 18:11
  • @VikasSachdeva Yes I observe this behavior on Firefox and IE. – Pcz5 Jan 04 '17 at 09:00
  • @BalusC I edited the post to add some information about Weblogic's configuration and the fact that it seems to use the wrong jsf.js file : may it be the origin of the problem ? – Pcz5 Jan 04 '17 at 09:05
  • If you noticed from the browser image that you shared, request for jsf.js has HTTP 304 response status code, It means jsf.js file is cached, try clearing your browser cache – Vikas Sachdeva Jan 05 '17 at 17:38

1 Answers1

1

I finally solved the problem :
The real file sent by the serveur is not META-INF/resources/javax.faces/jsf.js but META-INF/resources/javax.faces/jsf-uncompressed.js.

So the weblogic-application.xml file must have the following configuration :

<prefer-application-packages>
    <package-name>javax.faces.*</package-name>
    <package-name>com.sun.faces.*</package-name>
</prefer-application-packages>

<prefer-application-resources> 
    <resource-name>javax.faces.*</resource-name>
    <resource-name>com.sun.faces.*</resource-name>
    <resource-name>META-INF/services/javax.servlet.ServletContainerInitializer</resource-name>
    <resource-name>META-INF/services/com.sun.faces.spi.FacesConfigResourceProvider</resource-name>
    <resource-name>META-INF/resources/javax.faces/jsf.js</resource-name>
    <resource-name>META-INF/resources/javax.faces/jsf-uncompressed.js</resource-name>
</prefer-application-resources>
Pcz5
  • 300
  • 1
  • 2
  • 11