Используя WSDL, можем ли мы генерировать другие открытые методы внутри класса, который является параметром метода веб-службы? - PullRequest
0 голосов
/ 29 апреля 2011

Извините, если вопрос не проясняет, что именно мне нужно .... Пожалуйста, прочтите требование заранее.

Я использую JAX-WS 2.2.3.

У меня естьреализовал класс веб-сервиса, который имеет метод int addRecord (Record) .Класс Record содержит член экземпляра как коллекцию класса Attribute.Теперь класс Record содержит открытый метод void addAttribute (Attribute objAttribute) .

Я сгенерировал WSDL для этого класса с помощью задачи муравья wsgen.

Когда ясделать wsimport на этом WSDL, только с другими классами, я получаю только класс Record, который содержит методы set / get для члена экземпляра, а не void addAttribute (Attribute objAttribute) метод.

Есть ли способ получить этот метод также в классе Record?


SOURCE CODE:</p>

<pre><code>@XmlAccessorType(XmlAccessType.FIELD)

@ XmlType (name = "Record") открытый класс Record реализует 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") открытый класс Attribute реализует 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;
}

}

@WebServiceclass RecordService {@WebMethod public int addRecord (Record objRecord) {// код для обработки объекта записи}}

1 Ответ

0 голосов
/ 03 мая 2011

Нет - не с веб-службами.

Системная метафора с веб-сервисами - передача сообщений. Есть клиент и сервер, и они обмениваются сообщениями по заранее оговоренному протоколу связи или договору. Сообщения и обмены описаны в WSDL.

То, что вы представляете, - это распределенная объектная система, в которой вы передаете объекты , а не сообщения. Как правило, это не та модель, которую поддерживают инструменты веб-сервисов (для любой платформы).

Рассмотрите возможность изменения вашей архитектуры для использования DTO - Объекты передачи данных - для обмена вещами. Затем реализуйте логику в различных объектах бизнес-уровня, которые, возможно, используют шаблон адаптера , чтобы убрать свое состояние из DTO. Бизнес-объекты могут быть общими типами данных, если хотите; другими словами, один JAR-файл, который определяет тип и на который ссылается клиент и сервер.

...