У меня есть настройка, в которой я использую Pax-Web WAR-Extender, поэтому я могу регистрировать сервлеты стандартным образом.
До использования WAR-Extender сервлет был одноэлементным, в который я мог вводить другие ссылки osgi. С помощью расширителя службы внедряются из-за XML декларативной службы, но когда я обращаюсь к сервлету с помощью браузера, создается новый экземпляр без внедрения другой службы.
@Component
@SuppressWarnings("serial")
@WebServlet(name="TestServlet", urlPatterns={"/Test"})
public class TestServlet extends HttpServlet{
private UserDataManager userDataManager;
public TestServlet(){
System.out.println("------------------- New Servlet");
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
HttpSession session = req.getSession();
MbsSessionId mbsId = (MbsSessionId)session.getAttribute("MbsSessionId");
UserData userData = userDataManager.getUserData(mbsId);
resp.getOutputStream().println(userData.toString());
}
@Reference
void bindUserDataManager(UserDataManager userDataManager){
this.userDataManager = userDataManager;
}
}
Моя цель — избежать программного вызова OSGi-Service-Registry. Есть ли какая-либо конфигурация, чтобы мой сервлет рассматривался как синглтон или чтобы OSGi-Service повторно вводился?