2013-11-29 3 views
0

GlassFish의 EAR 내에 일부 모듈을 배포하고 Java 클라이언트에서 서비스를 호출하려고합니다.Java 클라이언트에서 내 REST 서비스를 호출하려면 어떻게해야합니까?

이러한 클래스에는 하나의 EJB 모듈 ("ejbees.jar")이 있습니다.

@Stateless 
@Path("hello") 
public class HelloREST{ 

    @GET 
    @Produces({MediaType.TEXT_PLAIN}) 
    public String sayHello(){ 
     return "Hello REST"; 
    } 
} 

@ApplicationPath("example/*") 
public class ApplicationConfig extends Application{ 

    @Override 
    public Set<Class<?>> getClasses() { 
     Set<Class<?>> c = new HashSet(); 
     c.add(HelloREST.class); 
     return c; 
} 

EJB 모듈과 다른 JAR 파일

은 "simpleapp.ear"라고하며 글래스 피쉬에 배포 된 EAR ​​내부에 포장됩니다. GlasFish는 하나의 모듈 "ejbees.jar"와 하나의 구성 요소 "HelloREST"로 애플리케이션 "simpleapp"를 나열합니다.

이것은 지금까지 HelloREST이라고 부르는 코드입니다.

http://localhost:8080/example 
http://localhost:8080/simpleapp/example 
http://localhost:8080/simpleapp/ejbees/example 
http://localhost:8080/ejbees/simpleapp/example 

을하지만 난 항상 HTTP 404 찾을 수 없음 오류가 발생합니다 :

public void callHelloRest(String uri){ 
    WebTarget wr = ClientBuilder.newClient.target(uri); 
    String hellomessage = wr.path("hello").request(MediaType.TEXT_PLAIN).get(String.class);//Here comes HTTP 404 not found error. 
} 

URI는 내가 시도했다. 올바른 URI는 어떻게 생겼을 까? 아니면 EAR 내부의 EJB 내부에 REST 서비스를 패키지하는 것은 잘못된 것인가? GlassFish에게 REST 서비스에 대한 URI를 요청하는 방법이 있습니까?

미리 감사드립니다.

답변

0

내 ApplicationConfig 클래스는 다음과 같습니다

http://localhost:8080/rest/hello/getHello?name=RAM 

은 테스트하지 않았습니다 :

지금
@Stateless 
@Path("/hello") 
public class HelloRest {   
    @GET 
    @Path("/getHello") 
    public String getHello(@QueryParam(value = "name") String name) throws Exception 
     return "Hello, " + name; 
    } 
} 

당신이 원하는에 액세스 할 수 있습니다

@ApplicationPath("rest") 
public class ApplicationConfig extends Application { 
} 

나머지 서비스는 다음과 같습니다 이 예제에서는, 그러나 이것은 어플리케이션에서 사용하는 것과 같습니다.

관련 문제