私はグーグルでスタックオーバーフローしましたが、これを機能させることはできません。これが私のコードです。subscribe メソッドでセッション属性「topic」を設定しましたが、sessionDestroyed では null として取得されます。 SOに関するこの質問は私に関連しているようですが、問題は解決しません。
@Path("/jpubsub/{topic}")
public class JMSSubscribe implements HttpSessionListener, ServletContextListener, MessageListener, ExceptionListener {
@GET
public subscribe(@javax.ws.rs.core.Context HttpServletRequest request) {
HttpSession session = request.getSession();
session.setAttribute("topic", "1");
}
@Override
public void sessionCreated(HttpSessionEvent hse) {
HttpSession session = hse.getSession();
System.out.println("Created Session - ID : " + session.getId());
}
@Override
public void sessionDestroyed(HttpSessionEvent hse) {
System.out.println("Destroyed Session - ID : " + hse.getSession().getId());
System.out.println("Topic ID sessionDestroyed - " + hse.getSession().getAttribute("topic"));
}
助けてください。
PS: で属性を設定するとsessionCreated()
、 で取得されsessionDestroyed()
ます。異なるセッション オブジェクトを使用しているからですか? また、セッションIDを印刷するとき。3 つのメソッドすべてで同じセッション ID を取得します。
他のコードが必要かどうか尋ねてください。