JBoss 7.1.1 wsdl difference with JBoss 6.1 : missing name attribute on some xs:element
l.courtin May 30, 2012 7:06 AMHello,
I am testing JBoss 7.1.1 with a Web Service.
I was previously on JBoss 6.1.0.
I have seen that there is some difference on the generated wsdl file between version 7.1.1 and version 6.1.0.
Here is an extract of the generated wsdl file by JBoss 6.1.0:
<xs:complexType name="lastSolePtCoord"> <xs:sequence> <xs:element minOccurs="0" name="dmReferenceSize" type="tns:dmReferenceSize" /> <xs:element minOccurs="0" name="lastSolePt" type="tns:lastSolePt" /> <xs:element minOccurs="0" name="lastSolePtCoordPK" type="tns:lastSolePtCoordPK" /> <xs:element minOccurs="0" name="reference" type="tns:reference" /> <xs:element name="x" type="xs:double" /> <xs:element name="y" type="xs:double" /> <xs:element name="z" type="xs:double" /> </xs:sequence> </xs:complexType>
Here is an extract of the generated wsdl file by JBoss 7.1.1:
<xs:complexType name="lastSolePtCoord"> <xs:sequence> <xs:element minOccurs="0" ref="tns:dmReferenceSize"/> <xs:element minOccurs="0" ref="tns:lastSolePt"/> <xs:element minOccurs="0" name="lastSolePtCoordPK" type="tns:lastSolePtCoordPK"/> <xs:element minOccurs="0" ref="tns:reference"/> <xs:element name="x" type="xs:double"/> <xs:element name="y" type="xs:double"/> <xs:element name="z" type="xs:double"/> </xs:sequence> </xs:complexType>
You can see that some name attributes are missing the 7.1.1 version.
This prevent the client of the Web Service to retrieve the value of the specified field: ie. the reference field is null with the 7.1.1 version while the reference field is filled with the 6.1.0 version.
There is also a funny thing : when I run the client generated with a wsdl of JBoss 6.1.0 on a JBoss 7.1.1, it works perfectly (i.e. the reference field is filled).
Here the source of the LastSolePtCoord entity:
package com.cadwin.rcsdmwebservices.jpa; import java.io.Serializable; import java.math.BigInteger; import javax.persistence.Basic; import javax.persistence.Column; import javax.persistence.EmbeddedId; import javax.persistence.Entity; import javax.persistence.JoinColumn; import javax.persistence.JoinColumns; import javax.persistence.ManyToOne; import javax.persistence.NamedQueries; import javax.persistence.NamedQuery; import javax.persistence.Table; import javax.xml.bind.annotation.XmlRootElement; /** * * @author laurent */ @Entity @Table(name = "LAST_SOLE_PT_COORD") @XmlRootElement @NamedQueries({ @NamedQuery(name = "LastSolePtCoord.findAll", query = "SELECT l FROM LastSolePtCoord l"), @NamedQuery(name = "LastSolePtCoord.findByReferenceCode", query = "SELECT l FROM LastSolePtCoord l WHERE l.lastSolePtCoordPK.referenceCode = :referenceCode"), @NamedQuery(name = "LastSolePtCoord.findByReferenceRev", query = "SELECT l FROM LastSolePtCoord l WHERE l.lastSolePtCoordPK.referenceRev = :referenceRev"), @NamedQuery(name = "LastSolePtCoord.findByReferenceCodeRev", query = "SELECT l FROM LastSolePtCoord l WHERE l.lastSolePtCoordPK.referenceCode = :referenceCode AND l.lastSolePtCoordPK.referenceRev = :referenceRev"), @NamedQuery(name = "LastSolePtCoord.findByReferenceCodeRevSizeId", query = "SELECT l FROM LastSolePtCoord l WHERE l.lastSolePtCoordPK.referenceCode = :referenceCode AND l.lastSolePtCoordPK.referenceRev = :referenceRev AND l.lastSolePtCoordPK.sizeId = :sizeId"), @NamedQuery(name = "LastSolePtCoord.findBySizeId", query = "SELECT l FROM LastSolePtCoord l WHERE l.lastSolePtCoordPK.sizeId = :sizeId"), @NamedQuery(name = "LastSolePtCoord.findByPointId", query = "SELECT l FROM LastSolePtCoord l WHERE l.lastSolePtCoordPK.pointId = :pointId"), @NamedQuery(name = "LastSolePtCoord.findByX", query = "SELECT l FROM LastSolePtCoord l WHERE l.x = :x"), @NamedQuery(name = "LastSolePtCoord.findByY", query = "SELECT l FROM LastSolePtCoord l WHERE l.y = :y"), @NamedQuery(name = "LastSolePtCoord.findByZ", query = "SELECT l FROM LastSolePtCoord l WHERE l.z = :z")}) public class LastSolePtCoord implements Serializable { private static final long serialVersionUID = 1L; @EmbeddedId protected LastSolePtCoordPK lastSolePtCoordPK; @Basic(optional = false) @Column(name = "X") private double x; @Basic(optional = false) @Column(name = "Y") private double y; @Basic(optional = false) @Column(name = "Z") private double z; @JoinColumns({ @JoinColumn(name = "PRODUCT_CODE", referencedColumnName = "PRODUCT_CODE", insertable = false, updatable = false), @JoinColumn(name = "PRODUCT_REV", referencedColumnName = "PRODUCT_REV", insertable = false, updatable = false)}) @ManyToOne(optional = false) private Reference reference; @JoinColumn(name = "POINT_ID", referencedColumnName = "ID", insertable = false, updatable = false) @ManyToOne(optional = false) private LastSolePt lastSolePt; @JoinColumn(name = "SIZE_ID", referencedColumnName = "ID", insertable = false, updatable = false) @ManyToOne(optional = false) private DmReferenceSize dmReferenceSize; public LastSolePtCoord() { } public LastSolePtCoord(LastSolePtCoordPK lastSolePtCoordPK) { this.lastSolePtCoordPK = lastSolePtCoordPK; } public LastSolePtCoord(LastSolePtCoordPK lastSolePtCoordPK, double x, double y, double z) { this.lastSolePtCoordPK = lastSolePtCoordPK; this.x = x; this.y = y; this.z = z; } public LastSolePtCoord(String referenceCode, String referenceRev, BigInteger sizeId, BigInteger pointId) { this.lastSolePtCoordPK = new LastSolePtCoordPK(referenceCode, referenceRev, sizeId, pointId); } public LastSolePtCoordPK getLastSolePtCoordPK() { return lastSolePtCoordPK; } public void setLastSolePtCoordPK(LastSolePtCoordPK lastSolePtCoordPK) { this.lastSolePtCoordPK = lastSolePtCoordPK; } public double getX() { return x; } public void setX(double x) { this.x = x; } public double getY() { return y; } public void setY(double y) { this.y = y; } public double getZ() { return z; } public void setZ(double z) { this.z = z; } public Reference getReference() { return reference; } public void setReference(Reference reference) { this.reference = reference; } public LastSolePt getLastSolePt() { return lastSolePt; } public void setLastSolePt(LastSolePt lastSolePt) { this.lastSolePt = lastSolePt; } public DmReferenceSize getDmReferenceSize() { return dmReferenceSize; } public void setDmReferenceSize(DmReferenceSize dmReferenceSize) { this.dmReferenceSize = dmReferenceSize; } @Override public int hashCode() { int hash = 0; hash += (lastSolePtCoordPK != null ? lastSolePtCoordPK.hashCode() : 0); return hash; } @Override public boolean equals(Object object) { // TODO: Warning - this method won't work in the case the id fields are not set if (!(object instanceof LastSolePtCoord)) { return false; } LastSolePtCoord other = (LastSolePtCoord) object; if ((this.lastSolePtCoordPK == null && other.lastSolePtCoordPK != null) || (this.lastSolePtCoordPK != null && !this.lastSolePtCoordPK.equals(other.lastSolePtCoordPK))) { return false; } return true; } @Override public String toString() { return "LastSolePtCoord[ lastSolePtCoordPK=" + lastSolePtCoordPK + " ]"; } }
Is there something I have missed ?
Is this a problem with JBoss 7.1.1 ?
Best regards,
Laurent