簡體   English   中英

如何創建Web服務代理? 我們可以生成@Endpoints嗎?

[英]How to create a web service proxy? Can we generate @Endpoints?

我正在使用審核進行Web服務代理(后來進行緩存=創建自己的響應),並且我需要生成@Endpoints(這樣就可以轉發,即調用遠程Web服務或虛擬Atleast)。 似乎需要進行編組/拆組,因為代理將在請求中添加“內容”。

我們將使用spring-ws和JAXB。 獲得了代理Web服務的所有XSD和靜態WSDL。

周圍有什么提示嗎? 有人在做類似的事情嗎? 你好嗎

有沒有簡單的方法如何使用彈簧或彈簧集成實現此目的?

提前致謝..

使用Spring WS和Spring Integration應該可以實現:

借助Spring WS,您可以為遠程WS創建一個代理類,並圍繞org.springframework.ws.client.core.WebServiceTemplate與WS進行對話-該WS具有用於將請求編組為xml和解編為XML的API。響應。

使用Spring Integration,您可以使用出站Webservices網關 ,但是您需要在消息傳遞網關的前面添加該消息傳遞網關,該網關將充當您的代理,其方式如下:

<int:gateway id="wsproxy"  service-interface="..ProxyInterface" default-request-channel="requestChannel" default-reply-channel="replyChannel"/>

<int-ws:outbound-gateway id="wsGateway" request-channel="requestChannel" uri="http://serviceURL" marshaller="someMarshaller" unmarshaller="someUnmarshaller"/>

但是,我建議您使用WebserviceTemplate的第一種方法,因為這里您不需要非常復雜的集成。

今天,我可以說說如何在不進行彈簧整合的情況下進行。 我們發現了兩種不同的方法來生成@Endpoint類。

1)使用XSLTFreemarker,我們在預編譯階段生成了端點類源。 XSLT轉換遍歷所有WSDL文件,以創建一個摘要文件,然后該摘要文件用於生成源。

2)我們使用Javassist復制了模板類,然后生成了有關JAXB2Marshaller實例的內容的方法,最后使用FactoryBean實例化了對象,所有這些都在服務器啟動時進行

我們遇到的問題是,一組XSD文件以某種形式編寫,這些文件導致生成的根對象沒有@XmlRootAnnotation。 我們內部使用的Javassist版本與Java 1.4兼容(沒有泛型),因此我們對XJC使用了全局自定義文件,並對根對象使用了強制@XmlRootAnnotation。

兩種解決方案都有其優點和缺點,但是與使用ESB相比,它們都更簡單。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM