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

在WebLogic12c上实现Resteasy(或者不是Jersey-JAXRS实现)是可能的吗?

何辰沛
2023-03-14

我有一个带有restful web服务API的web应用程序。该应用程序现在已经开发完成,并且可以在Glassfish服务器(3.1.x)上完美地工作。

作为jax-rs的实现,webapp使用REST-Easy,因为它提供的特性在Jersey中是不存在的。

现在,有必要在WebLogic12c中部署Web应用程序,特别是在WebLogic12.1.2中。但似乎不可能这样做。Weblogic将Jersey用于restful服务,如果使用不同的实现JAX-RS,则会产生冲突。然后问题...是否可以使用不同的JAX-RS Jersey实现。(在我的情况下是RestEasy)。

    <17/12/2013 10:52:07 AM CST> <Warning> <weblogic.jaxrs.server.portable.servlet.ServletContainer> <BEA-000000> <Failed to create monitoring factory: oracle.j2ee.ws.server.jaxrs.dms.JaxRsDMSMonitoringEventReceiverFactory:
     oracle.j2ee.ws.server.jaxrs.dms.JaxRsDMSMonitoringEventReceiverFactory> 
<17/12/2013 10:52:08 AM CST> <Error> <com.sun.jersey.spi.inject.Errors> <BEA-000000> 
<The following errors and warnings have been detected with resource and/or provider classes: SEVERE: 
    Missing dependency for constructor public org.jboss.resteasy.plugins.providers.DocumentProvider(org.jboss.resteasy.spi.ResteasyConfiguration) at parameter index 0   
    SEVERE: Missing dependency for constructor public org.jboss.resteasy.core.AsynchronousDispatcher(org.jboss.resteasy.spi.ResteasyProviderFactory) at parameter index 0> 
    <17/12/2013 10:52:08 AM CST> <Error> <HTTP> <BEA-101216> <Servlet: "Jersey" failed to preload on startup in Web application: "pruebaRestWL-1.0-SNAPSHOT". 
    com.sun.jersey.spi.inject.Errors$ErrorMessagesException   at 
    com.sun.jersey.spi.inject.Errors.processErrorMessages(Errors.java:170) at 
    com.sun.jersey.spi.inject.Errors.postProcess(Errors.java:136)   at 
    com.sun.jersey.spi.inject.Errors.processWithErrors(Errors.java:199)   at 
    com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:770) at 
    com.sun.jersey.server.impl.application.WebApplicationImpl.initiate(WebApplicationImpl.java:765) Truncated. see log file for complete stacktrace
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0">
    <!-- :::::::::::::::::::::::::::::::::::::: -->
    <!-- Configuración para implementación rest -->
    <!-- :::::::::::::::::::::::::::::::::::::: -->
    <context-param>
        <param-name>resteasy.scan</param-name>
        <param-value>true</param-value>
    </context-param>
    <listener>
        <listener-class>org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
    </listener>
    <servlet>
        <servlet-name>Resteasy</servlet-name> <!-- Servlet for use RestEasy -->
        <servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Resteasy</servlet-name>
        <url-pattern>/services/*</url-pattern>
    </servlet-mapping>
    <context-param>
        <param-name>resteasy.servlet.mapping.prefix</param-name>
        <param-value>/services</param-value>
    </context-param>
</web-app>

我尝试的方法之一是在WebLogic上禁用泽西。我尝试删除oracle_home/oracle_common/modules中用于weblogic的jersey库。

  • 运动衫-客户-1.17.1
  • 球衣-CORE-1.17.1
  • 球衣-JSON-1.17.1
  • 运动衫-多部分-1.17.1
  • 球衣-服务器-1.17.1
  • Jersey-Servlet-1.17.1

但是我有这个错误:weblogic.application.moduleException:java.lang.ArrayStoreException:sun.reflect.annotation.TypeNotPresentExceptionProxy

<17/12/2013 10:07:15 AM CST> <Error> <Deployer> <BEA-149265> <Failure occurred in the execution of deployment request with ID "1387296431330" for task "0". Error is: "weblogic.application.ModuleException: java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy"
weblogic.application.ModuleException: java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy
  at weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:140)
  at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124)
  at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:213)
  at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:208)
  at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:42)
  Truncated. see log file for complete stacktrace

可以用de follow URI进行测试。得到。

 http://domain:8080/pruebaRestWL/services/test

 (in glassfish)

共有1个答案

阎丰
2023-03-14
    Here is working solution on WebLogic 12.2.1 and WebLogic 10.3.6

    Changes in pom.xml
         <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jaxrs</artifactId>
            <version>2.2.1.GA</version>
         </dependency>
         <dependency>
            <groupId>org.jboss.resteasy</groupId>
            <artifactId>resteasy-jackson-provider</artifactId>
            <version>2.2.1.GA</version>
         </dependency>

    Changes in web.xml
        <!-- A comma delimited list of fully qualified JAX-RS resource class names you want to register -->
        <!-- And don't use resteasy.scan=true -->
        <context-param>
            <param-name>resteasy.resources</param-name>
            <param-value>com.***.RestServiceClass</param-value>
        </context-param>

        <!-- This is needed if the url-pattern for the Resteasy servlet-mapping is not /* -->
        <context-param>
            <param-name>resteasy.servlet.mapping.prefix</param-name>
            <param-value>/rest</param-value>
        </context-param>

        <listener>
            <listener-class>
                org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap
            </listener-class>
        </listener>

        <servlet>
            <servlet-name>resteasy-servlet</servlet-name>
            <servlet-class>
                org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher
            </servlet-class>
        </servlet>

        <servlet-mapping>
            <servlet-name>resteasy-servlet</servlet-name>
            <url-pattern>/rest/*</url-pattern>
        </servlet-mapping>

@Stateless
@Path("/test")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class RestServiceClass
{
   @POST
   @Path("/doJob1")
   @GZIP
   public String doJob1()
   {
      return "Ok";
   }
...
 类似资料:
  • 问题内容: 在某些javascript实现(Rhino,SpiderMonkey)中没有 noSuchMethod 功能。 我想知道,是否有一种方法可以对物业进行类似的处理?我想编写可以在属性和方法上分派的代理类。 问题答案: 更新: ECMAScript6代理现在已得到广泛支持。基本上,如果您不需要支持IE11,则可以使用它们。 代理对象使您可以定义基本操作的自定义行为,例如属性查找,赋值,枚举

  • 现在亚马逊加入了单点登录供应商的行列。它们只支持OAuth2.0。 总而言之,OAuth2.0似乎是获胜的候选者,而不是openid,因为我关心的所有提供者现在都支持oauth。 所以我考虑直接在我的电子商务站点中实现oauth。 Facebook提供了一种完全的服务器端方式,不涉及JavaScripts。 亚马逊没有。 但它都是OAuth2.0,不是吗? 我想实现几个oauth提供程序。其中肯定

  • 访问 xxx_m.jpg 或 xxx_m.jpeg ,如果返回 404 或 403 ,则重定向到 xxx.jpg 或 xxx.jpeg 可以理解为实现“访问压缩图 url ,如果 访问不到,则重定向原图 url” 问了 AI ,回答我是可以实现的,但是运维同学说实现不了,不确定 AI 是不是瞎扯的,有没有大佬解答下。 下面贴下 AI 给的配置:

  • 假设我们需要信任一个自签名的SSL证书,作为示例,让我们使用https://self-signed.badssl.com/. 由于签名者不是“适当的”权限,Java不信任它,拒绝连接到该服务器。然而,在 并重新启动应用程序,下面的代码工作: 并返回200(OK),没有引发异常。也就是说,打开HTTPS连接的基本Java方式现在可以工作了,因为证书现在是受信任的。 然而,这并没有对javax.ws.

  • 对于初学者,我希望将所有输入数据流转换为KeyedStreams。因此,我将输入数据流映射为一个元组,然后应用KeyBy将其转换为KeyStream。 我总是遇到序列化的问题,我试着按照本指南https://ci.apache.org/projects/flink/flink-docs-stable/dev/java_lambdas.html操作,但没有成功。 我想知道的是: null 测试类 错

  • 是否有任何在Spring MVC中实现并通过Okta Saml验证的示例Web应用程序代码?在互联网上有关于springboot-okta示例的一切:(我没有找到任何香草Spring MVC(不是引导应用程序)的示例项目。