DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG 
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=12938>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND 
INSERTED IN THE BUG DATABASE.

http://nagoya.apache.org/bugzilla/show_bug.cgi?id=12938

servlets do not register PUT request

           Summary: servlets do not register PUT request
           Product: Tomcat 4
           Version: 4.0.4 Final
          Platform: All
        OS/Version: All
            Status: NEW
          Severity: Blocker
          Priority: Other
         Component: Catalina
        AssignedTo: [EMAIL PROTECTED]
        ReportedBy: [EMAIL PROTECTED]


Create a servlet that implements doPut()

        public void doPut(HttpServletRequest request, HttpServletResponse response)
                                throws ServletException, IOException {
                response.setContentType("text/plain");
                PrintWriter out = response.getWriter();
                out.println("got PUT call");
        }


Call it with a client that does a PUT:

    public  static void main (String args[]) {
        try {

//                      URL url = new 
URL("http://localhost:8080/blah/servlets/PutServletTest";);
                        URL url = new 
URL("http://localhost:8080/blah/servlet/com.sri.chemsense.server.PutServletTest";);
                        HttpURLConnection conn = 
(HttpURLConnection)url.openConnection();
            conn.setRequestMethod("PUT");
            conn.setDoOutput(true);
            conn.setDoInput(true);
                        // in real servlet, stuff the contents of a ZIP file down 
output stream
                        conn.getOutputStream().close();

                        // get input
            InputStream stream = conn.getInputStream();
            BufferedInputStream in = new BufferedInputStream(stream);
            int i = 0;
            while ((i = in.read()) != -1) {
                System.out.write(i);
            }
            in.close();
        } catch (Exception e) {
                        e.printStackTrace();
        }
    }


The PUT servlet will not initialize, nor will it return a response.  Now if that 
servlet also implements doGet, you can send a GET request, and the servlet will 
initialize, and only then a PUT request will succeed.

Setting
    <load-on-startup>1</load-on-startup>
does not affect the PUT servlet's ability to receive that first request.

Tomcat 3.x does not show this problem, but I have tested on 4.0.3 and 4.0.4 and both 
show this problem.

The log file shows that the PUT was received, but doesn't seem to find a "registered" 
servlet.

127.0.0.1 - - [23/Sep/2002:15:45:00 -0800] "PUT /blah/servlet/PutServletTest HTTP/1.1" 
405 733

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to