O ile mi wiadomo, Java Servlets obsługują wiele żądań jednocześnie i przeszukałem StackOverflow, jak również Google, i potwierdziłem, co myślałem. Jednak jestem teraz bardzo zdezorientowany, napisałem proste serwlety, które wydają się blokować zachowanie.Serwlet wydaje się obsługiwać wiele jednoczesnych żądań przeglądarki synchronicznie
więc mam proste serwletu:
public class MyServlet extends HttpServlet
{
private static final long serialVersionUID = 2628320200587071622L;
private static final Logger logger = Logger.getLogger(MyServlet.class);
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException
{
logger.info("[doGet] Test before");
try {
Thread.sleep(60000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
logger.info("[doGet] Test after");
resp.setContentType("text/plain");
resp.getWriter().write("OK");
}
}
Wtedy mam 2 okien przeglądarki, otworzyłem w ~ tym samym czasie, który dotknął mojego serwletu. Rezultatem jest pierwsza próba zablokowania drugiej. Dziennik zawiera również:
10:49:05,088 [http-8383-Processor14] INFO MyServlet - [doGet] Test before
10:50:05,096 [http-8383-Processor14] INFO MyServlet - [doGet] Test after
10:50:05,106 [http-8383-Processor22] INFO MyServlet - [doGet] Test before
10:51:05,112 [http-8383-Processor22] INFO MyServlet - [doGet] Test after
czuję jakbym czegoś brakuje ... Servlets powinien być w stanie obsługiwać jednoczesne żądanie, ale nie robi wydaje się to robić. Zrobiłem też to samo, co powyżej, w metodzie serwisowej zamiast w DoGet i robi to samo.
Jakieś wskazówki?
Dzięki
Twoja przeglądarka może serializować żądania, co się stanie, jeśli spróbujesz tego z 2 różnych komputerów lub z 2 różnych przeglądarek? (tzn. iexploere i firefox) Możesz również sprawdzić dzienniki dostępu http, aby zobaczyć, czy żądania docierają do twojego kontenera serwletów jednocześnie. – rsp
Czy możesz pokazać 'web.xml' i (zakładając, że jest to tomcat)' server.xml'. – beny23
@beny: Nie jestem pewien, jak dokładnie byłoby to pomocne w zrozumieniu przyczyny problemu. Czy możesz rozwinąć? – BalusC