Weblogic服务器带有一个共享库,因此您可以部署JAX-RS 2.0应用程序。 但是仅限于Jersey 2.5.1版,更改的说明并不完全清楚或直观 。 我最近加入了Oracle的新团队,我要做的第一件事就是着眼于升级依赖库。 现在我已经与泽西队进行了交谈,他们不支持这种组合。 但它可能足以使您摆脱困境,直到发布下一版Weblogic。
我将使用Maven进行此操作,因为这意味着所有打包和下载均已为您完成。 该项目的基本结构如下:
|-pom.xml
|-src
| |-main
| | |-java
| | |-resources
| | | |-META-INF
| | | | |-MANIFEST.MF
| | |-webapp
| | | |-WEB-INF
| | | | |-web.xml
| | | | |-weblogic.xml
我刚刚使用Netbeans生成了一个香草Maven项目,然后添加了我所需的Jersey依赖项,很可能可以确定地将此文件削减一些。 但这对我来说足够好:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.example</groupId><artifactId>JerseyLibrary</artifactId><version>2.9</version><packaging>war</packaging><name>Jersey Library</name><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><jersey.version>2.19</jersey.version></properties><dependencies><dependency><groupId>org.glassfish.jersey.containers</groupId><artifactId>jersey-container-servlet</artifactId><version>${jersey.version}</version><scope>compile</scope></dependency><dependency><groupId>org.glassfish.jersey.core</groupId><artifactId>jersey-client</artifactId><version>${jersey.version}</version></dependency><dependency><groupId>org.glassfish.jersey.media</groupId><artifactId>jersey-media-multipart</artifactId><version>${jersey.version}</version><type>jar</type></dependency><dependency><groupId>org.glassfish.jersey.media</groupId><artifactId>jersey-media-moxy</artifactId><version>${jersey.version}</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.1</version><configuration><source>1.7</source><target>1.7</target></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-war-plugin</artifactId><version>2.3</version><configuration><failOnMissingWebXml>false</failOnMissingWebXml><archive><manifestFile>src/main/resources/META-INF/MANIFEST.MF</manifestFile></archive></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-dependency-plugin</artifactId><version>2.6</version><executions><execution><phase>validate</phase><goals><goal>copy</goal></goals><configuration><outputDirectory>${endorsed.dir}</outputDirectory><silent>true</silent><artifactItems><artifactItem><groupId>javax</groupId><artifactId>javaee-endorsed-api</artifactId><version>7.0</version><type>jar</type></artifactItem></artifactItems></configuration></execution></executions></plugin></plugins></build></project>
MANIFEST.MF文件中的下一个最重要的文件,它告诉Weblogic当您尝试部署.war时,这是一个库,还包含它提供的版本:
Specification-Title: Weblogic JAX-RS 2.0
Specification-Version: 2.0
Implementation-Title: Weblogic JAX-RS 2.0 Reference Implementation
Implementation-Version: 2.19
Extension-Name: jax-rs
最后,您必须包含一个weblogic.xml文件来告诉服务器您需要从此处获取某些类,而不是服务器类加载器。 我从12.1.3附带的2.5.1共享库附带的文件中获得了这一基础,然后添加了几行以考虑代码的前进方式。 根据您的代码在做什么,您可能必须再添加一些。
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-appxmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://xmlns.oracle.com/weblogic/weblogic-web-app http://xmlns.oracle.com/weblogic/weblogic-web-app/1.4/weblogic-web-app.xsd"><container-descriptor><prefer-application-packages><!-- apis --><package-name>javax.ws.rs.*</package-name><!-- guava --><package-name>com.google.common.*</package-name><!-- jersey providers --><package-name>com.sun.jersey.*</package-name><package-name>org.glassfish.jersey.*</package-name><package-name>jersey.repackaged.*</package-name><!-- hk2 --><package-name>org.jvnet.hk2.*</package-name><package-name>org.jvnet.hk2.tiger_types.*</package-name><package-name>org.glassfish.hk2.*</package-name><package-name>javassist.*</package-name><!-- media providers --><package-name>org.eclipse.persistence.jaxb.rs.*</package-name><package-name>org.codehaus.jackson.jaxrs.*</package-name><!-- wls --><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></container-descriptor>
</weblogic-web-app>
现在,所有这些都需要快速mvn install
并且在目标目录中将有一个很好的完整共享库,名为JerseyLibrary-2.9.war,您可以按常规方式进行部署。 当然,请记住要更新.war的库条目,该库依赖于此条目以具有正确的版本,因此它确实会选择2.5.1版本。
翻译自: https://www.javacodegeeks.com/2015/08/creating-a-shared-library-for-jersey-2-19-to-use-with-weblogic-12-1-3.html