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.
The moose likes Servlets and the fly likes explicitly sending http 200ok message from servlet Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

JavaRanch » Java Forums » Java » Servlets
Bookmark "explicitly sending http 200ok message from servlet" Watch "explicitly sending http 200ok message from servlet" New topic

explicitly sending http 200ok message from servlet

ram prasadgk

Joined: Aug 03, 2009
Posts: 3
Hi All,

Problem: I am Receiving a post message to my servlet from a thirdparty server and then it is Expecting 200ok response from servlet.But i am executing my logic in dopost method before my logic execution completes the timeout happens from thirdparty server for post message.
So now i want to send the Http 200ok immediately once i receive a post message and then start executing my logic.How can i send a Http 200ok message.

Balu Sadhasivam
Ranch Hand

Joined: Jan 01, 2009
Posts: 874


You can explicitly set status of the response using HttpServletResponse setStatus() , in this case (200) setStatus(HttpServletResponse.SC_OK) . But i don't know what is the logic processing that is carried out after that and whether that impacts the response status. If your question is just how to set status , then here it is setStatus(HttpServletResponse.SC_OK)
ram prasadgk

Joined: Aug 03, 2009
Posts: 3
Hi Bala,

Yes i agree with the answer but setStatus only sets the type of http message but does not trigger the response message[Correct me if i am wrong]
I want to send a response to the POST message as 200 ok and then start executing a logic.
Regarding my logic it contains some database related operations and then triggers the GET message to the thirdparty server.
I Hope i am clear with my question.

Maruthi Janardhan

Joined: Aug 04, 2009
Posts: 16
I think there is a more fundamental design issue here. If you send a 200 to the other server before you finish processing and then your processing fails, the other server would have falsely got a positive response. You need to find ways to speed up your processing or increase the timeout for the other server.

If you are ok with the false positive then this is fundamentally an asynchronous call. Your servlet can just put a message is something like a JMS queue and reply back with a 200OK to the other server. You will then have some kind of a message listener or MDB to process this JMS message. There are other ways to process anything asynchronously - such as EJB timers, Quartz timers or your own thread pool.

PS: Do not create your own threads in servlets. If you really must, then use a threadpool such as the one provided by Executors.newFixedThreadPoolExecutor() on JDK 5+

Bear Bibeault
Author and ninkuma

Joined: Jan 10, 2002
Posts: 63196

Examine the "Long Running Process" example here, for a more approriate way to deal with long-running processes.

[Asking smart questions] [Bear's FrontMan] [About Bear] [Books by Bear]
ram prasadgk

Joined: Aug 03, 2009
Posts: 3
Thanks All for your Solutions.It was really helpfull.
I’ve looked at a lot of different solutions, and in my humble opinion Aspose is the way to go. Here’s the link:
subject: explicitly sending http 200ok message from servlet
jQuery in Action, 3rd edition