2013-11-29 4 views
0

Я хочу развернуть некоторые модули в EAR в GlassFish и вызвать службы из java-клиента.Как вызвать службу REST с клиента Java?

С этими классами имеется один модуль 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-файлы упакованы внутри EAR под названием «simpleapp.ear» развертывается в GlassFish. GlasFish перечисляет приложение «simpleapp» с одним модулем «ejbees.jar» и одним компонентом «HelloREST».

Это код, который я до сих пор звонил HelloREST.

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, я попробовал:

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

Но я всегда получаю HTTP 404 не найдена ошибка. Как должен выглядеть правильный URI? Или это неправильно, чтобы упаковать службы REST внутри EJB внутри EAR? Есть ли способ задать GlassFish для URI для служб REST?

Заранее спасибо.

ответ

0

Мой ApplicationConfig класс выглядит следующим образом:

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

В остальном сервис выглядит следующим образом:

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

Теперь вы можете обращаться к нему как:

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

Не проверял этот пример, но это в значительной степени, поскольку я использую его в своем приложении.

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