簡単な答え: 簡単です。Service-Component ヘッダーに句を追加します。
<Service-Component>
com.mycompany.MyServlet1;
provide:=javax.servlet.http.HttpServlet;immediate:=true;
http=org.osgi.service.http.HttpService,
com.mycompany.MyServlet2;
provide:=javax.servlet.http.HttpServlet;immediate:=true;
http=org.osgi.service.http.HttpService
</Service-Component>
より良い答え。Apache Felix には、ホワイト ボード バンドルがあります。このバンドルは、サービス レジストリ内のサーブレット サービス (HttpServlet ではありません! ただし、フィルター サービスは追跡します) を追跡し、それらを現在の Http サービス サービスに自動的に追加します。したがって、エイリアスの「エイリアス」プロパティを使用して Servlet.class に登録するだけです。これもすぐに行う必要がないため、サーブレットが使用されるまで怠惰になります。これは 42 の回答で提唱されていますが、ヘッダー アプローチでは次のようになります。
<Service-Component>
com.mycompany.MyServlet1;
provide:=javax.servlet.servlet.Servlet;
properties="alias=/path"
</Service-Component>
最良の答えは、OSGi DS アノテーションを使用してサーブレットを登録することです。
@Component(provide=Servlet.class, properties='alias=/path')
public void MyServlet extends HttpServlet {
public void doGet(HttpServletRequest rq, HttpServletResponse rsp) {
...
}
}