Я хочу развернуть некоторые модули в 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?
Заранее спасибо.