Получение нулевого ServletContext с использованием @Context в приложении IBM Websphere 8.5 JAX-RS

Я разрабатываю службу JAX-RS, развернутую в IBM Websphere 8.5. Я пытаюсь ввести ServletContext, используя следующий код (в настоящее время на уровне поля в классе, но я также пытался передать его в качестве параметра в методе службы, но у меня возникла та же проблема).

@Context
private ServletContext servletContext = null;

Когда я вызываю метод службы, переменная servletContext имеет значение null.

Мой файл web.xml настроен следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
    <servlet-name>MyServices</servlet-name>
    <servlet-class>com.ibm.websphere.jaxrs.server.IBMRestServlet</servlet-class>
    <init-param>
        <param-name>javax.ws.rs.Application</param-name>
        <param-value>com.mycompany.ApplicationConfig</param-value>
    </init-param>
            <init-param>
        <param-name>myParam</param-name>
        <param-value>myValue</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>MyServices</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

Then in the code I am using the servletContext to get an init-param, for example:

String myParam = servletContext.getInitParameter("myParam");

У меня есть предоставленный IBM файл j2ee.jar (для Java 6, который работает) в качестве зависимости, поставляемой с файлом WAR.

Итак, мой вопрос: это ошибка с реализацией Websphere JAX-RS, или я что-то здесь упускаю?

Я нашел несколько руководств о том, как писать приложения JAX-RS для Websphere, но ни в одном из них не упоминается внедрение ServletContext. В информационном центре IBM Websphere 8.5 также нет ссылки на то, как это сделать (по крайней мере, я вижу).


person Justin Phillips    schedule 13.02.2014    source источник


Ответы (1)


Прежде всего, вам следует избегать использования устаревшей спецификации сервлета версии 2.4 с JAX-RS. Даже версия 2.5 имеет некоторые неприятные ограничения, связанные с внедрением зависимостей в bean-компоненты JAX-RS.

Поскольку вы используете WAS 8.5, я предлагаю перейти на Servlets 3.0, обновив web.xml.

person ᄂ ᄀ    schedule 14.02.2014
comment
Хорошо, спасибо, я попробую 3.0 и посмотрю, решит ли это проблему, и сообщу, что произошло. - person Justin Phillips; 14.02.2014