我正在嘗試(學(xué)習(xí)如何)javax.servlet.Servlet使用 OSGi 提供的聲明性服務(wù)(DS)創(chuàng)建一個 Servlet(),如下所示:import java.io.IOException;import javax.servlet.Servlet;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.osgi.service.component.annotations.Component;@Component(service = Servlet.class, property = { "alias:String=/hello" }, immediate = true)public class LogsHTTPServlet extends HttpServlet { private static final long serialVersionUID = 2302372200114479484L; @Override public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { try { resp.setContentType("text/plain"); resp.getWriter().println("It works!"); } catch (Exception e) { e.printStackTrace(); } resp.setStatus(200); }}當(dāng)我在Eclipse (2019-03 (4.11.0), build id: 20190314-1200)上使用自定義運(yùn)行配置在此目標(biāo)平臺上運(yùn)行項(xiàng)目時(shí),我使用此 VM 參數(shù)設(shè)置(和其他必需的依賴項(xiàng))(),我在 osgi 控制臺中看到如下內(nèi)容: org.eclipse.jetty.server-Dorg.osgi.service.http.port=8080osgi> 2019-05-07 18:22:28.236:INFO::Start Level: Equinox Container: 0d7d3d67-401b-48eb-b016-6e6c0c16352c: Logging initialized @1590ms to org.eclipse.jetty.util.log.StdErrLog2019-05-07 18:22:28.388:INFO:oejs.session:Start Level: Equinox Container: 0d7d3d67-401b-48eb-b016-6e6c0c16352c: DefaultSessionIdManager workerName=node02019-05-07 18:22:28.388:INFO:oejs.session:Start Level: Equinox Container: 0d7d3d67-401b-48eb-b016-6e6c0c16352c: No SessionScavenger set, using defaults2019-05-07 18:22:28.389:INFO:oejs.session:Start Level: Equinox Container: 0d7d3d67-401b-48eb-b016-6e6c0c16352c: node0 Scavenging every 660000ms2019-05-07 18:22:28.427:INFO:oejs.session:Start Level: Equinox Container: 0d7d3d67-401b-48eb-b016-6e6c0c16352c: node0 Scavenging every 660000ms我該如何解決這個問題?
1 回答

森欄
TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超5個贊
而不是alias
使用該osgi.http.whiteboard.servlet.pattern
屬性:
@Component(service = Servlet.class, property = {"osgi.http.whiteboard.servlet.pattern=/hello/*" })
或者,使用當(dāng)前的 osgi 綱要依賴項(xiàng)(版本 7.0.0),您可以使用如下@org.osgi.service.http.whiteboard.propertytypes.HttpWhiteboardServletPattern
注釋:
@Component(service=Servlet.class) @org.osgi.service.http.whiteboard.propertytypes.HttpWhiteboardServletPattern("/hello/*")
添加回答
舉報(bào)
0/150
提交
取消