Java SOAP Web服务:SOAP结果中对同一对象的多个引用
我正在构建一个用于JBoss7.1的SOAP服务。到目前为止,我只使用注释,没有生成文件的XML文件。对于POJO,服务器和客户端都可以正常工作 但是,我有引用其他对象的对象,我希望这些对象是SOAP响应的一部分。我可以使用@XmlElement注释,但是当一个对象被多次引用时,它也会被多次包含。我试图通过使用@XmlIDREF注释来解决这个问题,但这会导致客户端出现NULL对象 我创建了一个独立的示例,其中车轮对象引用了它们所属的自行车,并创建了一个检索所有车轮的服务。这是一个简短、不完整的代码。有关实际代码的链接,请参见下文:Java SOAP Web服务:SOAP结果中对同一对象的多个引用,java,soap,jax-ws,jax-rs,jboss7.x,Java,Soap,Jax Ws,Jax Rs,Jboss7.x,我正在构建一个用于JBoss7.1的SOAP服务。到目前为止,我只使用注释,没有生成文件的XML文件。对于POJO,服务器和客户端都可以正常工作 但是,我有引用其他对象的对象,我希望这些对象是SOAP响应的一部分。我可以使用@XmlElement注释,但是当一个对象被多次引用时,它也会被多次包含。我试图通过使用@XmlIDREF注释来解决这个问题,但这会导致客户端出现NULL对象 我创建了一个独立的示例,其中车轮对象引用了它们所属的自行车,并创建了一个检索所有车轮的服务。这是一个简短、不完整的代
@WebService
public interface IWheelService {
Collection<Wheel> getAllWheels();
}
public class Wheel extends XmlEntity {
private String type;
private Bike bike;
public Wheel(Bike bike, String type) {
this.bike = bike;
this.type = type;
}
@XmlIDREF
public Bike getBike() {
return bike;
}
@XmlElement
public String getType() {
return type;
}
}
public class Bike extends XmlEntity {
private String color;
public Bike(String color) {
this.color = color;
}
public String getColor() {
return color;
}
}
public abstract class XmlEntity implements Serializable {
public static int idGenerator = 0;
private int id = idGenerator++;
@XmlTransient
public int getId() {
return id;
}
@XmlID
@XmlAttribute(name = "id")
@Transient
public String getXmlId() {
return String.format("%s:%d", this.getClass().getSimpleName(), this.id);
}
}
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Body>
<ns2:getAllWheelsResponse xmlns:ns2="http://demo/">
<return id="Wheel:1">
<bike>Bike:0</bike>
<type>slick</type>
</return>
<return id="Wheel:2">
<bike>Bike:0</bike>
<type>spike</type>
</return>
</ns2:getAllWheelsResponse>
</S:Body>
</S:Envelope>