2016-05-15 1 views
0

Я пытаюсь реализовать RESTFULL-сервис с RESTEASY. Когда я пытаюсь запустить Tomcat Server 7.0, я получаю исключение. Подробнее см. Ниже.Исключение из JAX-RS с RESTEASY с TOMCAT 7

Сообщение об ошибке

May 15, 2016 11:10:33 PM org.jboss.resteasy.core.ExceptionHandler handleWebApplicationException ERROR: RESTEASY002010: Failed to execute javax.ws.rs.NotFoundException: RESTEASY: Could not find resource for full path: http://localhost:8080/RestEasyHello/service/HelloRestEasy/response/ at org.jboss.resteasy.core.registry.ClassNode.match(ClassNode.java:75) at org.jboss.resteasy.core.registry.RootClassNode.match(RootClassNode.java:48) at org.jboss.resteasy.core.ResourceMethodRegistry.getResourceInvoker(ResourceMethodRegistry.java:445) at org.jboss.resteasy.core.SynchronousDispatcher.getInvoker(SynchronousDispatcher.java:254) at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:191) at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:221) 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:727) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:503) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:421) at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1070) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:611) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:316) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) at java.lang.Thread.run(Thread.java:745)

Service Code: Реализация

package com.naresh.resteasy; 

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

@Path("/HelloResteasy") 
@Produces("text/plain") 
@Consumes("text/plain") 
public class HelloService { 

    @GET 
    @Path("/response") 
    public String printResponse(){ 
     return "Hello"; 

    } 

} 

Код для службы Класс

package com.naresh.resteasy; 

import java.util.HashSet; 
import java.util.Set; 

import javax.ws.rs.ApplicationPath; 
import javax.ws.rs.core.Application; 

------------------------- 
@ApplicationPath("/service") 
public class HelloApplication extends Application { 

    private Set<Object> singletons = new HashSet<Object>(); 

    public HelloApplication() { 
     singletons.add(new HelloService()); 
    } 

    @Override 
    public Set<Object> getSingletons() { 
     return singletons; 
    } 

} 

Web-XML:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app id="WebApp_ID" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 
    <display-name>RestEasyHello</display-name> 
    <servlet> 
    <servlet-name>resteasy-servlet</servlet-name> 
    <servlet-class> 
      org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher</servlet-class> 
    <init-param> 
     <param-name>javax.ws.rs.Application</param-name> 
     <param-value>com.naresh.resteasy.HelloApplication</param-value> 
    </init-param> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>resteasy-servlet</servlet-name> 
    <url-pattern>/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

Зависимости в pom.xml

<dependency> 
    <groupId>org.jboss.resteasy</groupId> 
    <artifactId>resteasy-jaxrs</artifactId> 
    <version>3.0.13.Final</version> 
</dependency> 
<!-- Below dependency is for JAXB integration --> 
<dependency> 
    <groupId>org.jboss.resteasy</groupId> 
    <artifactId>resteasy-jaxb-provider</artifactId> 
    <version>3.0.13.Final</version> 
</dependency> 
<dependency> 
    <groupId>org.jboss.resteasy</groupId> 
    <artifactId>resteasy-servlet-initializer</artifactId> 
    <version>3.0.16.Final</version> 
</dependency> 

Может кто-то пожалуйста, помогите по этому поводу?

ответ

0

Значение аннотации @Path является строкой, чувствительной к регистру. В коде службы, HelloService помечается @Path("/HelloResteasy"), но ваш путь запроса http://localhost:8080/RestEasyHello/service/HelloRestEasy/response/

@ApplicationPath определяет относительный базовый URL-путь для всех сервисов JAX-RS в развертывании. Таким образом, в вашем коде все JAX-RS RESTful-сервисы должны быть префиксны с помощью пути /services при выполнении. То есть, http://localhost:8080/service/HelloRestEasy/response/

+0

Спасибо Рахман за ответ. Я попытался с правильным URL-адресом ресурса, но получал то же исключение. 16 мая 2016 12:50:56 вечера org.jboss.resteasy.core.ExceptionHandler handleWebApplicationException ОШИБКА: RESTEASY002010: Не удалось выполнить javax.ws.rs.NotFoundException: RESTEASY: Не удалось найти ресурс для полного пути: http:// localhost: 8080/RestEasyHello/service/HelloResteasy/response/ \t at org.jboss.resteasy.core.registry.ClassNode.match (ClassNode.java:75) –

+0

@NareshKumar см. мое обновление – taoxiaopang

Смежные вопросы