对不起,如果问题没有明确说明我需要的内容......请提前阅读该要求。
我正在使用JAX-WS 2.2.3。
我实现了一个Web服务类,它有一个方法 int addRecord(Record)。 Record类包含一个实例成员作为Attribute类的集合。现在,Record类包含一个公共 void addAttribute(Attribute objAttribute)方法。
我使用wsgen ant任务为此类生成了WSDL。
当我在这个WSDL上执行wsimport时,除了其他类之外,我只得到一个包含实例成员的set / get方法的Record类,而不是 void addAttribute(Attribute objAttribute)方法
有没有办法在Record类上获得此方法?
SOURCE CODE:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Record")
public class Record implements Serializable
{
/**
*
*/
private static final long serialVersionUID = 1L;
@XmlElement(name = "AttributeList")
List<Attribute> objAttributeList;
public void addAttribute(Attribute objAttribute)
{
objAttributeList.add(objAttribute);
}
}
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "Attribute")
public class Attribute implements Serializable
{
@XmlElement(name = "Id")
int id;
@XmlElement(name = "Name")
String name;
@XmlElement(name = "Value")
Object value;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
}
@WebService
class RecordService
{
@WebMethod
public int addRecord(Record objRecord)
{
//code to process record object
}
}
答案 0 :(得分:0)
不 - 不是网络服务。
Web服务的系统隐喻是消息传递。有一个客户端和一个服务器,他们通过预先安排的通信协议或合同交换消息。 WSDL中描述了消息和交换。
您所想象的是一个分布式对象系统,您可以在其中传输对象而不是消息。这通常不是Web服务工具(针对任何平台)支持的模型。
考虑更改您的体系结构以使用DTO - Data Transfer Objects - 用于交换的内容。然后在不同的业务级对象中实现逻辑,这些对象可能使用Adapter pattern从DTO中篡改其状态。如果您愿意,业务对象可以是共享数据类型;换句话说,一个JAR定义了类型,并从客户端和服务器内引用。