【问题标题】:JTA persist does not work with REST POST serviceJTA persist 不适用于 REST POST 服务
【发布时间】:2014-09-13 17:51:53
【问题描述】:

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

  • 玻璃鱼
  • 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;
    }
...

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

【问题讨论】:

  • 你能包括你的 PersonFacade 实现吗?

标签: java glassfish jersey ejb


【解决方案1】:

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

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

【讨论】:

  • 感谢您的回答,但我发现了问题!那是因为我忘了把 beans.xml 放到 WEB-INF 文件夹中!!!我不知道这个错误怎么可能发生这种事情!在我做之后它起作用了。我切换到 JBoss,看起来它更稳定,有非常有用的日志和错误消息。
【解决方案2】:

我发现了问题!那是因为我忘了把 beans.xml 放到 WEB-INF 文件夹中!!!我不知道这个错误怎么可能发生这种事情!在我做之后它起作用了。我切换到 Wildfly,似乎更稳定,有非常有用的日志和错误消息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-17
    • 2018-11-21
    • 2013-08-20
    • 2015-08-07
    • 2017-06-25
    • 2016-02-26
    • 2018-03-06
    • 2012-10-05
    相关资源
    最近更新 更多