외부 서비스를 호출하는 서블릿에서 코드를 호출했습니다. 물론 응답을 반환하는 데 서비스가 얼마나 오래 걸릴지 보장하지 않습니다. 이 서비스에 대한 호출이 한 번에 하나만 실행되도록해야하지만 서블릿 컨테이너는 서블릿에 대한 동시 요청을 실행할 수 있습니다. 먼저 서버의 첫 번째 서버에서 요청의 우선 순위가 단일 파일로 처리되도록 보장하고자합니다. 따라서 일단 외부 호출이 끝나면 다음 호출을하기 위해 어떤 스레드가 들어 왔는지 보장 할 수 없기 때문에 외부 서블릿 호출이 동기화되는 것만으로는 충분하지 않습니다.보증 스레드 실행 순서가 먼저옵니다.
아이디어가 있으십니까?
입니다 어쨌든 어느 것이 먼저 왔는지 당신은 정말로 알지 못합니다. 나는 요청의 순서에 관해서는별로 걱정하지 않을 것이며, 단지 그들이 서로 상호 작용하는 것으로부터 고립되어 있다는 것이다. – corsiKa
첫 번째 요청을 처리하는 데 20 분이 소요됩니다. 20 분 전에 올 수 있었던 1에서 n-1 전에 1 초 전에 실행 된 n 번째 요청을 처리하는 것이 공평합니까? 이런 식으로 완전한 기아를 가질 수 있습니다. (그렇다면 20 분이 극단적이며 관련이있는 다른 이슈를 제기 할 것입니다) – harschware
또한 당신은 옳습니다. 그러나 컨테이너의 요청과 달리이 잠재적으로 장기간 실행되는 리소스에 대한 액세스를 제어함으로써 문제의 정도를 완화 할 수 있습니다 잠재적으로 오래 실행되지 않습니다 (내 응용 프로그램은 컨테이너에서 유일한 것입니다). – harschware