2010-02-05 143 views
0

我正在使用Netbeans 6.5生成JAX-WS Metro服务和Glassfish 2.1作为应用程序服务器。Web服务可以在同一个应用程序服务器中调用另一个Web服务吗?

假设我有两个网络服务,例如

...

@WebMethod(operationName = "doXXX") 
public String doXXX(
@WebParam(name = "id") String id 
...  

... 
@WebMethod(operationName = "doYYY") 
public String doYYY(
@WebParam(name = "result") String result 
... 

,我有一个Web服务客户端(一个Java应用程序)调用愉快两种。

我现在想让方法XXX调用方法YYY,即我需要将YYY的客户端代理放入Web服务XXX中。

我该怎么做?

回答

0

我玩过并想通了。

您不想通过代理客户端调用实际的Web服务,因为那样您将不必要地序列化/反序列化数据。

假设在上面的例子中,doXXX方法在名为XXX的类中,而doYYY方法在名为YYY的类内。

(请注意,类将由@WebService()标签进行标注。)

要从的doXXX方法调用doYYY():

YYY yyy = new YYY(); 
yyy.doYYY(); 
2

你不应该尝试代理一个请求来调用同一个应用程序中的一个方法 - 这将导致对象不必要的序列化/反序列化到XML消息并返回。

如果您需要在同一个应用程序中调用另一个方法,请重新设计您的应用程序,以便您可以访问需要调用的应用程序的任何区域。

+0

谢谢,但我该怎么做呢?请记住,这两个Web服务仍然必须能够从外部调用。我可以简单地将doYYY()添加到XXX吗? – nzpcmad 2010-02-05 01:51:48

+0

是的。 – 2010-02-05 13:31:56

相关问题