我一直在做關於將Eclipse插件公開爲Web服務的研究,但是我感到困惑。如何將Eclipse插件作爲Web服務公開?
我的要求基本上是爲一組Web服務構建一個Equinox後端。 我將大量使用EMF和相關項目,所以考慮到這一目標,我一直在閱讀關於Equinox/OSGI以及構建我所需的選項。
但是,有一些神祕的觀點,總體來說還有大量的項目。鑑於下面的調查結果,我想聽聽你的建議。也許有一個選項我錯過了,或者你以前做過。這裏是被提名者(鼓點)
在Web容器中託管Equinox。使用bridge.war,插件可以暴露一個servlet。問題是,爲了使用像RESTEasy這樣的好REST框架(我最喜歡的),REST框架需要是一個生活在Equionox運行時的osgi包。我花了3天時間,並且由於類加載器問題,這不起作用。我現在確信我無法在Equinox中擁有RestEasy。我可以在Web容器中使用RestEasy,並使用XML序列化/反序列化將Web容器中的代碼與Equionox中的代碼進行對話,但是這樣感覺像是浪費了資源。不過,這可能會起作用。
另一種選擇似乎是ECF,它是分佈式OSGI的實現,它似乎支持SOAP/Rest。但是,我找不到一個將Equinox託管的功能公開爲Web服務的清晰教程。所以這仍然迫使我不要使用RestEasy,但至少它似乎給了我一個適合Equinox的框架。我可能仍然需要將其保存在Web收件人的可擴展性中。
然後是Eclipse處女座,它似乎支持託管Web應用程序以及OSGI運行時,顯然Web容器託管的代碼可以與OSGI運行時代碼交談。不過,我不確定是否可以傳遞類,因爲在Web容器下創建的Jaxb註釋類型A可能使用與OSGI運行時插件不同的類加載器。此外,這種設置將我鎖定在處女座,我寧願與JBoss等一起用於生產。
因此,鑑於這些選項以及可能更多我目前不知道的內容,您將如何將EMF和其他基於Eclipse框架的項目公開爲Web服務?
編輯: 基於我希望添加更多的好迴應。問題的部分細節,部分評論不適合評論部分。
我在問題後的研究讓我與接受的答案完全相同:Apache CXF現在是分佈式OSGI的實現,這很好。我放棄了RestEasy。我目前的擔心是,我已經有一個XSD創建了我的類。 RestEasy使暴露這些變得非常容易,我必須在這裏做同樣的事情。我的插件將不得不使用這些基於JAXB的類。在最壞的情況下,我可能會嘗試使用提供JAXB支持的Eclipse Link項目,以創建XML內容,並通過基本的servlet使用或基於CXF的字符串值傳遞它。所以這裏討論的解決方案並不完美,但我認爲這是目前最好的解決方案。
非常好的答案,非常感謝您的詳細回覆。請參閱我的「原始問題」的補充,該問題在「編輯:」之後開始。 – mahonya
另一個關鍵問題是:那麼建議如何公開OSGI?如果不在網絡servlet中運行Equionox? – mahonya
推薦的方法是將Web/servlet容器嵌入到OSGI容器中。這並不總是可能的,但是並不是所有的web容器都有OSGI實現。 – EJK