2016-10-01 2 views
0

휴식 전화를 걸려고하는데 작동하지 않습니다.휴식 서비스가 작동하지 않습니다.

내 프로젝트 탐색기는;

My project explorer is

내 web.xml을이다;

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1"> 
    <display-name>HelloRest</display-name> 
    <servlet-mapping> 
    <servlet-name>javax.ws.rs.core.Application</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
    </servlet-mapping> 
    <welcome-file-list> 
    <welcome-file>index.html</welcome-file> 
    <welcome-file>index.htm</welcome-file> 
    <welcome-file>index.jsp</welcome-file> 
    <welcome-file>default.html</welcome-file> 
    <welcome-file>default.htm</welcome-file> 
    <welcome-file>default.jsp</welcome-file> 
    </welcome-file-list> 
</web-app> 

IHello.java;

@Path("hello") 
public interface IHello { 
    @GET 
    @Path("sayHello") 
    public String sayHello(@QueryParam("name") String name); 
} 

Hello.java;

public class Hello implements IHello { 
    @Override 
    public String sayHello(String name) { 
     return "Hello: " + name; 
    } 
} 

나는 브라우저에서 호출합니다.

http://localhost/HelloRest/rest/hello/sayHello?name=me 

하지만 찾지 못함을 반환합니다.

내가 전화하면;

http://localhost/HelloRest/aa/index.html, 

나는 index.hmtl의 내용을 볼 수 있습니다.

내 문제는 무엇이며 어떻게 해결할 수 있습니까?

참고 : 나는 아래로 서블릿 배포 코드를 변경 제이보스 - 10.1

답변

0

시도로 배포합니다. 웹 애플리케이션에서 발견이 배포 모든 @Path 클래스는 URL 패턴을 사용할 수 있습니다/휴식/*

<servlet> 
    <servlet-name>javax.ws.rs.core.Application</servlet-name> 
    <load-on-startup>1</load-on-startup> 
</servlet> 
<servlet-mapping> 
    <servlet-name>javax.ws.rs.core.Application</servlet-name> 
    <url-pattern>/rest/*</url-pattern> 
</servlet-mapping> 
0

나라야나의 대답은 완벽하게 유효하지만 대신 모두 함께 web.xml을 지내다 수 @ 및 지금, 당신의 코드와 동일한 디렉토리에 살고 같은 외모, 하나의 추가 Java 파일이 있습니다

package hellorest; 

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

/** 
* Used to bootstrap the rest services. This class is not directly used. 
*/ 
@ApplicationPath("/services") 
public class RestApplicationConfig extends Application { 
    // intentionally empty 
} 

주목하라 "/ 서비스"주석 -이 당신의 서비스/서비스에 액세스 할 것이라고 말한다 그래서 당신의 예에서는 아마 http://localhost:8080/HelloRest/services/hello/sayHello

+0

주석 주셔서 감사 합니다만, standalone.xml에서 포트를 8080에서 80으로 변경하므로'http : // localhost'가 맞습니다. 나머지는 web.xml에서 응용 프로그램 경로를 설정하므로 응용 프로그램을 확장 할 필요가 없으므로'http : // localhost/HelloRest/rest'도 수정됩니다. 그러나 잘못된 것이 있으며 그것을 모른다. – xxlali

관련 문제