Я создаю веб-службу REST, которая должна быть работоспособной. Рассмотрим следующую ситуацию:Java EE 6 - Stateful REST as Session session bean
- Веб-сервис выполняет сложные и трудоемкие вычисления и возвращает очень большой результат. Таким образом, эта служба возвращает только количество результатов, и весь результат сохраняется на сервере в компоненте stateful.
- Если результат существует. Клиент может запросить подмножество существующих результатов.
Я пытаюсь сделать это через @Stateful
сеанс bean, но он по-прежнему действует как @Stateless
. Теперь мне интересно, возможно ли это, потому что Клиент не принимает Cookie, поэтому сервер не может его идентифицировать.
Возможно ли, что с помощью REST можно использовать компонент Stateful 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.