[英]Java EE 6 - Stateful REST as Stateful session bean
我正在创建需要有状态的REST Web服务。 考虑以下情况:
我试图通过@Stateful
会话bean来做到这一点,但它仍然像@Stateless
一样。 现在我想知道它是否可能,因为客户端不接受任何Cookie,因此服务器无法识别它。
是否可以通过REST接收有状态bean?
代码示例:
@Path("/similarity/")
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
@Stateful
@StatefulTimeout(600000) // 10 minutes
public class SimilarityResource {
private List<SimilarityResult> savedSimilarityResults = new ArrayList<SimilarityResult>();
@POST
@Path("/atom-count/")
public List<SimilarityResult> atomCountSimilarity(JAXBElement<SimilarityRequestXML> sr) {
try {
if (this.savedSimilarityResults.isEmpty()) {
List<SimilarityResult> similarityResults = acs.findAllSimilar(); // Time consuming
this.savedSimilarityResults = similarityResults; // Save results
return similarityResults;
} else {
CompoundResponse cr = new CompoundResponse("Hureeey stateful bean works!.", 404);
throw new WebApplicationException(cr.buildResponse());
}
} catch (CompoundSearchException e) {
CompoundResponse cr = new CompoundResponse(500, e);
throw new WebApplicationException(cr.buildResponse());
}
}
}
我期望的是,当我将这个/atom-count/
方法调用两次时,它应该用404响应。
您应该使用@SessionScoped
注释您的资源类,以告知JAX-RS创建具有会话生存期的请求对象,否则默认为@RequestScoped
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.