@JuliaJ583

Как сгенерировать двух клиентов из WSDLs таким образом, чтобы у обеих клиентов был одинаковый набор папок?

У меня есть два сервиса: Сервис_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?
  • Вопрос задан
  • 2581 просмотр
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы