Erro aplicação com RESTEasy

Olá pessoal,

Estou configurando uma aplicação web que tem uma integração com um projeto EJB + RESTEasy

no web.xml eu tenho o seguinte :


	<context-param>
		<param-name>resteasy.jndi.resources</param-name>
		<param-value>LibraryBean/local</param-value>
	</context-param>

	<listener>
		<listener-class>org.resteasy.plugins.server.servlet.ResteasyBootstrap</listener-class>
	</listener>

	<servlet>
		<servlet-name>Resteasy</servlet-name>
		<servlet-class>org.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
	</servlet>

	<servlet-mapping>
		<servlet-name>Resteasy</servlet-name>
		<url-pattern>/*</url-pattern>
	</servlet-mapping>

ta dando o seguinte erro:

14:09:29,485 INFO  [org.jboss.weld.deployer] (MSC service thread 1-1) JBAS016002: Processing weld deployment helloWorld.war
14:09:29,562 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-1) MSC000001: Failed to start service jboss.deployment.subunit."helloWorld-EAR.ear"."helloWorld.war".POST_MODULE: org.jboss.msc.service.StartException in service jboss.deployment.subunit."helloWorld-EAR.ear"."helloWorld.war".POST_MODULE: JBAS018733: Failed to process phase POST_MODULE of subdeployment "helloWorld.war" of deployment "helloWorld-EAR.ear"
	at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:166) [wildfly-server-8.0.0.Final.jar:8.0.0.Final]
	at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948) [jboss-msc-1.2.0.Final.jar:1.2.0.Final]
	at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881) [jboss-msc-1.2.0.Final.jar:1.2.0.Final]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [rt.jar:1.7.0_21]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [rt.jar:1.7.0_21]
	at java.lang.Thread.run(Unknown Source) [rt.jar:1.7.0_21]
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: java.lang.ClassNotFoundException: org.resteasy.plugins.server.servlet.HttpServletDispatcher from [Module "deployment.helloWorld-EAR.ear.helloWorld.war:main" from Service Module Loader]
	at org.jboss.as.jaxrs.deployment.JaxrsScanningProcessor.checkDeclaredApplicationClassAsServlet(JaxrsScanningProcessor.java:292)
	at org.jboss.as.jaxrs.deployment.JaxrsScanningProcessor.scanWebDeployment(JaxrsScanningProcessor.java:154)
	at org.jboss.as.jaxrs.deployment.JaxrsScanningProcessor.deploy(JaxrsScanningProcessor.java:105)
	at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:159) [wildfly-server-8.0.0.Final.jar:8.0.0.Final]
	... 5 more
Caused by: java.lang.ClassNotFoundException: org.resteasy.plugins.server.servlet.HttpServletDispatcher from [Module "deployment.helloWorld-EAR.ear.helloWorld.war:main" from Service Module Loader]
	at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:197) [jboss-modules.jar:1.3.0.Final]
	at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:443) [jboss-modules.jar:1.3.0.Final]
	at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:431) [jboss-modules.jar:1.3.0.Final]
	at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:373) [jboss-modules.jar:1.3.0.Final]
	at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:118) [jboss-modules.jar:1.3.0.Final]
	at org.jboss.as.jaxrs.deployment.JaxrsScanningProcessor.checkDeclaredApplicationClassAsServlet(JaxrsScanningProcessor.java:290)
	... 8 more

alguma ideia de como organizar isso?

Pelo erro ele não ta encontrando a classe org.resteasy.plugins.server.servlet.HttpServletDispatcher. É JBoss 7? Verifica se você não tem que acrescentar esse módulo explicitamente ao arquivo jboss-deployment-structure.xml. Isso ou fazer deploy das libs do RestEasy junto com seu pacote EAR.

Informações: https://docs.jboss.org/author/display/AS7/Class+Loading+in+AS7

Estou usando o WildFly 8.x

alguma dica para carregar este Servlet org.resteasy.plugins.server.servlet.HttpServletDispatcher

estou usando maven teoricamente as dependencias estão lá.

O WildFly já possui as bibliotecas do RestEasy. Você tem duas opções, ou usa as que já existem no servidor ou empacota o projeto com as suas (você pode por exemplo querer uma versão mais recente).

O caminho que costuma dar menos problema é usar as do servidor. Nem sempre substituir as libs “de fábrica” é um caminho feliz. No WildFly você faz isso usando o arquivo jboss-deployment-structure.xml, como eu falei no comentário anterior.

Se você quiser seguir no caminho mais arriscado, é só colocar no seu pom.xml as libs do reasteasy como “compile” (o normal é provided) .

obrigado.

Boa tarde.
Antes de qualquer coisa peço desculpas se coloquei minha indagação em um tópico já existente de forma incorreta, mas achei seria melhor assim do que criar um outro igual ou semelhante.

Eu resolvi começar a tentar aprender um pouco sobre RESTEasy e dessa forma começar testando projetos MUITO simples para entender aos poucos a melhor maneira possível de utilizá-lo. O que acontece é que mesmo um simples Hello World está dando erro. Se trata de uma aplicação, como já falei, bem simples, contendo apenas um package (recursos) e uma class (RecursoOla.java) as quais segui a orientação de um site mostrando como fazê-lo.

  • Baixei o resteasy-jaxrs-3.0.7.Final-all, descompactei e copiei todos os arquivos de sua pasta LIB para a pasta WEB-INFO/lib do meu projeto;
  • Estou usando o servidor apache tomcat 6.0
  • Estou usando o Eclipse Juno

A minha classe RecursoOla tem o seguinte conteúdo:

package recursos;

import javax.ws.rs.GET;
import javax.ws.rs.Path;

@Path("ola-mundo")
public class RecursoOla {

@GET
public String digaOla() {
return "Olá Mundo!";
}
}

Meu Arquivo .xml tem o seguinte conteúdo:

<?xml version=“1.0” encoding=“UTF-8”?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns=“http://java.sun.com/xml/ns/javaee” xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
id=“WebApp_ID” version=“2.5”>
<display-name>OlaMundo</display-name>

<!-- RESTEasy: mapeie “TODOS” meus recursos JAX-RS -->
<context-param>
<param-name>resteasy.scan</param-name>
<param-value>true</param-value>
</context-param>

<!-- O Servlet do RESTeasy pega as requests para direcionar para as suas
classes JAX-RS -->
<servlet>
<servlet-name>Resteasy</servlet-name>
<servlet-class>org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class>
</servlet>

<!-- O servlet do RESTEasy responde na raiz da aplicação -->
<servlet-mapping>
<servlet-name>Resteasy</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>

Quando vou ao navegador e digito http://localhost:8080/OlaREST/ola-mundo aparece a seguinte mensagem de erro no Eclipse:

dez 05, 2014 2:47:49 PM org.jboss.resteasy.plugins.server.servlet.ConfigurationBootstrap
ADVERTÊNCIA: resteasy.scan is no longer supported. Use a servlet 3.0 container and the ResteasyServletInitializer
dez 05, 2014 2:47:49 PM org.jboss.resteasy.core.ExceptionHandler
GRAVE: failed to execute
javax.ws.rs.NotFoundException: Could not find resource for full path: http://localhost:8080/OlaREST/ola-mundo
at org.jboss.resteasy.core.registry.ClassNode.match(ClassNode.java:73)
at org.jboss.resteasy.core.registry.RootClassNode.match(RootClassNode.java:48)
at org.jboss.resteasy.core.ResourceMethodRegistry.getResourceInvoker(ResourceMethodRegistry.java:444)
at org.jboss.resteasy.core.SynchronousDispatcher.getInvoker(SynchronousDispatcher.java:234)
at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:171)
at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220)
at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56)
at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:620)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Unknown Source)

Se eu retiro do meu .xml as linhas abaixo que ele acusa não mais ter suporte

<context-param>
<param-name>resteasy.scan</param-name>
<param-value>true</param-value>
</context-param>

A mensagem de erro continua a mesma com exceção das seguintes linhas que não mais aparecem:

dez 05, 2014 2:47:49 PM org.jboss.resteasy.plugins.server.servlet.ConfigurationBootstrap
ADVERTÊNCIA: resteasy.scan is no longer supported. Use a servlet 3.0 container and the ResteasyServletInitializer

Desculpem se é iniciante demais a minha dúvida e pelo tópico ter sido longo.
Espero que possam me ajudar.