2012-09-03 153 views
1

我的目標是建立一個通用的Web服務。在這種情況下,「通用」的意思是,應該能夠在輸入上運行任意序列的工具(比方說一個文件)。 這些工具是安裝在服務器上的編譯程序。手動創建SOAP消息?

我的想法是在中央WSDL文件中指定每個工具。對WSDL文件進行分析,併爲WSDL文件中包含的每個工具創建一個單獨的Service Class,該文件通過apache commons exec執行相應的工具。

然後是否可以手動創建SOAP Message,其中指定了要在輸入上執行的工具序列?這個SOAP Message然後應該被解析並且相應的Service Classes應該被啓動。

我不得不說我對Web Service編程是全新的,我非常樂意提供任何建議。以上只是一個想法,我打開的任何更好的建議;)

問候,

回答

0

您可以通過實現SOAPHandler<SOAPMessageContext>界面來創建,修改SOAP消息手動(編程)。然後,你需要重寫此方法:

public boolean handleMessage(SOAPMessageContext context) { 
    //do anything you like with a message  
} 

你從傳入此方法SOAPMessageContext對象得到SOAP消息:

SOAPMessage soapMsg = context.getMessage(); 

從你的信息,你可以得到SOAP BodySOAP EnvelopeSOAP Header。通過這樣做,您可以添加儘可能多的元素。但不要忘記,您手動添加的每個元素都必須與您的WSDL文件的XSD相匹配。

要聲明此處理爲JAX-WS環境下,你可以Spring配置如下:有關如何配置JAX-WS終點,你可以找到here

<jaxws:endpoint id="HandlerExample" 
        implementor="your.service.ImplemetationClass" 
        address="http://localhost:8080/Example/services/Example"> 
    <jaxws:handlers> 
     <bean class="your.Handler" /> 
    </jaxws:handlers> 
    </jaws:endpoint> 

更多信息。還有關於處理程序的信息,你可以找到here

希望這有助於開始。