Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java WebLogic12c上的Resteasy(或者不是Jersey-JAXRS实现)是可能的吗?_Java_Jersey_Jax Rs_Resteasy_Weblogic12c - Fatal编程技术网

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

Java WebLogic12c上的Resteasy(或者不是Jersey-JAXRS实现)是可能的吗?,java,jersey,jax-rs,resteasy,weblogic12c,Java,Jersey,Jax Rs,Resteasy,Weblogic12c,我有一个带有restful web服务API的web应用程序。该应用程序现在已经开发出来,可以在Glassfish服务器(3.1.x)上完美运行 作为jax-rs的实现,webapp使用Rest-easy,因为它提供了在Jersey上不存在的特性 现在,有必要在WebLogic 12c中部署Web应用程序,特别是在WebLogic 12.1.2中。 但这似乎是不可能的。Weblogic将Jersey用于restful服务,如果使用不同的jax-rs实现,则会产生冲突。 然后问题是。。。是否可以使

我有一个带有restful web服务API的web应用程序。该应用程序现在已经开发出来,可以在Glassfish服务器(3.1.x)上完美运行

作为jax-rs的实现,webapp使用Rest-easy,因为它提供了在Jersey上不存在的特性

现在,有必要在WebLogic 12c中部署Web应用程序,特别是在WebLogic 12.1.2中。 但这似乎是不可能的。Weblogic将Jersey用于restful服务,如果使用不同的jax-rs实现,则会产生冲突。 然后问题是。。。是否可以使用JAX-RS的实现。(就我而言,这很容易)

尽管web.xml存档配置为使用RestEasy Servlet,但仍然会显示错误,如if is use Jersey(

错误是:

    <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

可以轻松部署和使用RESTeasy。确保设置您的。没有必要,事实上,您不应该禁用Jersey模块

以下是WebLogic 12.2.1和WebLogic 10.3.6的工作解决方案
    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";
   }
...
pom.xml中的更改 org.jboss.resteasy resteasy jaxrs 2.2.1.GA org.jboss.resteasy resteasy jackson提供商 2.2.1.GA web.xml中的变化 resteasy.resources com.*.RestServiceClass resteasy.servlet.mapping.prefix /休息 org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap RESTEasyServlet org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher RESTEasyServlet /休息/* @无国籍 @路径(“/test”) @产生(MediaType.APPLICATION_JSON) @使用(MediaType.APPLICATION_JSON) 公共类RestServiceClass { @职位 @路径(“/doJob1”) @GZIP 公共字符串doJob1() { 返回“Ok”; } ...
如果您能提供更多详细信息,我将不胜感激。@bruno borges我已经放置了过滤类加载程序,但resteasy没有加载,您能给我们一个有效的例子吗?您能告诉我们您是否能找到解决方案,因为仍然没有公认的答案。我有完全相同的问题。不,我没有找到解决方案在Weblogic 12c中使用Resteasy是我的荣幸。我不得不将我的webapp更改为使用Jersey-like作为Jersey实现。
<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
 http://domain:8080/pruebaRestWL/services/test

 (in glassfish)
    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";
   }
...