JTA持久性不适用于REST POST服务

时间:2014-09-13 17:51:53

标签: java glassfish jersey ejb

我对Jersey REST服务有一个非常奇怪的问题。我正在使用:

  • Glassfish的
  • sh4.0
  • EJB3.1
  • JDK1.7
  • Netbeans8.0

当我通过GET请求持久保存对象时,它通常存储在数据库中:

@Singleton
@Path("/person")
public class SampleRest {

    @EJB
    PersonFasade personFasade;

    @GET
    public Person getPerson1(
            final @QueryParam("id") String id,
            final @QueryParam("first") String first,
            final @QueryParam("last") String last) 
    {
        final Person person = this.personFasade.create(id, first, last);        
        return person;
    }

}

但是当我使用POST时:

...

    @POST
    public Person getPerson3(Person person) {
        this.personFasade.create(person);    
        return person;
    }
...

一切正常但Object不存储在数据库中(没有任何错误)!!

2 个答案:

答案 0 :(得分:0)

我很确定这是参数,您应该使用@Consumes注释将Person对象作为JSON / XML参数传递,或使用相同的@QueryParam注释来描述要保留的对象。

@POST
@Consumes(MediaType.APPLICATION_JSON)
public Person getPerson3(Person person) {
    this.personFasade.create(person);    
    return person;
}

答案 1 :(得分:0)

我发现了问题!那是因为我忘了把beans.xml放到WEB-INF文件夹中!我不知道这个错误是怎么发生的!我做完之后就行了。我切换到Wildfly,看起来更稳定,有非常好的有用日志和错误信息。