2010-02-05 26 views
0

是否有可能将Web服务分成多个类并仍然提供一个到Web服务的路径?是否可以将多个源文件中的一个JAX-WS服务拆分?

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

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

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

基本上,如何避免有一个单一的@WebService类?

谢谢!

罗布

回答

2

是否有可能在多个类别拆分一个Web服务,并仍然提供一条路径到网络服务?

号URI是一个连接点到一个 web服务(由Port/Endpoint定义)。

基本上,如何避免有一个单一的@WebService类?

嗯,在我看来,真正的问题是更当我应该用几个端口/端点?我会试着回答:重组/分组的东西在逻辑上。

例如,虽然它是有意义的Calculator服务来公开addsubtractmultiplydivide操作,我会用其他服务来暴露getQuote操作。

现在,您总是可以将逻辑分成几个类并从@WebService中委托给它们。

+0

原因是更多的端点意味着在指定服务时客户端会有更多的痛苦。我熟悉的两个Web服务是Rally和VMware,它们都有大量的API,但仍然只有一个Web服务URL。这对于我作为客户端开发人员来说是非常好的,因为我不必知道这个API的URL是什么(虽然仍然是+1票,因为现在我知道我肯定不能分解它:) – 2010-02-08 17:51:43

+0

我没有认为帕斯卡回答了这个问题。 Rob询问将多个端口放在一个服务中,而不是将多个操作放在一个端口中。 WSDL允许在单个服务中使用多个端口(因此允许由单个WSDL URI描述多个端口),Rob的问题是这样的WSDL是否可以由JAX-WS生成。我也想知道答案! – Aaron 2010-11-03 17:17:01

+0

...或者在单个服务中使用多个端口,也许在单个WSDL中使用多个服务? – Aaron 2010-11-03 18:01:52

1

你可以从你的网络服务类委托功能,以一个组合类:

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

    @WebMethod 
    public Result webMethodStuff() { 
     // do something with delegate 
    } 
} 
相关问题