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

#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, который определяет тип и на который ссылаются как внутри клиента, так и внутри сервера.