亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用 OSGi 聲明式服務正確實現 servlet?

如何使用 OSGi 聲明式服務正確實現 servlet?

MMTTMM 2022-11-10 15:15:12
我正在嘗試(學習如何)javax.servlet.Servlet使用 OSGi 提供的聲明性服務(DS)創建一個 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);    }}當我在Eclipse (2019-03 (4.11.0), build id: 20190314-1200)上使用自定義運行配置在此目標平臺上運行項目時,我使用此 VM 參數設置(和其他必需的依賴項)(),我在 osgi 控制臺中看到如下內容: 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貢獻1810條經驗 獲得超5個贊

而不是alias使用該osgi.http.whiteboard.servlet.pattern屬性:

@Component(service = Servlet.class, property = {"osgi.http.whiteboard.servlet.pattern=/hello/*" })

或者,使用當前的 osgi 綱要依賴項(版本 7.0.0),您可以使用如下@org.osgi.service.http.whiteboard.propertytypes.HttpWhiteboardServletPattern注釋:

@Component(service=Servlet.class)
@org.osgi.service.http.whiteboard.propertytypes.HttpWhiteboardServletPattern("/hello/*")

https://osgi.org/specification/osgi.cmpn/7.0.0/service.http.whiteboard.html#service.http.whiteboard-i21223311


查看完整回答
反對 回復 2022-11-10
  • 1 回答
  • 0 關注
  • 159 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號