Glassfish中的ResteasyProviderFactory异常

Pau*_*tor 5 java rest httpclient resteasy

我在使用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;
Run Code Online (Sandbox Code Playgroud)

例外情况:

    java.lang.ClassCastException: com.sun.jersey.server.impl.provider.RuntimeDelegateImpl cannot be cast to org.jboss.resteasy.spi.ResteasyProviderFactory
Run Code Online (Sandbox Code Playgroud)

我正在使用Glassfish 3.0.1和Resteasy 2.2.1.

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

提前致谢

bar*_*ber 5

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

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


小智 1

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

<context-param>
    <param-name>resteasy.use.deployment.sensitive.factory</param-name>
    <param-value>false</param-value>
</context-param>
Run Code Online (Sandbox Code Playgroud)

在你的 web.xml 中。

通过这样做,resteasy 将选择 ResteasyProviderFactory 的实例。