Web服务是否可以调用同一应用程序服务器中的另一个Web服务

时间:2010-02-05 01:44:46

标签: java web-services java-metro-framework

我正在使用Netbeans 6.5生成JAX-WS Metro服务和Glassfish 2.1作为应用程序服务器。

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

...

@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中。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

我玩了一遍,想通了。

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

在上面的例子中假设doXXX方法在一个名为XXX的类中,并且doYYY方法在一个名为YYY的类中。

(请注意,该类将由@WebService()标记注释。)

从doXXX方法调用doYYY():

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