У меня есть два сервиса: Сервис_1 и Сервис_2:
Первый Сервис:
public class HelloWorldPublisherByServer1 {
public static void main(String[] args) {
Endpoint.publish("http://localhost:9999/ws/hello", new HelloWorldImplByService1());
}
}
Второй Сервис:
public class HelloWorldPublisherByServer2 {
public static void main(String[] args) {
Endpoint.publish("http://localhost:9992/ws/hello", new HelloWorldImplByService2());
}
}
Реализация класса HelloWorldImplByService1:
@WebService(endpointInterface = "com.mkyong.ws.first.HelloWorldService1")
public class HelloWorldImplByService1 implements HelloWorldService1 {
@Override
public String getHelloWorldAsStringByService1(String name) throws MBFault {
return "111 Hello World JAX-WS " + name;
}
}
Реализация класса HelloWorldImplByService2:
@WebService(endpointInterface = "com.mkyong.ws.second.HelloWorldService2")
public class HelloWorldImplByService2 implements HelloWorldService2 {
@Override
public String getHelloWorldAsStringByService2(String name) throws MBFault {
return "222 Hello World JAX-WS " + name;
}
}
Классы HelloWorldImplByService1 и HelloWorldImplByService2 - похожи.
их методы кидают мой эксепшен: MBFault.
Реализация Интерфейса HelloWorldService1:
@WebService
@SOAPBinding(style = Style.DOCUMENT, use=Use.LITERAL)
public interface HelloWorldService1 {
@WebMethod String getHelloWorldAsStringByService1(String name) throws MBFault;
}
интерфейс HelloWorldService2 практически идентичен с интерфесом HelloWorldService1.
мой эксепшен MBFault - один для обоих сервисов:
@WebFault(name = "MBFault", targetNamespace = "http://fault.ws.mkyong.com/")
public class MBFault extends Exception {
private String detail;
public MBFault(String message, String detail) {
super(message);
this.detail = detail;
}
public MBFault(String message, String detail, Throwable cause) {
super(message, cause);
this.detail = detail;
}
public String getDetail() {
return detail;
}
}
На основе двух сервисов я могу сгенерировать две WSDL и сгенерировать два клиента,
(с помощью wsimport).
В результате я получаю дублирование моего эксепшена MBFault. Как мне избежать дублирования этого класса?, И можно ли как-то при создании сервиса явно указать - в какой папке будет храниться клиент, а в какой эксепшен MBFault?