Weblogic 12.2.1.0.0 отключить значение шаблона базового URI по умолчанию (ресурсы)

Предварительно requsitions:

  1. Версия сервера WebLogic: 12.2.1.0.0
  2. Общее Java-приложение развернуто
  3. Начал использовать клиентскую библиотеку Джерси

Выпуск:

Сразу после этого / resources / URI был отображен / обработан (встроен) обработчиком сервлета WebLogic JAX-RS/Jersey.

Проблема отображения WL:

Гугл показал это (довольно похоже):

а также

Из документов Oracle:

* <сервлет-отображение>

... Если не указано, используется одно из следующих значений в порядке приоритета:

Значение аннотации @ApplicationPath, определенное в подклассе javax.ws.rs.core.Application.

...

Ценность ресурсов. Это базовый шаблон URI по умолчанию для приложений веб-службы RESTful.

...

Если указаны и , и @ApplicationPath, имеет приоритет. *

Мне вообще не нужны службы REST и сопоставление по умолчанию - я просто хочу использовать только клиент Джерси. Попробовав разные варианты, я не смог найти решения.

Явно добавлена ​​конфигурация в web.xml (пробовал как для JAX-RS 1.1, так и для версии 2.0), без реализации каких-либо конечных точек, поскольку используется только клиент Jersey с настройкой :

web.xml

<!--WebLogic Jersey Configuration-->
<servlet>
    <display-name>WL Jersey Configuration</display-name>
    <servlet-name>jersey</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <!--<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>-->
    <init-param>
        <param-name>jersey.config.wls.server.monitoring.enabled</param-name>
        <param-value>false</param-value>
    </init-param>

    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>jersey</servlet-name>
    <url-pattern>/jersey/*</url-pattern>
</servlet-mapping>

Дополнительно обновлен weblogic.xml:

<wls:container-descriptor>
    <wls:prefer-application-packages>
        ...
        <wls:package-name>org.glassfish.*</wls:package-name>
        <wls:package-name>com.sun.jersey.*</wls:package-name>
        <wls:package-name>javax.ws.rs.*</wls:package-name>
    </wls:prefer-application-packages>
</wls:container-descriptor>

Это не помогло. Любые идеи о том, как отключить / переопределить это поведение по умолчанию WLS 12.2.1.0.0? Или, может быть, я пропустил или делал что-то не так?

3 ответа

ОБНОВИТЬ. Проблема исправлена.

1. weblogic.xml изменено:

    <wls:container-descriptor>
    <wls:prefer-application-packages>
        <wls:package-name>antlr.*</wls:package-name>
        <wls:package-name>javax.persistence.*</wls:package-name>
        <wls:package-name>javax.validation.*</wls:package-name>
        <wls:package-name>org.apache.commons.*</wls:package-name>
        <wls:package-name>org.springframework.*</wls:package-name>
        <wls:package-name>org.hibernate.*</wls:package-name>
        <wls:package-name>ch.qos.*</wls:package-name>
        <wls:package-name>org.slf4j.*</wls:package-name>            
        <!--Jax-RS-->
        <wls:package-name>javax.ws.rs.*</wls:package-name>
        <!--Jersey 2.0-->
        <wls:package-name>org.glassfish.jersey.*</wls:package-name>
        <wls:package-name>org.glassfish.hk2.*</wls:package-name>
        <wls:package-name>org.jvnet.hk2.*</wls:package-name>
        <wls:package-name>jersey.repackaged.org.objectweb.asm.*</wls:package-name>
        <!-- wls -->
        <wls:package-name>weblogic.jaxrs.api.client.*</wls:package-name>
        <wls:package-name>weblogic.jaxrs.internal.api.client.*</wls:package-name>
        <wls:package-name>weblogic.jaxrs.dispatch.*</wls:package-name>
        <wls:package-name>weblogic.jaxrs.monitoring.util.*</wls:package-name>
    </wls:prefer-application-packages>
    <wls:prefer-application-resources>
        <!-- apis -->
        <wls:resource-name>javax.ws.rs.*</wls:resource-name>
        <!-- jersey -->
        <wls:resource-name>META-INF/services/org.glassfish.jersey.*</wls:resource-name>
        <wls:resource-name>com.sun.jersey.*</wls:resource-name>
        <wls:resource-name>org.glassfish.jersey.*</wls:resource-name>
        <wls:resource-name>jersey.repackaged.*</wls:resource-name>
        <!-- hk2 -->
        <wls:resource-name>META-INF/services/org.glassfish.hk2.*</wls:resource-name>
        <wls:resource-name>org.glassfish.hk2.*</wls:resource-name>
        <wls:resource-name>org.jvnet.hk2.*</wls:resource-name>
        <wls:resource-name>org.jvnet.hk2.tiger_types.*</wls:resource-name>
    </wls:prefer-application-resources>
</wls:container-descriptor>

то есть:

  • Добавлен раздел .

  • в разделе были добавлены следующие блоки:

      <!--Jax-RS--> and below
      <!--Jersey 2.0--> and below
      <!-- wls --> and below
    

2. Добавлена ​​конфигурация конечной точки:

import org.glassfish.jersey.server.ResourceConfig;

public class JerseyApplication extends ResourceConfig {
    public JerseyApplication() {
        packages("path.to.the.package");
    }
}

3. Добавлена ​​зависимость в pom.xml:

    <dependency>
        <groupId>javax.ws.rs</groupId>
        <artifactId>javax.ws.rs-api</artifactId>
        <version>2.0</version>
        <scope>provided</scope>
    </dependency>

4. Конфигурация сервлета web.xml:

    <!--WebLogic Jersey Configuration-->
<servlet>
    <display-name>WL Jersey Configuration</display-name>
    <servlet-name>jersey</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>javax.ws.rs.Application</param-name>
        <param-value>path.to.the.JerseyApplication</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>jersey</servlet-name>
    <url-pattern>/jersey/*</url-pattern>
</servlet-mapping>

Эта ссылка очень помогла

PS Позднее использование библиотеки Jackson 2.X на WLS было аналогичным образом исправлено (просто добавили соответствующий класс в раздел )

У меня была такая же проблема с weblogic 12.2.1 и com.sun.jersey, я обновил org.glassfish.jersey до версии 2.26.

      <dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-server</artifactId>
    <version>2.26</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-servlet</artifactId>
    <version>2.26</version>
    <scope>provided</scope>
</dependency>
<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-client</artifactId>
    <version>2.26</version>
    <scope>provided</scope>
</dependency>

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

      <servlet>        
    <servlet-name>your servlet name</servlet-name>        
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>
            path.to.rest.resources
        </param-value>
    </init-param>       
    <load-on-startup>1</load-on-startup>    
</servlet>  

Никаких других изменений не потребовалось, и проблема была решена. Надежда может быть полезной

Решение, предоставленное Тарасом, работает нормально, мне пришлось добавить следующие зависимости:

<dependency>
    <groupId>org.glassfish.jersey.containers</groupId>
    <artifactId>jersey-container-servlet</artifactId>
    <version>2.27</version>
</dependency>
<dependency>
    <groupId>org.glassfish.jersey.inject</groupId>
    <artifactId>jersey-hk2</artifactId>
    <version>2.27</version>
</dependency>
Другие вопросы по тегам