小编use*_*385的帖子

对REST Web服务的同步访问

使用此代码使用简单的REST服务时出现问题:

@GET
@Path("next/{uuid}")
@Produces({"application/xml", "application/json"})
public synchronized Links nextLink(@PathParam("uuid") String uuid) {
    Links link = null;
    try {
        link = super.next();
        if (link != null) {
            link.setStatusCode(5);
            link.setProcessUUID(uuid);
            getEntityManager().flush(); 
            Logger.getLogger("Glassfish Rest Service").log(Level.INFO, "Process {0} request url : {1} #id  {2} at {3} #", new Object[]{uuid, link.getLinkTxt(), link.getLinkID(), Calendar.getInstance().getTimeInMillis()});
        }
    } catch (NoResultException ex) {
    } catch (IllegalArgumentException ex) {
    }
    return link;
}
Run Code Online (Sandbox Code Playgroud)

这应该提供一个链接对象,并将其标记为已使用(setStatusCode(5))以防止下次访问服务以发送相同的对象.问题是,当有很多快速客户端访问Web服务时,这个客户端向不同客户端提供相同链接对象的2到3倍.我怎么能解决这个问题?

这里是resquest使用:@NamedQuery(name ="Links.getNext",query ="SELECT l FROM Links l WHERE l.statusCode = 2")

和super.next()方法:

public T next() { …
Run Code Online (Sandbox Code Playgroud)

java rest persistence jpa jersey

3
推荐指数
2
解决办法
6944
查看次数

标签 统计

java ×1

jersey ×1

jpa ×1

persistence ×1

rest ×1