2013-04-29 3 views
1

У меня нет EJB без состояния, и я определил конечную точку веб-службы для него аннотацией @WebService (как видно ниже). Я управляю аутентификацией и сеансом, используя сеанс HTTP и используя WebServiceContext. Код работает нормально.Как я могу изменить тайм-аут сеанса http для конечной точки веб-службы для безгосударственного EJB?

@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; 
    } 

} 

Что мне нужно сделать, это изменить время ожидания сеанса http для конечной точки веб-службы EJB. Я пробовал все, но поскольку программа развертывается как ejb-jar на стеклянной рыбке, нет web.xml. Как изменить тайм-аут сеанса http для конечной точки веб-службы EJB? P.S. Я не могу использовать Stateful EJB, потому что я собираюсь использовать конечную точку веб-сервиса.

+0

Как насчет упаковки его как ВОЙНЫ? – kfis

+0

Структура упаковки EAR, она содержит файл WAR для другой цели. Я изменил тайм-аут сеанса в WAR, но не работал для EJB – Milad

+0

Есть ли вообще сеанс? –

ответ

0

Я как бы решу это! Я не смог найти глобальный параметр для изменения времени сеанса, но его можно изменить для каждого отдельного сеанса через HttpSession.setMaxInactiveInterval (int interval). Хотя на основе Java documentation этот метод получает интервал в секундах, но, по-видимому, он работает миллисекундами.

Смежные вопросы