Weblogic 12.2.1.0.0 отключить значение шаблона базового URI по умолчанию (ресурсы) - PullRequest
0 голосов
/ 14 декабря 2018

Предварительные требования:

  1. Версия сервера WebLogic: 12.2.1.0.0
  2. Развернуто распространенное веб-приложение на Java
  3. Запущено с использованием клиента Jersey library

Issue:

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

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

enter image description here

Google показал это (очень похоже):

и

Из документов Оракула:

*

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

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

...

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

...

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

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

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

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?Или, может быть, я пропустил или сделал что-то не так?

1 Ответ

0 голосов
/ 28 декабря 2018

UPDATE.Проблема исправлена.

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>

, то есть:

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

  • in В секции добавлены следующие блоки:

      <!--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 config сервлета :

    <!--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 было аналогичным образом исправлено (только что добавил правильный класс к раздел)

...