2011-10-03 175 views
2

我知道如何使用@WebService和@Stateless註釋來編寫EJB並將其公開到WebService中。如何從WSDL生成EJB

但是因爲我們嘗試使用其他工具先生成WSDL,然後創建Java代碼。我可以使用WebLogic的WSDLC從WSDL生成服務代碼。但問題是由WSDLC生成的代碼不是EJB。有沒有建議做WSDL - > EJB?

如果可能的話,我不喜歡使用AXIS。

回答

2

我在EJB和Web服務工作了很長一段時間,沒有遇到任何這樣的工具。從邏輯上講它是有道理的,

  1. Web服務本身不是組件,而是作爲某個業務組件(本例中爲EJB)的外觀。它們彼此分離。
  2. WSDL基本代碼生成器將生成這些外觀或帶註釋的Pojos。
  3. POJO/Facade是否使用EJB或任何其他服務進一步委託,完全取決於實現。

    這是我覺得不會是這樣的工具,直接從WSDL生成EJB。但我的經驗再次受到限制。我很想知道這種工具是否存在。

編輯:僅供參考,有WSDL EJB Extension。但它需要現有的EJB將其操作綁定到WSDL。 (它不會創建EJB代碼)

+0

我讀過一些文章,就像你說的,將EJB公開給WebService並不是一個好設計。我會盡力學習更多,謝謝。順便說一句,自2003年1月以來WSIF沒有新的版本,也許我們不應該使用它。 – Dennys

1

嘛,不就是新的EJB 3.1是不是有很多比舊版本更好,但我仍然preffer使用Apache CXF的Web服務實現:

http://cxf.apache.org/

它有一個很好的WSDL2Java工具(這也可以作爲Maven插件):

http://cxf.apache.org/docs/wsdl-to-java.html

這需要您的WSDL文件,驗證它,然後產生非常乾淨的Java模板代碼用於實現您的Web服務:您有用於編組請求和響應的JAXB類,一個非常簡單的(編碼到接口的)web服務實現類,其中包含每個ws操作的方法(您必須使用業務邏輯實現自己的方法) ,以及另一個Java應用程序可以輕鬆訪問您的服務的可選Java客戶端存根。即使沒有客戶端存根,您仍然可以獲得一個很好的乾淨和標準的實現,它基本上只是Java類,不需要啓動(或測試)您的Web服務所需的EJB容器。

+1

由CXF生成的代碼與WebLogic的WSDL類似,但它具有更大的彈性,最重要的是我們不需要安裝整個WebLogic,謝謝。它也支持JAXB(WebLogic也使用JAXB,但AXIS2似乎只支持ADB和XmlBeans) – Dennys

0

SAP NetWeaver Developer Studio支持從WSDL生成EJB WebService。我只是試試。 http://help.sap.com/saphelp_nw72/helpdata/en/46/7f2fef88190ad3e10000000a11466f/content.htm

而且我也查被Apache CXF中,WebLogic WSDLC和SAP生成的代碼。他們是相似的。如果您使用EJB 3,則可以將@Stateless註釋添加到由Apache CXF或WebLogic生成的代碼中,以使其成爲EJB。

但我認爲將業務EJB直接公開給WebService並不是一個好主意。應該有一個服務層。將EJB用作服務層的好處是可以使用注入來輕鬆訪問其他EJB。