2013-09-25 155 views
3

最近,我遇到了需要創建一個代理的Java Web服務消耗現有的WCF服務,然後暴露了他們的接口(即是「託管」 WCF服務的WebLogic Server上的唯一途徑我想象WebLogic Server上運行是可能的)。代理的Java Web服務

此服務的唯一作用就是充當代理(無附加功能)。

我需要能夠在我的代理java web服務中顯示與我現有的wcf服務中完全相同的接口。原因是,我有一個現有的客戶端應用程序使用我的wcf服務 - 新的代理java web服務必須兼容,因此客戶端不需要進行任何更改。

什麼是最好的方法來實現這一目標?可能嗎?我沒有經驗的Java技術,並會真正感謝任何提示。

到目前爲止,使用JDeveloper我已經成功基於現有的WCF服務的WSDL創建Web服務數據控制 - 這可能通過Web服務來公開這些數據服務嗎?

+0

也許Apache CXF文檔可能有解決方案?檢查http://cxf.apache.org/docs/how-do-i-develop-a-client.html並搜索「JAX-WS代理」它可能會幫助你。 – n3k0

+4

你應該可以做你正在問的東西。在weblogic端使用完全相同的WSDL並編寫代碼,以便在調用weblogic Web服務時調用WCF服務。除非我誤解了某些東西,否則客戶永遠不會知道其中的差別。 –

+0

非常感謝@better_use_mkstemp。這似乎是最合乎邏輯的方式。 –

回答

0

如果是代理功能,您正在尋找你可以使用this project

如果您使用maven

<dependency> 
     <groupId>org.mitre.dsmiley.httpproxy</groupId> 
     <artifactId>smiley-http-proxy-servlet</artifactId> 
     <version>1.2</version> 
    </dependency> 

如果你不使用Maven你可能只得到了Github上庫的jar文件。

然後在你的web.xml,你可以將它指向哪裏你實際的服務是:

<servlet> 
    <servlet-name>sampleProxy</servlet-name> 
    <servlet-class>org.mitre.dsmiley.httpproxy.ProxyServlet</servlet-class> 
    <init-param> 
     <param-name>targetUri</param-name> 
     <param-value>http://localhost:9200/</param-value> 
    </init-param> 
    <init-param> 
     <param-name>log</param-name> 
     <param-value>true</param-value> 
    </init-param> 
</servlet> 

<servlet-mapping> 
    <servlet-name>sampleProxy</servlet-name> 
    <url-pattern>/sample/*</url-pattern> 
</servlet-mapping> 

(如果你的實際服務的WSDL中有定義爲實際服務的端點,只是不停在WSDL的本地副本,改變終點,你就大功告成了。)

這可能是隨着時間的效率,因爲它得到,並要求旁邊沒有經驗。

+0

乾淨整潔的解決方案。非常感謝你! –

0

您幾乎已經回答了您的問題。 「代理Web服務」。 javaapp - > Java代理webservice - > wcf webservice。您可以使用相同的wsdl結構,只是端點地址中的IP只會更改。要在Java中開發代理Web服務,您可以使用Axis或Jax-WS。 快速入門Axis2作者:Deepal Jayasinghe是Axis2的好書。它很重要地解釋了服務客戶端和操作客戶端,您通常不會訪問Web引用。至於JAX-WS,您只需使用wsdl2java編譯wsdl併爲客戶端代碼生成存根。對於服務器代碼編寫(您將在此呼叫WCF)請參閱http://www.mkyong.com/tutorials/jax-ws-tutorials/。您可能需要複製到$ JDK_HOME \ jre \ lib \ endorsed目錄下的jaxb-api.jar和jaxws-api.jar文件。