Running his first Java Servlet today, one of my delegates reported an HTTP status 405 from his code when he tried to browse to it. A new one on me ... I am used to a good number of other return codes, but hadn't seen this before.
It turns out that the cause was the lack of an appropriate doGet method in the Servlet class; in my delegate's case he
had provided a doGet but with the wrong type of parameters, so instead of providing a method that Tomcat could call up he had provided what was, in effect, an internally available method only. I was able to reproduce the error later for the purpose of this note by simply mis-spelling doGet as doget ... Capital G to lower case g.
Wrong:
public void doget ( HttpServletRequest request,
HttpServletResponse response )
throws ServletException, IOException {
Right:
public void doGet ( HttpServletRequest request,
HttpServletResponse response )
throws ServletException, IOException {
Here are some other common 400 series errors we come across, and their typical causes to help you troubleshoot:
400 - Bad request
Typically this is caused by a user writing his own web client (for example using Web 2 techniques) and so making an illegal instruction call to the server
403 - Forbidden
A file exists on the server that is mapped to the URL that was given,
but that file is not readable by the web server process. Typically, this error occurs when the web site administrator is uploading a file via FTP or copying it into place and gets the file permissions or ownership wrong.
404 - Not Found
The most common of the lot. The request was valid, but doesn't point to anything which exists on the server. It could be that the user (at the browser) has mistyped a URL, it could be that there's a broken link on a web page pointing at thin air, and it could be that a file that should exist on the server doesn't, or has been accidentally deleted. You will also get a lot of 404 errors in your server logs relating to malicious software that's poking around looking for holes in your security!
401 - Unauthorized
The page exists, but the user has failed to enter a correct user name and passwordd to access it. See .htpasswd in the Apache documentation.
(written 2008-01-12, updated 2008-01-14)
Commentator | says ... | Leah: | Just a note to add that 403 - Forbidden is also returned when a deny by ip address or other parameter is used in an .htaccess file. (comment added 2008-01-14 13:55:01) |
Associated topics are indexed as below, or enter http://melksh.am/nnnn for individual articles
A654 - Web Application Deployment - Configuring and Controlling Tomcat [837] Tomcat - Shutdown port - (2006-08-18)
[907] Browser -> httpd -> Tomcat -> MySQL. Restarting. - (2006-10-28)
[914] A practical example of roles - (2006-11-04)
[1351] Compressing web pages sent out from server. Is it worth it? - (2007-09-14)
[1370] Apache Tomcat Performance Tuning - (2007-09-29)
[1553] Automatic startup and shutdown of Tomcat - (2008-02-24)
[1762] WEB-INF (Tomcat) and .htaccess (httpd) - (2008-08-20)
[1943] Port and Glasses - (2008-12-14)
[1994] tomcat-users.xml; what a difference a space made - (2009-01-16)
[2039] The Invoker - (2009-02-13)
[2061] Tomcat 6 - Annotated Sample Configuration Files - (2009-03-01)
[2163] CATALINA_OPTS v JAVA_OPTS - What is the difference? - (2009-05-09)
[2652] Reading and writing cookies in Java Servlets and JSPs - (2010-02-26)
[3043] Gathering information - logging - with log4j. First steps. - (2010-11-12)
A606 - Web Application Deployment - Apache httpd - log files and log tools [376] What brings people to my web site? - (2005-07-13)
[1237] What proportion of our web traffic is robots? - (2007-06-19)
[1598] Every link has two ends - fixing 404s at the recipient - (2008-04-02)
[1656] Be careful of misreading server statistics - (2008-05-28)
[1761] Logging Cookies with the Apache httpd web server - (2008-08-20)
[1780] Server overloading - turns out to be feof in PHP - (2008-09-01)
[1796] libwww-perl and Indy Library in your server logs? - (2008-09-13)
[3015] Logging the performance of the Apache httpd web server - (2010-10-25)
[3019] Apache httpd Server Status - monitoring your server - (2010-10-28)
[3027] Server logs - drawing a graph of gathered data - (2010-11-03)
[3087] Making the most of critical emails - reading behind the scene - (2010-12-16)
[3443] Getting more log information from the Apache http web server - (2011-09-16)
[3447] Needle in a haystack - finding the web server overload - (2011-09-18)
[3491] Who is knocking at your web site door? Are you well set up to deal with allcomers? - (2011-10-21)
[3554] Learning more about our web site - and learning how to learn about yours - (2011-12-17)
[3670] Reading Google Analytics results, based on the relative populations of countries - (2012-03-24)
[3974] TV show appearance - how does it effect your web site? - (2013-01-13)
[3984] 20 minutes in to our 15 minutes of fame - (2013-01-20)
[4307] Identifying and clearing denial of service attacks on your Apache server - (2014-09-27)
[4404] Which (virtual) host was visited? Tuning Apache log files, and Python analysis - (2015-01-23)
[4491] Web Server Admin - some of those things that happen, and solutions - (2015-05-10)
A207 - Web Application Deployment - HTTP [484] Setting the file name for a downloaded document - (2005-11-03)
[1378] Etag in http headers - what is it? - (2007-10-03)
[1549] http, https and ajp - comparison and choice - (2008-02-22)
[2321] Uploading and Downloading files - changing names (Perl and PHP) - (2009-08-04)
[2596] Http protocol - what does a web server send - (2010-01-24)
[2738] What is all this SESSION stuff about? (PHP) - (2010-04-25)
[2918] Downloading a report from the web for further local analysis - (2010-08-13)
[3432] 3 digit HTTP status codes - what are they, which are most common, which should be a concern? - (2011-09-11)
Some other Articles
Comments on proposed Asda Superstore for MelkshamOngoing Image Copyright Issues, PHP and MySQL solutionsScript to present commonly used images - PHPFlooding by Asda-s proposed new supermarketWeb page (http) error status 405Java, sorting, ArrayList example, genericsJava - using super to call a method in the parent classFirst Class Java. First step and moving forward.Climate change, renewable resources and paper v plasticJava is a dynamic language .... (and comparison)