可以跨多个源文件拆分一个JAX-WS服务吗?

时间:2010-02-05 23:53:30

标签: java jax-ws

是否可以将Web服务拆分为多个类并仍然提供Web服务的单一路径?

我知道这是不可能的,因为重复的url-pattern值。它有点说明了我们想去的地方:)

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

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

基本上,如何避免使用一个单片@WebService类?

谢谢!

罗布

2 个答案:

答案 0 :(得分:2)

  

是否可以将Web服务拆分为多个类并仍然提供Web服务的单一路径?

没有。 URI是一个 Web服务(由Port/Endpoint定义)的连接点。

  

基本上,如何避免使用一个单片@WebService类?

嗯,在我看来,真正的问题是何时应该使用多个端口/端点?我很想回答:逻辑上重新组合/拆分事物。

例如,虽然Calculator服务有义务公开addsubtractmultiplydivide操作,但我会使用其他服务公开getQuote操作。

现在,您始终可以将逻辑拆分为多个类,并从@WebService委托给他们。

答案 1 :(得分:1)

您可以将功能委派给Web服务类的组合类:

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

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