【问题标题】:ResteasyProviderFactory exception in GlassfishGlassfish 中的 ResteasyProviderFactory 异常
【发布时间】:2011-06-02 13:48:05
【问题描述】:

我在使用 RESTEasy 提供的客户端框架调用 RESTful Web 服务时遇到了一些问题。当我尝试注册 ResteasyProviderFactory 时,我得到了一个 ClassCastException 并且没有其他工作。

代码如下:

    RegisterBuiltin.register(ResteasyProviderFactory.getInstance());
    LifeGoalClient leClient = ProxyFactory.create(LifeGoalClient.class, "http://localhost:8080/TutorFinanceiro");
    List<LifeGoal> lifeGoals = leClient.getLifeGoals();
    JOptionPane.showMessageDialog(null, lifeGoals);
    return lifeGoals;

还有一个例外:

    java.lang.ClassCastException: com.sun.jersey.server.impl.provider.RuntimeDelegateImpl cannot be cast to org.jboss.resteasy.spi.ResteasyProviderFactory

我正在使用 Glassfish 3.0.1 和 Resteasy 2.2.1。

我在网上搜索,但没有找到解决方案或没有相关信息。 如果有人有解决方案或替代方法,请帮助我!

提前致谢

【问题讨论】:

  • 我对此进行了大量研究,但没有发现任何无用的东西,只是解决方法不起作用。我认为在这种情况下将 Jersey 换成 RestEasy 是更好的选择。

标签: java rest httpclient resteasy


【解决方案1】:

我确实通过在“META-INF/services”的类路径中添加一个名为 javax.ws.rs.ext.RuntimeDelegate 的文件来强制在 glassfish 的球衣上休息,该文件仅包含以下行: org.jboss.resteasy.spi.ResteasyProviderFactory

但是,对我来说,在我尝试使用 resteasy-cdi 之前,一切似乎都运行良好。将最后一个工件添加到我的依赖项并配置所需的上下文参数确实挖掘了相同的类转换问题。

【讨论】:

    【解决方案2】:

    这是由冲突的 jax-rs 实现引起的 - jersey 和 resteasy。 为了防止上面的错误,可以添加

    <context-param>
        <param-name>resteasy.use.deployment.sensitive.factory</param-name>
        <param-value>false</param-value>
    </context-param>
    

    在您的 web.xml 中。

    这样,resteasy 会选择 ResteasyProviderFactory 的实例。

    【讨论】:

      猜你喜欢
      • 2011-08-16
      • 1970-01-01
      • 1970-01-01
      • 2013-09-15
      • 1970-01-01
      • 1970-01-01
      • 2011-07-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多