#java #web-services #wsdl #jax-ws
#java #веб-службы #wsdl #jax-ws
Вопрос:
Извините, если вопрос не проясняет точно, что мне нужно …. Пожалуйста, прочитайте требование вперед.
Я использую JAX-WS 2.2.3.
Я реализовал класс веб-службы, который имеет метод int addRecord (запись). Класс Record содержит элемент экземпляра в виде коллекции класса Attribute. Теперь класс Record содержит общедоступный метод void AddAttribute(атрибут objAttribute).
Я сгенерировал WSDL для этого класса с помощью задачи wsgen ant.
Когда я выполняю wsimport в этом WSDL, как и в других классах, я получаю только класс записи, который содержит методы set / get для элемента экземпляра, а не метод void AddAttribute(атрибут 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. Вы добавили аннотацию WebMethod к методу? Можете ли вы опубликовать свой код?
2. @Searock Я отредактировал сообщение. Извините, что отредактировал это так поздно.
Ответ №1:
Нет — не с веб-службами.
Системная метафора с веб-службами — это передача сообщений. Есть клиент и сервер, и они обмениваются сообщениями через заранее подготовленный протокол связи или контракт. Сообщения и обмены описаны в WSDL.
Вы представляете себе систему распределенных объектов, в которой вы передаете объекты, а не сообщения. Как правило, это не та модель, которую поддерживают инструменты веб-служб (для любой платформы).
Рассмотрите возможность изменения вашей архитектуры, чтобы использовать DTO — объекты передачи данных — для вещей, которыми обмениваются. Затем реализуйте логику в разных объектах бизнес-уровня, которые, возможно, используют шаблон адаптера для извлечения своего состояния из DTO. Бизнес-объектами могут быть общие типы данных, если хотите; другими словами, единый JAR, который определяет тип и на который ссылаются как внутри клиента, так и внутри сервера.