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