Можно ли разделить одну службу JAX-WS на несколько исходных файлов? - PullRequest
0 голосов
/ 06 февраля 2010

Можно ли разделить веб-службу на несколько классов и при этом предоставить один путь к веб-службе?

Я знаю, что это невозможно из-за повторяющихся значений шаблона url. Это как бы иллюстрирует, куда мы хотим идти:)

<endpoint name="OneBigService"
          implementation="SmallImpl1"
          url-pattern="/OneBigService"/>

<endpoint name="OneBigService"
          implementation="SmallImpl2"
          url-pattern="/OneBigService"/>

Как вообще избежать одного монолитного класса @WebService?

Спасибо!

Rob

Ответы [ 2 ]

2 голосов
/ 06 февраля 2010

Можно ли разделить веб-службу на несколько классов и по-прежнему указывать один путь к веб-службе?

Нет. URI - это точка подключения к одной веб-службе (определяется как Порт / Конечная точка ).

Как вообще избежать использования одного монолитного класса @WebService?

Ну, на мой взгляд, реальный вопрос - больше когда мне следует использовать несколько портов / конечных точек ? И я хотел бы ответить: перегруппировать / разделить вещи логически.

Например, хотя для службы Calculator имеет смысл выставлять операции add, subtract, multiply и divide, я бы использовал другую службу для представления операции getQuote.

Теперь вы всегда можете разделить логику на несколько классов и делегировать им свои @WebService.

1 голос
/ 06 февраля 2010

Вы можете делегировать функциональность составному классу из класса веб-службы:

@WebService
public class OneBigService {
    ISmall delegate = new SmallImpl1(); // or new SmallImpl2();

    @WebMethod
    public Result webMethodStuff() {
        // do something with delegate
    }
}
...