Resteasy 3 @Context HttpServletRequest возвращает нулевое значение в компоненте с состоянием - PullRequest
0 голосов
/ 01 февраля 2019

Я перевожу приложение JAVA EE из WebLogic в JBoss EAP 7.1, и у меня возникают проблемы при добавлении HttpServletRequest в мой класс с состоянием.Для Weblogic это работает нормально.В Jboss я всегда получаю null в:

@ Context private HttpServletRequest servletRequest;

Этот метод getSession () я использую в моем перехватчике.Для WebLogic я использую jersey 2, для JBoss я использую модуль resteasy 3.Я пытался следовать этой статье, но это не помогло мне, потому что InvocationContext не видит параметр HttpServletRequest. Служба REST JEE6 @AroundInvoke Interceptor вводит нулевой объект HttpServletRequest

В простых ResourceControllers (когда я внедряю через методы) все работает нормально, например:

 public Response getSomething (@Context HttpServletRrequest servletRequest) { }

Может быть, у вас есть несколько предложений, почему у меня есть эта проблема и как я могу ее исправить.

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.ejb.Stateful;
import javax.enterprise.context.RequestScoped;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.ws.rs.core.Context;

@RequestScoped
@Stateful
public class AuthContext {
    private static final Logger LOGGER = Logger.getLogger(AuthContext.class);

    @EJB
    private AuthCache authCache;

    @Context
    private HttpServletRequest servletRequest;

    public void getSession() {
      servletRequest.getCookies();
    }
}

Мой класс перехватчика:

@AuthSecured
@Interceptor
@Priority(Interceptor.Priority.APPLICATION)
public class AuthSecuredInterceptor {
    private static final Logger LOGGER = Logger.getLogger(AuthSecuredInterceptor.class);

    @EJB
    AuthContext authContext;

    @AroundInvoke
    public Object interceptor(final InvocationContext context) throws Exception {
        try {
          authContext.getSession()
        } catch (Exception e) {
            return ResourceUtil.getResponseAndLogException(LOGGER, e, e.getMessage());
        }
        return context.proceed();
    }
}

мой файл web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">
    <display-name>Patient service</display-name>
    <context-param>
        <param-name>resteasy.scan</param-name>
        <param-value>true</param-value>
    </context-param>
    <servlet>
        <servlet-name>resteasy-servlet</servlet-name>
        <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>resteasy-servlet</servlet-name>
        <url-pattern>/*</url-pattern>
    </servlet-mapping>
</web-app>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...