次のような状況があります: リクエスト スコープのJAX-RSサービスがステートレスEJB3 Bean を呼び出し、EJB3 Bean はクライアントからの Web サービスの連続する呼び出し間で状態を保持します。
次のようにコードします。
ウェブサービス
@javax.enterprise.context.RequestScoped
@Path("/actions")
public class CounterFrontEnd {
@EJB
private ICounterService.ILocal counterService;
@GET @Produces("application/text;") @Path("/counter")
public String counter() {
return String.format("%d ", counterService.incCounter());
}
ステートレス EJB3 Bean
@Stateless
@Local (ICounterService.ILocal.class)
@Remote(ICounterService.IRemote.class)
public class CounterService implements ICounterService.ILocal, ICounterService.IRemote {
public int counter = 0;
@Override
public int incCounter() {
return counter++;
}
次に、次の Python スクリプトを使用してサービスを呼び出します。
for i in range(100):
os.system( 'curl http://somewhere:8080/counter-ws/rest/actions/counter' )
驚くべきことに、出力は次のとおりです。
1 2 3 4 5 ...