ResteasyProviderFactory исключение в Glassfish - PullRequest
5 голосов
/ 02 июня 2011

У меня возникли проблемы с вызовом веб-службы RESTful с использованием клиентской среды, предоставленной RESTEasy.Когда я пытаюсь зарегистрировать 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

I 'm используя Glassfish 3.0.1 и Resteasy 2.2.1.

Я искал в Интернете, но не нашел решения или соответствующей информации по этому вопросу.Если у кого-то есть решение или альтернативный способ сделать это, пожалуйста, помогите мне!

Заранее спасибо

Ответы [ 3 ]

4 голосов
/ 21 ноября 2011

Я принудительно создал resteasy для jersey в glassfish, добавив файл с именем javax.ws.rs.ext.RuntimeDelegate в путь к классам в «META-INF / services», который содержит только следующую строку: org.jboss.resteasy.spi.ResteasyProviderFactory

Однако, для меня все работало нормально, пока я не попробую использовать resteasy-cdi. Добавление этого последнего артефакта к моим зависимостям и настройка требуемого контекста-параметра вызвала ту же проблему с классами.

1 голос
/ 28 сентября 2011

Это вызвано конфликтующей реализацией jax-rs - трикотажем и отдыхом.Чтобы предотвратить вышеуказанную ошибку, вы можете добавить

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

в ваш web.xml.

. Таким образом, resteasy выберет экземпляр ResteasyProviderFactory.

0 голосов
/ 15 июня 2014

В моем случае решение с контекстным параметром, приведенное выше, помогает мне решить следующую проблему:

Война приложений хорошо работала в Linux (Suse, Debian), но при попытке развернуть ее в Tomcat 6 под Windows Iполучена следующая ошибка:

15 июня 2014 г. 10:16:20 org.apache.catalina.core.StandardContext listenerStart

Могила: Исключение из положения об исключительных обстоятельствахinitialisé (контекст инициализирован) в качестве экземпляра класса (слушатель) org.jboss.resteasy.plugins.server.servlet.ResteasyBootstrap java.lang.ClassCastException: org.glassfish.jersey.server.internal.RuntimelelegateIgnateв org.jboss.resteasy.spi.ResteasyProviderFactory в org.jboss.resteasy.spi.ResteasyProviderFactory.getInstance (ResteasyProviderFactory.java:330) в org.jboss.resteasy.spi.ResteasyDepte.Secloyment..

оправдание перед хорошо известным исключением:

15 июня 2014 г. 10:16:20 org.apache.catalina.core.StandardContext listenerStart

Могила: Исключение из инициализации контекста (инициализация контекста) - определение класса (слушатель) org.jboss.resteasy.plugins.cache.server.ServletServerCachejava.lang.RuntimeException: Resteasy не инициализирован, не может найти атрибут ResteasyProviderFactory ......

context-param в conf / web.xml решает эту ошибку (но я не понял, почему эторазница между Linux и Windows, поскольку нам никогда не приходилось добавлять это под Linux)

Спасибо

Дэвид М.

...