当前位置: 首页 > 知识库问答 >
问题:

在Weblogic 12.1.1上使用Jersey 2.x web服务

澹台权
2023-03-14

我试图将Jersey 2.13 web服务部署到WebLogic12.1.1。weblogic的这个版本符合JSR-311 JAX-RS 1.1规范,而Jersey 2.x提供了JAX-RS 2.0的实现

Oracle提供了关于如何升级Jersey JAX-RS RI版本的说明:http://docs.Oracle.com/cd/e2432901/web.1211/e24983/version.htm

然而,即使这样也无助于解决所有的部署问题。

我正在包装EAR中包含WAR的应用程序。为了重写我所包含的weblogic JAR,添加了以下weblogic-application.xml文件:

<?xml version="1.0" encoding="ISO-8859-1"?>
<weblogic-application xmlns="http://www.bea.com/ns/weblogic/90">
  <prefer-application-packages>
    <!-- apis -->
    <package-name>javax.ws.rs.*</package-name>
    <!-- guava -->
    <package-name>com.google.common.*</package-name>
    <!-- jersey1 providers -->
    <package-name>com.sun.jersey.*</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>
</weblogic-application>

此配置在部署时给出以下错误消息:

Caused By: java.lang.NoSuchMethodError: org.glassfish.hk2.api.ServiceLocatorFactory.create(Ljava/lang/String;Lorg/glassfish/hk2/api/ServiceLocator;Lorg/glassfish/hk2/extension/ServiceLocatorGenerator;Lorg/glassfish/hk2/api/ServiceLocatorFactory$CreatePolicy;)Lorg/glassfish/hk2/api/ServiceLocator;

如果我试图通过将org.glassfish.hk2.*类添加到首选应用程序包中来替换它,我会收到新的错误,并且它将永远持续下去...

是否有人将Jersey迁移到WebLogic12.1.1或更低版本的2.x?

谢了!

共有1个答案

赵嘉纳
2023-03-14

最后,实际需要替换的JAR比Oracle建议的要多。下面是weblogic-application.xml的外观:

 <prefer-application-packages>
    <package-name>com.sun.jersey.*</package-name>
    <package-name>org.glassfish.jersey.*</package-name>
    <package-name>org.glassfish.hk2.*</package-name>
    <package-name>org.jvnet.hk2.*</package-name>
    <package-name>jersey.repackaged.org.objectweb.asm.*</package-name>

    <package-name>com.sun.research.ws.wadl.*</package-name>
    <package-name>com.sun.ws.rs.ext.*</package-name>

    <package-name>org.codehaus.jackson.*</package-name>
    <package-name>com.fasterxml.jackson.*</package-name>

    <package-name>org.codehaus.jettison.*</package-name>

    <package-name>javax.ws.rs.*</package-name>

    <package-name>org.objectweb.asm.*</package-name>

    <package-name>antlr.*</package-name>

  </prefer-application-packages>
 类似资料:
  • xweb 是一个go语言的web框架,类似Java的Struts。

  • xweb 是一款用极少的代码实现的 web 框架,目标是用低于 1000 行的代码实现 flask 的核心功能, xweb 框架基于 python3.5 以上开发,实在是居家旅行良品。 示例代码: from xweb.application import XWebapp = XWeb()@app.route('/')def hello():    return 'hello world!'app.listen(3000  

  • 问题内容: 我正在尝试使用Jersey2构建示例REST服务: 这是我的POM依赖项: 这是我的web.xml: 这是我的ResourceConfig实现: 最后是我的示例类: 在将其部署到Tomcat时,我尝试访问以下URL: 这是我得到的例外: 无法理解我所缺少的。请问有人可以指出吗? 问题答案: 所有Jersey依赖项都应使用相同的版本,即应使用而不是。

  • XWeb 是一个基于 web.go 开发的 web 框架,目前它和 Java 框架 Struts 有些类似。

  • 我在jaxrs项目中有一个异常映射器来捕获所有NotFoundExcture并格式化响应。在Tomcat中运行时,在引发异常时调用异常映射器。我现在不得不转移到JBoss,所有的工作都很好,除了异常映射器不再被调用。 网状物xml 异常映射器

  • 问题内容: 但是当应用程序尝试在客户端请求之后调用它时,自动装配的Bean为空。在applicationContext.xml中,我只有 组件扫描 设置。 -- 我究竟做错了什么? UPD: 这是我的pom.xml https://bitbucket.org/spukhov/memo- ws/src/00724e00e3aa786f62fd0e43fe0606de6ae569df/pom.xml?

  • 我有以下场景。我需要在Android上有一个嵌入式数据库(nosql),我在服务器上有一个主数据库(理想情况下应该是nosql数据库)。两者之间需要同步。所有来自移动端的查询都将转到迭代数据库。我们有不同的选项:1)在移动端使用couchDB,同时在服务器端使用couchDB,2)在移动端使用couchDB,在服务器端使用Mongodb,3)在移动端使用sqlLite,在服务器端使用Mongodb

  • 问题内容: 嗨,我正在尝试使用mono-service2从Visual Studio中运行库存Windows Service Project。我在单声道2.0的debian上运行它并进行编译。 我尝试从这里开始(我尝试将-d设置为应用程序的目录,并设置了-n,-m) 唯一的代码更改是添加测试写行 Service1.cs 结果就是这个错误 谢谢你的帮助 回答 我缺少LD_LIBRARY_PATH e