ステートレス EJB があり、注釈 @WebService によって Web サービス エンドポイントを定義しました (以下を参照)。HTTP セッションと WebServiceContext を使用して、認証とセッションを管理します。コードは正常に動作します。
@Stateless
@WebService
public class UserManager implements UserManagerRemote{
@Resource
private WebServiceContext webServiceContext;
@Override @WebMethod
public boolean login(String username, String password){
if(!checkUser(username, password))
return false;
HttpSession session = HttpServletRequest)webServiceContext.getMessageContext().
get(MessageContext.SERVLET_REQUEST)).getSession();
session.setAttribute("username", username);
return true;
}
@Override @WebMethod
public int doSomthing(){
HttpSession session = ((HttpServletRequest)webServiceContext.getMessageContext().
get(MessageContext.SERVLET_REQUEST)).getSession();
if(session == null)
return -1;
//do the thing and return the result
return 1;
}
}
私がする必要があるのは、EJB Web サービス エンドポイントの http セッションのタイムアウトを変更することです。私はあらゆることを試しましたが、プログラムはグラスフィッシュに ejb-jar としてデプロイされるため、web.xml はありません。EJB Web サービス エンドポイントの http セッション タイムアウトを変更するにはどうすればよいですか? PS Web サービス エンドポイントを使用するため、ステートフル EJB を使用できません。