2009-10-20 259 views
2

我需要安裝哪些軟件包?至少,這必須是像Jetty這樣的servlet容器/ web服務器,但是基本的org.apache.felix.http.jetty軟件包可以做什麼,或者是否還有其他軟件包需要其他軟件包來發現web.xml如何將Web應用程序部署到Apache Felix中?

我把webapp放在標準的WAR中,添加OSGi頭文件並完成了嗎?或者是否有OSGi環境所需的任何webapp特定頭文件?

還有什麼其他配置要做?

什麼是使用Maven自動執行這些步驟的選項?

我已經嘗試過部署org.apache.felix.http.jetty捆綁包,我在localhost:8080上得到了一個使用404進行回答的Jetty。接下來,我嘗試了一個簡單的webapp,只有一個靜態HTML文件,配置爲welcome-file。據我所知,Jetty甚至沒有注意到部署描述符,至少將測試webapp部署到Felix中並沒有改變任何東西。

回答

1

單獨使用Jetty和Web應用程序是不夠的,必須有一些粘合劑才能在特定的上下文中將Web應用程序實際註冊到Web服務器。該工程

一個例子:

  • 使用在org.ops4j.pax.web.pax-web-service包作爲HTTP服務的大同Web服務,它運行碼頭,太
  • 一個Webapp-Context頭添加到您的捆綁包清單
  • 使用Pax網絡擴展器在您的軟件包註冊時查找該標題,然後將其掛接到http服務。

由於某些原因,它必須是Pax webservice,如果我用org.apache.felix中的基本jetty bundle替換它,它不會正確解析URL。

我還沒有真正理解這裏發生了什麼,但至少我得到了它的工作。我懷疑如果你讓你的webapp包在bundle激活器中執行一些操作來執行連接,你可以不使用Pax bundle和bundle header。

+0

也許註冊是可能的通過注入聲明服務(如果不是,它肯定應該是)。 – pmf 2009-10-21 12:13:30

1

您不必使用Pax Web,但它確實使事情變得更容易。如果沒有Pax Web,您需要一個實現OSGi HTTP服務的包(這裏有一個Jetty包),然後獲得對HttpService的服務引用。你可以註冊你的web應用程序,但它很乏味。如果您想查看血腥詳細信息,請查看Pax Web代碼。 Pax Web不會向HttpService添加任何內容,但只處理所有註冊問題。