首页 文章

使用WSDL,我们可以在作为Web服务方法的参数的类中生成其他公共方法吗?

提问于
浏览
0

对不起,如果问题没有明确说明我需要什么......请提前阅读该要求 .

我正在使用JAX-WS 2.2.3 .

我已经实现了一个web服务类,它有一个方法int addRecord(Record) . Record类包含一个实例成员作为Attribute类的集合 . 现在,Record类包含一个public void addAttribute(Attribute objAttribute)方法 .

我使用wsgen ant任务为此类生成了WSDL .

当我在这个WSDL上执行wsimport时,除了其他类之外,我只得到一个Record类,它包含实例成员的set / get方法,而不是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
}
}

1 回答

  • 0

    不 - 没有网络服务 .

    具有Web服务的系统隐喻是消息传递 . 有一个客户端和一个服务器,他们通过预先安排的通信协议或 Contract 交换消息 . WSDL中描述了消息和交换 .

    你想象的是一个分布式对象系统,你传输对象而不是消息 . 这通常不是Web服务工具(针对任何平台)支持的模型 .

    考虑更改您的架构以使用DTO(Data Transfer Objects)来处理交换的内容 . 然后在不同的业务级对象中实现逻辑,这些对象可能使用Adapter pattern从DTO中篡改其状态 . 如果您愿意,业务对象可以是共享数据类型;换句话说,单个JAR定义类型并从客户端和服务器内引用 .

相关问题