Weblogic 12.2.1.0.0禁用默认的基本URI模式值(资源)

时间:2018-12-14 09:12:41

标签: java weblogic12c jersey-client servlet-mapping

预先配置:

  1. WebLogic Server版本:12.2.1.0.0
  2. 已部署通用Java Web应用程序
  3. 开始使用Jersey 客户端

问题:

紧接着, / resources / URI已由(嵌入式)WebLogic JAX-RS / Jersey servlet处理程序映射/处理。

WL映射问题:

enter image description here

Google搜索显示了此内容(非常相似):

从Oracle文档中获取:

  

*

...如果未指定,则按优先级使用以下值之一:

     在javax.ws.rs.core.Application子类中定义的

@ApplicationPath 批注值。

     

...

     

资源。这是默认基本URI模式   RESTful Web服务应用程序。

     

...

     

如果 和@ApplicationPath均为   指定后, 优先。*

我完全不需要REST服务和默认映射-只想使用仅Jersey客户端。尝试了不同的选项后,我没有任何解决方案。

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的默认行为的任何想法?还是我错过了或者做错了什么?

2 个答案:

答案 0 :(得分:0)

更新。问题已解决。

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 Servlet配置

    <!--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>

This link helped a lot

P.S。后来在WLS上对Jackson 2.X库的使用也得到了类似的修复(只是在 部分中添加了适当的类)

答案 1 :(得分:0)

Taras共享的解决方案运行良好,我必须添加以下依赖项:

<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>