2014-03-02 48 views
0

我是一位Java SE程序員,並探討實現JAX-WS Web服務以實現與我們的Web服務器集成的目的。到目前爲止,我還沒有使用網絡服務的經驗,因此希望得到每個人的專家意見。關於實現非Java(PHP)端點使用的JAX-WS Web服務的建議

背景是我的公司使用Java SE在內部開發和託管POS系統。我們正在規劃電子商務功能,這些功能將通過外部網絡開發公司在HTML/PHP中實施,並在外部託管。

因此,我們正在探索在我們的端點上實現JAX-WS Web服務,以便與運行PHP端點的電子商務服務器集成。

我做了一些研究,我的理解是:

我現在想知道在建立我們的電子商務平臺的外部網絡開發公司討論實施時,什麼是正確的方法。大多數網站和論壇的例子都假定在兩個端點上都有Java,並且兩個端點都由同一個開發人員/團隊實現。

根據我有限的understudying,我收集過程將是:

  1. 我/我公司創建Web服務(編寫Web服務方法的Java)
  2. 我/我公司創建服務器程序
  3. 從URI生成的WSDL(HTTP://:/ md5WebService WSDL?)隨後被用作我們的內部POS系統及外部電子商務平臺之間的界面合同我的服務器程序的

正在實施電子商務平臺的Web開發公司然後使用wsdl來實現PHP SoapClient端點。

而在我們的內部POS系統需要使用由外部Web開發公司創建的Web服務的情況下,他們會將我的wsdl傳遞給我,並使用它來打電話給他們。

這是正確的方法嗎?

非常感謝。

乾杯, 亞瑟

回答

0

在Java中,你實際上有兩種方式來啓動你的Web服務的設計。您可以先創建WSDL(Web服務描述語言)合同(合同優先方法),然後讓Java或某些框架工具爲您創建Java框架類,您可以使用它們來實現每個操作的邏輯,也可以通過代碼啓動第一種方法和實現每個Web方法及其邏輯,然後讓Java或一些外部框架工具爲您生成WSDL contract

無論哪種方式你開始,結果應該是非常相似和平臺獨立。用於基於WSDL的Web服務的標準消息格式是SOAP (Simple Object Access Protocol),它基於XML (eXtensible Markup Language),其定義爲平臺和編程語言中性。

因此,在實現您的服務併爲WS端點啓動服務器並將?wsdl添加到端點URL的末尾之後,應將WSDL協議返回給調用者,該調用者可用於爲所需編程語言創建客戶端存根這進一步簡化了從Web服務發送和接收消息的過程。但請注意,可能不需要創建存根文件,因爲所有信息都可能直接從WSDL合約中分析出來。由於缺乏關於PHP的知識,我不能詳細說明如何直接從PHP調用WS或需要/建議創建存根文件。

爲了從您的服務中調用其他WS,您需要在您的一個Web方法中創建一個WS客戶端,並調用一個或多個由遠程WS提供的操作,並在您的Web方法中處理響應。

因爲我不確定您是否使用任何(Java)框架,如f.e. Apache CXF我在這裏沒有提供任何代碼示例。爲了將外部Web服務集成到您的服務中,您還可以看看Apache Camel,它提供了對許多基於Java的框架(包括CXF)的集成支持。在這裏,您的Web服務被視爲Consumer,而您需要調用的其他外部服務則被視爲Producers。內部和外部服務之間的交互在這裏建立在一個路徑中,您可以在其中應用各種各樣的Enterprise Integration Patterns (EIP),如將響應中包含的多個元素拆分爲可以並行處理的不同對象。

一般而言,如果您遵循代碼優先的方法,您所列舉的步驟看起來不錯,但正如前面提到的,您也可以先從定義合同開始。根據您對WSDL/XSD語法的瞭解(知道的確切語法越少,應該使用代碼優先方法的次數越多),首先對合同進行創建可能會更快地啓用PHP側集成,同時您仍然在開發實現的內部邏輯。

+0

非常感謝羅馬的詳細說明和資源的鏈接供我參考。乾杯。 – Arthur

0
it is possible to mix end-point technologies, and specifically in my case JAX-WS as our endpoint and PHP SoapClient on our e-commerece end-point PHP SOAP Client to consume JAX-WS with Basic Http Authentication Using PHP SoapClient with Java JAX-WS RI (Webservice) 

這就是介紹webservice概念的確切目的。您不必擔心客戶端和服務器實施的平臺或語言。客戶端和服務器將根據wsdl中的約定交換xml消息(獨立於平臺)。

繼續您的理解。

+0

感謝kingAm確認我的理解。乾杯。 – Arthur

相關問題