Я разрабатываю WebService и клиент для него, используя JBoss 5.1.0GA. Стек JBossWs уже был предустановлен с бинарником, который я скачал и как я понимаю это JBossWs 3.1.2GA
Я разработал веб-сервис, используя эту настройку, а также успешно создал клиент. Это то, что у меня есть.
Веб-служба pojo, развернутая как военный файл.
@WebService
public class Service{
@WebMethod
public CompleObj getConfiguration() {
CompleObj oConf = new CompleObj ();
for (int i = 0; i < 10; i++) {
NestObj oInst = new BOpRepoInstance("Val1", "Val2", "Val3", "Val4");
oConf.addRepoInstance(oInst);
}
return oConf;
}
}
Здесь,
CompleObj => — это сложный объект со списком типа NestObj. Его геттеры/сеттеры, toString и некоторые другие методы.
NextObj => имеет 4 переменные типа String. Его геттеры/сеттеры, toString, hashCode, equals и некоторые другие методы.
Эта веб-служба успешно развернута.
Позже создал клиент с помощью мастера eclipse для создания клиента веб-службы с использованием документа WSDL. Он также создал образец клиентского файла, который будет вызывать веб-сервис и извлекать возвращаемое значение. Это также сработало как шарм.
Теперь моя проблема в том, что когда eclipse сгенерировал заглушки для клиентов, он создал классы для CompleObj и NestObj. Эти классы имеют только переменные и их геттеры/сеттеры (это имеет смысл, поскольку они генерируются из документа WSDL). Таким образом, я теряю множество других методов, включая toString, hasCode, equals и т. д., которые я также хочу использовать на стороне клиента.
Теперь, как я могу напрямую использовать фактические файлы классов, определенные в проекте WebService, и избежать использования клиентом сгенерированных файлов. Я могу предоставить файлы классов в виде двоичного файла .jar для клиентского проекта, но я не могу понять, как этого добиться.
Другой вопрос: местоположение веб-службы встроено непосредственно в заглушки, что я могу сделать, чтобы местоположение веб-службы передавалось как часть аргумента в код вызова?