Сервер Weblogic поставляется с общей библиотекой, поэтому вы можете развертывать приложения JAX-RS 2.0; но ограничено версией 2.5.1 Джерси, и инструкции по ее изменению не совсем очевидны или просты . Недавно я присоединился к новой команде в Oracle, и я первым делом посмотрел на обновление зависимых библиотек. Теперь я разговаривал с командой Джерси, и они не поддерживают эту комбинацию; но это может быть достаточно полезно, чтобы избавить вас от обязательств, пока не будет выпущена следующая версия Weblogic.
Я собираюсь сделать это с помощью Maven, потому что это означает, что вся упаковка и загрузка для вас. Основная структура проекта выглядит следующим образом:
|
01
02
03
04
05
06
07
08
09
10
11
|
|-pom.xml|-src| |-main| | |-java| | |-resources| | | |-META-INF| | | | |-MANIFEST.MF| | |-webapp| | | |-WEB-INF| | | | |-web.xml| | | | |-weblogic.xml |
Я только что сгенерировал ванильный проект Maven с использованием Netbeans, а затем добавил необходимые мне зависимости Джерси, вероятно, этот файл можно было бы еще немного сократить с некоторой решимостью. Но это работало достаточно хорошо для меня:
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
|
<?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, что это библиотека, а также содержит версии, которые она предоставляет:
|
1
2
3
4
5
|
Specification-Title: Weblogic JAX-RS 2.0Specification-Version: 2.0Implementation-Title: Weblogic JAX-RS 2.0 Reference ImplementationImplementation-Version: 2.19Extension-Name: jax-rs |
Наконец, вы должны включить файл weblogic.xml, чтобы сообщить серверу, что некоторые классы вам нужно брать отсюда, а не загрузчик классов сервера. Я получил это из файла, который поставляется с библиотекой общего доступа 2.5.1, которая поставляется с 12.1.3, а затем добавил еще несколько строк, чтобы учесть, как движется код. В зависимости от того, что делает ваш код, вам может потребоваться добавить еще несколько.
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
<?xml version="1.0" encoding="UTF-8"?><weblogic-web-app 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.
| Ссылка: | Создание общей библиотеки для Jersey 2.19 для использования с Weblogic 12.1.3 от нашего партнера по JCG |