I am trying to deploy an app, that I migrate on jdk11 on my weblogic 14c server but i encounter this error when i try to deploy it :
Erreur javax.xml.bind.JAXBException: {}infoBilan is not a valid property on class fr.gipmds.pascrm.bouchon.ws.notification.generated.jaxws.RemonterBilan
I don't understand why i didn't modify the wsdl. I use jaxws-maven-plugin to generate it ( i tried with apache cxf too)
Here my pom.xml :
<project xmlns=".0.0" xmlns:xsi=";
xsi:schemaLocation=".0.0 .xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>fr.gipmds.pascrm.bouchon</groupId>
<artifactId>bouchon-pascrm</artifactId>
<packaging>war</packaging>
<name>BouchonPascrm</name>
<description>Application web contenant les bouchons PASCRM</description>
<parent>
<groupId>fr.gipmds.pascrm</groupId>
<artifactId>web</artifactId>
<version>2025.1.0.0</version>
<relativePath>../../web</relativePath>
</parent>
<properties>
<endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
</properties>
<dependencies>
<dependency>
<groupId>fr.gipmds.pascrm.service</groupId>
<artifactId>services-jeton</artifactId>
</dependency>
<dependency>
<groupId>fr.gipmds.pascrm.service</groupId>
<artifactId>services-metier</artifactId>
</dependency>
<!-- WEB -->
<dependency>
<groupId>.apache.tiles</groupId>
<artifactId>tiles-jsp</artifactId>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
</dependency>
<dependency>
<groupId>.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
</dependency>
<dependency>
<groupId>.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</dependency>
<dependency>
<groupId>fr.gipmds.pascrm.domain</groupId>
<artifactId>utilities-commun</artifactId>
</dependency>
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-rt</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<dependency>
<groupId>.glassfish.jaxb</groupId>
<artifactId>jaxb-runtime</artifactId>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
</dependency>
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>rt</artifactId>
<version>4.0.1</version>
</dependency>
<dependency>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-ri</artifactId>
<version>2.3.2</version>
<type>pom</type>
</dependency>
<dependency>
<groupId>jakarta.jws</groupId>
<artifactId>jakarta.jws-api</artifactId>
<version>2.1.0</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-core</artifactId>
<version>2.3.0.1</version>
</dependency>
<dependency>
<groupId>com.sun.xml.bind</groupId>
<artifactId>jaxb-impl</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>javax.xml.ws</groupId>
<artifactId>jaxws-api</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>jakarta.xml.bind</groupId>
<artifactId>jakarta.xml.bind-api</artifactId>
<version>2.3.2</version>
</dependency>
<dependency>
<groupId>javax.annotation</groupId>
<artifactId>javax.annotation-api</artifactId>
<version>1.3.2</version>
</dependency>
<!-- TEST -->
<dependency>
<groupId>fr.gipmds.pascrm</groupId>
<artifactId>tests-deps</artifactId>
<type>pom</type>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>${mavenpiler.source}</source>
<target>${mavenpiler.source}</target>
<encoding>UTF-8</encoding>
<compilerArguments>
<endorseddirs>${endorsed.dir}</endorseddirs>
</compilerArguments>
</configuration>
</plugin>
<!-- <plugin>-->
<!-- <groupId>.apache.cxf</groupId>-->
<!-- <artifactId>cxf-codegen-plugin</artifactId>-->
<!-- <version>3.3.1</version>-->
<!-- <executions>-->
<!-- <execution>-->
<!-- <id>generate-sources</id>-->
<!-- <phase>generate-sources</phase>-->
<!-- <configuration>-->
<!-- <sourceRoot>${project.build.directory}/generated-sources/cxf</sourceRoot>-->
<!-- <wsdlOptions>-->
<!-- <wsdlOption>-->
<!-- <wsdl>${basedir}/src/main/resources/BilanDSNServicev3.1.wsdl</wsdl>-->
<!-- </wsdlOption>-->
<!-- </wsdlOptions>-->
<!-- </configuration>-->
<!-- <goals>-->
<!-- <goal>wsdl2java</goal>-->
<!-- </goals>-->
<!-- </execution>-->
<!-- </executions>-->
<!-- </plugin>-->
<plugin>
<groupId>com.sun.xml.ws</groupId>
<artifactId>jaxws-maven-plugin</artifactId>
<version>2.3.2</version>
<executions>
<execution>
<goals>
<goal>wsimport</goal>
</goals>
</execution>
</executions>
<configuration>
<!-- <wsdlDirectory>${project.basedir}/src/main/resources/</wsdlDirectory>-->
<wsdlFiles>
<wsdlFile>${project.basedir}/src/main/resources/BilanDSNServicev3.1.wsdl</wsdlFile>
</wsdlFiles>
<packageName>fr.gipmds.pascrm.bouchon.ws.notification.generated</packageName>
<sourceDestDir>${project.build.directory}/generated-sources/</sourceDestDir>
<!-- <bindingFiles>-->
<!-- <bindingFile>${project.basedir}/src/main/resources/jaxb-bindings.xml</bindingFile>-->
<!-- </bindingFiles>-->
</configuration>
</plugin>
</plugins>
</build>
</project>
My wsdl :
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<definitions targetNamespace=";
name="BilanDSNService" xmlns="/"
xmlns:tns="; xmlns:xsd=";
xmlns:soap="/">
<types>
<xsd:schema targetNamespace=";
version="3.1">
<xsd:element name="infoBilan" type="tns:infoBilan" />
<xsd:element name="remonterBilan" type="tns:remonterBilan" />
<xsd:element name="remonterBilanResponse" type="tns:remonterBilanResponse" />
<xsd:element name="statut" type="tns:statut" />
<xsd:complexType name="remonterBilan">
<xsd:sequence>
<xsd:element ref="tns:infoBilan" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="infoBilan">
<xsd:sequence>
<xsd:element name="timestamp" type="xsd:dateTime" />
<xsd:element name="idOps" type="xsd:string" />
<xsd:element name="delegataire" type="xsd:string"
minOccurs="0" />
<xsd:element name="idFlux" type="xsd:string" />
<xsd:element name="rang" type="xsd:positiveInteger" />
<xsd:element name="etape" minOccurs="0">
<xsd:simpleType>
<xsd:restriction base="xsd:int">
<xsd:minInclusive value="2" />
<xsd:maxInclusive value="3" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="codeRetour" type="xsd:positiveInteger"/>
<xsd:element name="numOrdre" type="xsd:nonNegativeInteger" />
<xsd:element name="statut">
<xsd:simpleType>
<xsd:restriction base="xsd:string">
<xsd:enumeration value="OK" />
<xsd:enumeration value="ANOBLOQUANTE" />
<xsd:enumeration value="ANOMALIE" />
</xsd:restriction>
</xsd:simpleType>
</xsd:element>
<xsd:element name="cleAcces" type="xsd:string"
minOccurs="0" />
<xsd:element name="compteRendu" type="xsd:base64Binary"
minOccurs="0" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="remonterBilanResponse">
<xsd:sequence>
<xsd:element name="return" type="tns:statut" />
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="statut">
<xsd:sequence>
<xsd:element name="code" type="xsd:string" />
<xsd:element name="libelle" type="xsd:string" />
</xsd:sequence>
</xsd:complexType>
</xsd:schema>
</types>
<message name="remonterBilan">
<part name="parameters" element="tns:remonterBilan" />
</message>
<message name="remonterBilanResponse">
<part name="parameters" element="tns:remonterBilanResponse" />
</message>
<portType name="BilanDSNService">
<operation name="remonterBilan">
<input message="tns:remonterBilan" />
<output message="tns:remonterBilanResponse" />
</operation>
</portType>
<binding name="BilanDSNPortBinding" type="tns:BilanDSNService">
<soap:binding transport=";
style="document" />
<operation name="remonterBilan">
<soap:operation soapAction="; />
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal" />
</output>
</operation>
</binding>
<service name="BilanDSNService">
<port name="BilanDSNPort" binding="tns:BilanDSNPortBinding">
<soap:address location="http://localhost:8080" />
</port>
</service>
</definitions>
My class RemonterBilan :
package fr.gipmds.pascrm.bouchon.ws.notification.generated;
import javax.xml.bind.annotation.*;
/**
* <p>Java class for remonterBilan complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* <complexType name="remonterBilan">
* <complexContent>
* <restriction base="{}anyType">
* <sequence>
* <element ref="{}infoBilan"/>
* </sequence>
* </restriction>
* </complexContent>
* </complexType>
* </pre>
*
*
*/
@XmlRootElement(name = "remonterBilanResponse", namespace = ";)
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "remonterBilan", propOrder = {
"infoBilan"
})
public class RemonterBilan {
@XmlElement(namespace = ";, required = true)
protected InfoBilan infoBilan;
/**
* Gets the value of the infoBilan property.
*
* @return
* possible object is
* {@link InfoBilan }
*
*/
public InfoBilan getInfoBilan() {
return infoBilan;
}
/**
* Sets the value of the infoBilan property.
*
* @param value
* allowed object is
* {@link InfoBilan }
*
*/
public void setInfoBilan(InfoBilan value) {
this.infoBilan = value;
}
}
My class InfoBilan :
package fr.gipmds.pascrm.bouchon.ws.notification.generated;
import java.math.BigInteger;
import javax.xml.bind.annotation.*;
import javax.xml.datatype.XMLGregorianCalendar;
/**
* <p>Java class for infoBilan complex type.
*
* <p>The following schema fragment specifies the expected content contained within this class.
*
* <pre>
* <complexType name="infoBilan">
* <complexContent>
* <restriction base="{}anyType">
* <sequence>
* <element name="timestamp" type="{}dateTime"/>
* <element name="idOps" type="{}string"/>
* <element name="delegataire" type="{}string" minOccurs="0"/>
* <element name="idFlux" type="{}string"/>
* <element name="rang" type="{}positiveInteger"/>
* <element name="etape" minOccurs="0">
* <simpleType>
* <restriction base="{}int">
* <minInclusive value="2"/>
* <maxInclusive value="3"/>
* </restriction>
* </simpleType>
* </element>
* <element name="codeRetour" type="{}positiveInteger"/>
* <element name="numOrdre" type="{}nonNegativeInteger"/>
* <element name="statut">
* <simpleType>
* <restriction base="{}string">
* <enumeration value="OK"/>
* <enumeration value="ANOBLOQUANTE"/>
* <enumeration value="ANOMALIE"/>
* </restriction>
* </simpleType>
* </element>
* <element name="cleAcces" type="{}string" minOccurs="0"/>
* <element name="compteRendu" type="{}base64Binary" minOccurs="0"/>
* </sequence>
* </restriction>
* </complexContent>
* </complexType>
* </pre>
*
*
*/
@XmlRootElement(name = "infoBilan", namespace = ";)
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "infoBilan", propOrder = {
"timestamp",
"idOps",
"delegataire",
"idFlux",
"rang",
"etape",
"codeRetour",
"numOrdre",
"statut",
"cleAcces",
"compteRendu"
})
public class InfoBilan {
@XmlElement(required = true)
@XmlSchemaType(name = "dateTime")
protected XMLGregorianCalendar timestamp;
@XmlElement(required = true)
protected String idOps;
protected String delegataire;
@XmlElement(required = true)
protected String idFlux;
@XmlElement(required = true)
@XmlSchemaType(name = "positiveInteger")
protected BigInteger rang;
protected Integer etape;
@XmlElement(required = true)
@XmlSchemaType(name = "positiveInteger")
protected BigInteger codeRetour;
@XmlElement(required = true)
@XmlSchemaType(name = "nonNegativeInteger")
protected BigInteger numOrdre;
@XmlElement(required = true)
protected String statut;
protected String cleAcces;
protected byte[] compteRendu;
/**
* Gets the value of the timestamp property.
*
* @return
* possible object is
* {@link XMLGregorianCalendar }
*
*/
public XMLGregorianCalendar getTimestamp() {
return timestamp;
}
/**
* Sets the value of the timestamp property.
*
* @param value
* allowed object is
* {@link XMLGregorianCalendar }
*
*/
public void setTimestamp(XMLGregorianCalendar value) {
this.timestamp = value;
}
/**
* Gets the value of the idOps property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getIdOps() {
return idOps;
}
/**
* Sets the value of the idOps property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setIdOps(String value) {
this.idOps = value;
}
/**
* Gets the value of the delegataire property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getDelegataire() {
return delegataire;
}
/**
* Sets the value of the delegataire property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setDelegataire(String value) {
this.delegataire = value;
}
/**
* Gets the value of the idFlux property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getIdFlux() {
return idFlux;
}
/**
* Sets the value of the idFlux property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setIdFlux(String value) {
this.idFlux = value;
}
/**
* Gets the value of the rang property.
*
* @return
* possible object is
* {@link BigInteger }
*
*/
public BigInteger getRang() {
return rang;
}
/**
* Sets the value of the rang property.
*
* @param value
* allowed object is
* {@link BigInteger }
*
*/
public void setRang(BigInteger value) {
this.rang = value;
}
/**
* Gets the value of the etape property.
*
* @return
* possible object is
* {@link Integer }
*
*/
public Integer getEtape() {
return etape;
}
/**
* Sets the value of the etape property.
*
* @param value
* allowed object is
* {@link Integer }
*
*/
public void setEtape(Integer value) {
this.etape = value;
}
/**
* Gets the value of the codeRetour property.
*
* @return
* possible object is
* {@link BigInteger }
*
*/
public BigInteger getCodeRetour() {
return codeRetour;
}
/**
* Sets the value of the codeRetour property.
*
* @param value
* allowed object is
* {@link BigInteger }
*
*/
public void setCodeRetour(BigInteger value) {
this.codeRetour = value;
}
/**
* Gets the value of the numOrdre property.
*
* @return
* possible object is
* {@link BigInteger }
*
*/
public BigInteger getNumOrdre() {
return numOrdre;
}
/**
* Sets the value of the numOrdre property.
*
* @param value
* allowed object is
* {@link BigInteger }
*
*/
public void setNumOrdre(BigInteger value) {
this.numOrdre = value;
}
/**
* Gets the value of the statut property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getStatut() {
return statut;
}
/**
* Sets the value of the statut property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setStatut(String value) {
this.statut = value;
}
/**
* Gets the value of the cleAcces property.
*
* @return
* possible object is
* {@link String }
*
*/
public String getCleAcces() {
return cleAcces;
}
/**
* Sets the value of the cleAcces property.
*
* @param value
* allowed object is
* {@link String }
*
*/
public void setCleAcces(String value) {
this.cleAcces = value;
}
/**
* Gets the value of the compteRendu property.
*
* @return
* possible object is
* byte[]
*/
public byte[] getCompteRendu() {
return compteRendu;
}
/**
* Sets the value of the compteRendu property.
*
* @param value
* allowed object is
* byte[]
*/
public void setCompteRendu(byte[] value) {
thispteRendu = ((byte[]) value);
}
}