Weblogic 12c、Jersey和Swagger的工作设置

Weblogic 12c、Jersey和Swagger的工作设置,jersey,weblogic,swagger,weblogic12c,Jersey,Weblogic,Swagger,Weblogic12c,我在Jersey和Swagger上有一个工作的Tomcat设置,但现在我必须让它在WebLogic12c(12.2.1)上工作。我试过几种不同的方法让它发挥作用,但我最终陷入了各种死胡同。我在JDeveloper做这个 我已经结束了与杰克逊版本的问题和其他类似的冲突,每一种方式我都尝试过。我已经让Jersey与Weblogic合作,但不是招摇过市 如果有帮助的话,我可以使用旧版本 这是我最近一次失败后pom的一部分: <dependency> <grou

我在Jersey和Swagger上有一个工作的Tomcat设置,但现在我必须让它在WebLogic12c(12.2.1)上工作。我试过几种不同的方法让它发挥作用,但我最终陷入了各种死胡同。我在JDeveloper做这个

我已经结束了与杰克逊版本的问题和其他类似的冲突,每一种方式我都尝试过。我已经让Jersey与Weblogic合作,但不是招摇过市

如果有帮助的话,我可以使用旧版本

这是我最近一次失败后pom的一部分:

    <dependency>
        <groupId>io.swagger</groupId>
        <artifactId>swagger-jersey2-jaxrs</artifactId>
        <version>1.5.10</version>
        <type>jar</type>
        <scope>compile</scope>
    </dependency>
    <dependency>
        <groupId>com.oracle.weblogic</groupId>
        <artifactId>javax.ws.rs.javax.ws.rs-api</artifactId>
        <version>12.2.1-0-0</version>
    </dependency>
据我所知,这是由于Glassfish/Jackson版本的问题

tl;dr

我正在寻找Weblogic 12/Jersey/Swagger的Hello World

jackson jars的版本似乎存在差异。更新版本的jackson jars(不包括在jersey2.x中)有com.fasterxml.jackson包,而旧Jersey 1.x有org.codehaus.jackson包


无论哪种方式,我们都可以在依赖项中包含最新版本的jackson。

WebLogic Server提供的jackson旧版本与Swagger需要的版本冲突。 要告诉WebLogic使用war中嵌入的版本,请将以下内容添加到WebLogic.xml中:


(...)
com.fasterxml.jackson*
(...)

我发现Weblogic 12.1.3的工作配置,如下所示

  • 我假设您已经将JAX-RS2.0部署为一个共享库

  • weblogic application.xml
    中,我列出了部署JAX-RS 2.0中列出的所有“首选应用程序包”:

    <weblogic-application>
        <library-ref>
            <library-name>jax-rs</library-name>
            <specification-version>2.0</specification-version>
            <exact-match>false</exact-match>
        </library-ref>
        <prefer-application-packages>
            <package-name>javax.ws.rs.*</package-name>
            <package-name>com.google.common.*</package-name>
            <package-name>com.sun.jersey.*</package-name>
            <package-name>org.eclipse.persistence.jaxb.rs.*</package-name>
            <package-name>org.codehaus.jackson.jaxrs.*</package-name>
            <package-name>weblogic.jaxrs.api.client.*</package-name>
            <package-name>weblogic.jaxrs.internal.api.client.*</package-name>
            <package-name>weblogic.jaxrs.dispatch.*</package-name>
            <package-name>weblogic.jaxrs.monitoring.util.*</package-name>
        </prefer-application-packages>
    </weblogic-application>
    

  • 自从我提出这个问题以来,已经过了相当长的一段时间。我已经走上了一条不同的道路,所以我不再有那种需要。为了知识共享,如果你对如何解决这个问题有想法,请分享!
    <weblogic-application>
        <library-ref>
            <library-name>jax-rs</library-name>
            <specification-version>2.0</specification-version>
            <exact-match>false</exact-match>
        </library-ref>
        <prefer-application-packages>
            <package-name>javax.ws.rs.*</package-name>
            <package-name>com.google.common.*</package-name>
            <package-name>com.sun.jersey.*</package-name>
            <package-name>org.eclipse.persistence.jaxb.rs.*</package-name>
            <package-name>org.codehaus.jackson.jaxrs.*</package-name>
            <package-name>weblogic.jaxrs.api.client.*</package-name>
            <package-name>weblogic.jaxrs.internal.api.client.*</package-name>
            <package-name>weblogic.jaxrs.dispatch.*</package-name>
            <package-name>weblogic.jaxrs.monitoring.util.*</package-name>
        </prefer-application-packages>
    </weblogic-application>
    
    <dependency>
        <groupId>io.swagger</groupId>
        <artifactId>swagger-jersey2-jaxrs</artifactId>
        <version>${swagger.version}</version>
        <exclusions>
            <exclusion>
                <groupId>org.glassfish.jersey.containers</groupId>
                <artifactId>
                    jersey-container-servlet-core
                </artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.glassfish.jersey.media</groupId>
                <artifactId>jersey-media-multipart</artifactId>
            </exclusion>
        </exclusions>
    </dependency>