This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
I am using servlets in my current development. Now i am confused about how they work a bit. I understand that unless i implement a SingleThreaded interface the servlet by default is multithreaded right ? Now let's say that in one of my servlets doGet method i open a connection to a socket. Now i can keep that connection open for a long time , so to prevent my doGet from finishing i placed a syncrhonized block in there and a wait method to wait until certain task is complete my syncrhonized block is on this meaning on current servlet object. Now when the thread finishes it it notifies that its free to exit the doGet method. It works fine andn i get no problems. Problem i think is that when i try to open another Client browser and connect to my servlet i get connected but the first browser stops recieving input from the Socket. I dont see anywhere that the thread has exited it just no longer recieves the output from the Socket. What can be wrong with it ? I am testing this on one machine. Both clients on one machine and the ServerSocket again is also opened on this machine. Could it be the problem with that ? I see that the messages go to all the clients from the output in debug , but just only the last one recieves it. Thanks for your assistance.
Are you catching and reporting any exceptions that occur in your socket code? Bill
Joined: Feb 22, 2001
There are no exceptions at all , as far as i know that it works fine it's just that the first browser where the user is waiting for messages stops recieving them . I have println everywhere to see if he has existed doGet method where he has to recieve messages and he hasn't yet exited , so that can't be the problem. I just don't know what is anymore.