我想在GlassFish中的EAR中部署一些模块,并从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打包在一个名为“simpleapp.ear”的EAR中,并部署到GlassFish。 GlasFish使用一个模块“ejbees.jar”和一个组件“HelloREST”列出了应用程序“simpleapp”。
这是我到目前为止致电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应该如何?或者在EAR内部的EJB中包装REST服务是错误的吗?有没有办法向GlassFish询问REST服务的URI?
提前致谢。
答案 0 :(得分:0)
我的ApplicationConfig类看起来像这样:
@ApplicationPath("rest")
public class ApplicationConfig extends Application {
}
REST服务如下所示:
@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
没有测试过这个例子,但这几乎就像我在我的应用程序中使用它一样。