Я использую следующую задачу Ant для генерации клиентского кода для конечной точки веб-службы:
<wsimport wsdl="target/classes/META-INF/wsdl/MyService.wsdl"
sourcedestdir="target/wsimport"
verbose="true"
xnocompile="false"
xendorsed="true"
destdir="target/classes"
keep="true"
package="com.example.client.jaxws"
wsdlLocation="/META-INF/wsdl/MyService.wsdl" />
Это создает классы, которые клиенты используют для передачи данных в веб-службу, например,
class Foo {
String name;
List<String> bars;
public void setName(String name) {
this.name = name;
}
public String getName() {
return name;
}
public List<String> getBars() {
return bars;
}
}
Обратите внимание, что для свойства bars
сгенерированный класс не содержит установщика, поэтому клиент должен будет получить к нему доступ через:
someFoo.getBars().add("val");
Однако отсутствие установщика означает, что этот классне будет работать с различными инструментами, основанными на соглашении JavaBeans (например, Dozer), поэтому я хотел бы заставить wsimport генерировать сеттеры.Я нашел поток , который указывает, что вы можете принудительно генерировать сеттер, добавив следующее к задаче Ant
<xjcarg value="-Xcollection-setter-injector"/>
Однако этот поток довольно старый, и приведенное выше, похоже, неработать больше.