【问题标题】:Creating a REST Service with Glassfish 4 outside of a WAR在 WAR 之外使用 Glassfish 4 创建 REST 服务
【发布时间】:2013-12-01 02:53:07
【问题描述】:

我有一个休息服务实现如下

@Stateless
@Path("/Person")
@Produces(MediaType.APPLICATION_XML)
public class RestService {

    @PersistenceContext(unitName = "mysqlPU")
    EntityManager em;

    @GET
    @Path("{id}")
    public Response Book(@PathParam("id") Long id) {
        Person person = em.find(Person.class, id);
        if(person == null) {
            return Response.status(Response.Status.FORBIDDEN).build();
        }
        return Response.ok(person).build();
    }
}

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

    private final Set<Class<?>> classes;

    public ApplicationConfig() {
        HashSet<Class<?>> c = new HashSet<Class<?>>();

        c.add(RestService.class);

        classes = Collections.unmodifiableSet(c);
    }

    @Override
    public Set<Class<?>> getClasses() {
        return classes;
    }

}

它与其他 ejb 一起打包在一个 jar 文件中,在任何 .war 之外。 如果我耳朵里碰巧有一个战争包,我只能访问该服务。我可以使用 localhost:8080/warContextRoot/rs/ 等战争的上下文根来访问它。 有什么方法可以在不部署战争的情况下部署休息服务并且仍然可以访问它?

【问题讨论】:

    标签: rest glassfish-4 java-ee-7


    【解决方案1】:

    我认为原因是您在 EJB 会话 bean 中实现了 REST Web 服务,而 EJB 通常捆绑在 EAR 文件中。

    另一种方法是,您可以将 REST Web 服务实现为常规 Servlet,通过其标准 GET/POST 方法为请求提供服务,然后可以将其部署在 WAR 中。并且您可以通过 web.xml 的 servlet 映射中定义的 URL 调用 REST Web 服务。

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-10-05
      • 1970-01-01
      • 1970-01-01
      • 2016-07-23
      • 1970-01-01
      • 1970-01-01
      • 2011-04-01
      • 2013-11-04
      相关资源
      最近更新 更多