我在weblogic 12.1 服务器(工作地点)中有一个网络服务,我现在必须在新的weblogic 12.2 服务器中进行传输。在我的WEB-INF / lib jars中,我有jersey 1.18文件。然而,当我部署它时,似乎Jersey 1.18被Jersey 2.21覆盖并且通过调用Web服务我得到“404 not found error”。 Application.wadl现在有<ns0:doc ns1:generatedBy="Jersey: 2.21.1 2015-09-16..."/>
所以我猜这就是问题所在。
我尝试将weblogic.xml文件放在WEB-INF中:
<container-descriptor>
<prefer-web-inf-classes>true</prefer-web-inf-classes>
</container-descriptor>
但没有改变。我如何强制使用Jersey 1.18?
答案 0 :(得分:1)
weblogic 12.2.x不再支持jersey 1.x服务器api。最好使用球衣2.x api。对于404问题,我认为您可以使用此链接更改您的应用。
http://docs.oracle.com/middleware/1221/wls/RESTF/jersey-back-comp.htm#RESTF385
答案 1 :(得分:0)
您可以通过更改web.xml来解决此问题:
之前:
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
后:
<servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
答案 2 :(得分:-1)
实施所需库版本的更安全的方法是在weblogic.xml文件中使用shared-libs和reference。这是一个示例,您可以看看:
<?xml version="1.0" encoding="UTF-8"?>
<wls:weblogic-web-app xmlns:wls="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.7/weblogic-web-app.xsd">
<wls:library-ref>
<library-name>jax-rs</library-name>
<specification-version>2.0</specification-version>
<exact-match>false</exact-match>
</wls:library-ref>
</wls:weblogic-web-app>
我邀请您访问此link以获取有关如何在weblogic实例上将您的jersey lib注册为共享库的详细过程。