2011-06-02 14 views
5

Tengo problemas para invocar un servicio web RESTful utilizando el Marco de cliente provisto por RESTEasy. Cuando trato de registrar ResteasyProviderFactory obtuve una ClassCastException y nada más funciona.Excepción de ResteasyProviderFactory en Glassfish

Aquí está el código:

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; 

Y la excepción:

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

estoy usando GlassFish 3.0.1 y 2.2.1 Resteasy.

He buscado a través de la web pero no he encontrado ninguna solución o no hay información relevante al respecto. Si alguien tiene una solución o una forma alternativa de hacerlo, ¡ayúdeme!

Gracias de antemano

+0

tomo un montón de Investigaciones sobre eso y yo ni encontró nada inútil, simplemente solución que duerma trabajo tambien Creo que cambiar el Jersey por el RestEasy en este caso es la mejor opción. – irobson

Respuesta

1

Esto es causado por el conflicto de ejecución JAX-RS - Jersey y resteasy. Con el fin de evitar que el error anterior, puede agregar

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

en su web.xml.

Al hacerlo, resteasy elegirá la instancia de ResteasyProviderFactory.

4

Realicé un forcejeo sobre jersey en glassfish agregando un archivo llamado javax.ws.rs.ext.RuntimeDelegate en la ruta de clase en "META-INF/services", que contiene solo la siguiente línea: org.jboss .resteasy.spi.ResteasyProviderFactory

Sin embargo, para mí, todo parecía funcionar bien hasta que intenté usar resteasy-cdi. Agregar el último artefacto a mis dependencias y configurar el parámetro de contexto requerido desenterró el mismo problema de classcast.

0

En mi caso, la solución context-param anteriormente ayudan a solucionar el problema siguiente:

la guerra aplicación estaba funcionando bien en Linux (Suse, Debian), pero tratando de implementarlo en Tomcat 6 en Windows llegué el siguiente error:

uin 15, 2014 10:16:20 AM org.apache.catalina.core.StandardContext listenerStart

grave: Excepción lors de l'envoi de l'évènement contexte inicializar (contexto inicializado) à l'instance de classe d'écoute (oyente) org.jboss.resteasy.plugins.server.servlet.Resteasy Bootstrap java.lang.ClassCastException: org.glassfish.jersey.server.internal.RuntimeDelegateImpl no se puede convertir en org.jboss.resteasy.spi.ResteasyProviderFactory en org.jboss.resteasy.spi.ResteasyProviderFactory.getInstance (ResteasyProviderFactory.java: 330) en org.jboss.resteasy.spi.ResteasyDeployment.start (ResteasyDeployment.java:63) ....

juste antes de la Excepción bien conocido:

juin 15, 2014 10:16: 20 a.m. org.apache.catalina.core.StandardContext listenerStart

Grave: Exception lors de l'envoi de l'évè nement contextte initialisé (contexto inicializado) à l'instance de classe d'écoute (oyente) org.jboss.resteasy.plugins.cache.server.ServletServerCache java.lang.RuntimeException: Resteasy no está inicializado, no pudo encontrar atributo ResteasyProviderFactory ......

El context-param conf/web.xml resolver este error (pero no cogió por qué esta diferencia entre Linux y Windows, ya que nunca tuvo que añadir este bajo Linux)

Gracias

David M.