wildfly 10.0, jax-ws и сеанс с состоянием

Я хочу создать веб-сервис Jax-ws с использованием Wildfly 10.0, и я хочу, чтобы этот веб-сервис имел сеанс с сохранением состояния (чтение и запись в сеансе), я его искал и вижу следующую ссылку: https://docs.oracle.com/cd/E14571_01/web.1111/e13734/stateful.htm

К сожалению, сессионный код не работает. Когда я вызываю метод sayHello, использующий сессию, время заканчивается и возвращается (исключение: java.lang.NullPointerException Message: java.lang.NullPointerException).

Я использую Eclipse Mars, динамический веб-сервис, Wildfly 10.0 и веб-сервис (сервер: с использованием Wildfly 10.0, время выполнения веб-сервиса: Apache Axis и использование файла ear для этого проекта)

Код является:

package com.sample;

@WebService(targetNamespace = "http://sample.com/", serviceName = "Test1Service", portName = "Test1Port")
@Stateful
public class Test1 {

@Resource
private WebServiceContext wsContext;

@WebMethod
public String sayHello() {
    MessageContext mc = wsContext.getMessageContext(); 
    HttpSession session = ((javax.servlet.http.HttpServletRequest) mc.get(MessageContext.SERVLET_REQUEST))
            .getSession();

    if (session == null)
        throw new WebServiceException("No HTTP Session found");

    String item = "";
    try {
        item = (String) session.getAttribute("name1");

    } catch (Exception e) {
        e.printStackTrace();
    }

    if (item == null || item.equals(""))
        item = "good";

    session.setAttribute("name1", item);
    return "Hello " + session.getAttribute("name1");
}

@WebMethod
public int setValue(int x) {
    return x;
}
}

Обратите внимание, что метод setValue работал успешно, но метод sayHello не работал

1 ответ

Спасибо всем,

Проблема: я использовал Axis, а не Axis2, где Axis2 поддерживает сеанс Http.

Другие вопросы по тегам