简体   繁体   English

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

[英]JTA persist does not work with REST POST service

I have a very weird problem with Jersey REST services. 我对Jersey REST服务有一个很奇怪的问题。 I'm using: 我正在使用:

  • Glassfish 玻璃鱼
  • sh4.0 sh4.0
  • EJB3.1 EJB3.1
  • JDK1.7 JDK1.7
  • Netbeans8.0 Netbeans8.0

When I persist an object by GET request it normally store in database: 当我通过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;
    }

}

But when I'm using POST: 但是当我使用POST时:

...

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

Everything works but Object does not store in database (without any error)!! 一切正常,但是对象不存储在数据库中(没有任何错误)!

I'm pretty sure that is the parameter, you should use the @Consumes annotation to pass a Person object as JSON/XML parameter or use the same @QueryParam annotations to describe the object to persist. 我很确定这是参数,您应该使用@Consumes批注将Person对象作为JSON / XML参数传递,或者使用相同的@QueryParam批注来描述持久化的对象。

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

I found the problem! 我发现了问题! It was because I forgot to put beans.xml into WEB-INF folder!!! 这是因为我忘记将beans.xml放到WEB-INF文件夹中了!!! I don't know how it is possible to such things happen by this mistake!! 我不知道这种错误怎么可能发生! After I did it works. 在我做完之后。 I switch to Wildfly, seems it's more stable, with very good useful logs and error message. 我改用Wildfly,它似乎更稳定,具有非常有用的日志和错误消息。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM