user25104
user25104

Reputation: 43

How do i get rid of: HTTP Status 405 - HTTP method GET is not supported by this URL?

I have been breaking my head over this issue over the past few hours. This is my first attempt at writing a web app and deploying it to the apache tomcat web container. I follow a simple tutorial from here and then end up getting this error. Tried a few solutions as appear in other posts about the same issue but none seemed to have worked so far. I am pasting snippets of and web.xml, website.xml and my code files respectively. Kindly see if i am doing something wrong. Thanks in advance.

web.xml:

<?xml version="1.0"?>
<web-app
     xmlns="http://java.sun.com/xml/ns/j2ee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
        http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
     version="2.4">
   <servlet>
      <servlet-name>home</servlet-name>
      <servlet-class>website.web.TestServlet</servlet-class>
   </servlet>
   <servlet-mapping>
      <servlet-name>home</servlet-name>
      <url-pattern>/home</url-pattern>
   </servlet-mapping>
</web-app>

website.xml:

<Context path="/website" docBase="C:\Users\Priyankar\workspace\website\web" />

HomeServlet.java

package website.web;

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HomeServlet extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
               throws ServletException, IOException {
                  PrintWriter writer = resp.getWriter();
                  writer.println("<h1>Hello, World!</h1>");
               }        
}

The following is what i see in localhost_access_log:

0:0:0:0:0:0:0:1 - admin [21/Jun/2013:13:25:40 -0500] "POST /manager/html/deploy?org.apache.catalina.filters.CSRF_NONCE=435C56002971030D163AA1C798F91722 HTTP/1.1" 200 14076
0:0:0:0:0:0:0:1 - - [21/Jun/2013:13:28:50 -0500] "GET /website/home HTTP/1.1" 405 1065

manager_log:

Jun 21, 2013 1:25:40 PM org.apache.catalina.core.ApplicationContext log
INFO: HTMLManager: init: Associated with Deployer 'Catalina:type=Deployer,host=localhost'
Jun 21, 2013 1:25:40 PM org.apache.catalina.core.ApplicationContext log
INFO: HTMLManager: init: Global resources are available
Jun 21, 2013 1:25:40 PM org.apache.catalina.core.ApplicationContext log
INFO: HTMLManager: install: Installing context configuration at 'C:\Users\Priyankar\workspace\website\website.xml'
Jun 21, 2013 1:25:40 PM org.apache.catalina.core.ApplicationContext log
INFO: HTMLManager: list: Listing contexts for virtual host 'localhost'

The rest appear to be normal to me unless you wanted to have a look at any specific log file.

error message:

HTTP Status 500 - Error instantiating servlet class website.web.TestServlet

type Exception report

message Error instantiating servlet class website.web.TestServlet

description The server encountered an internal error that prevented it from fulfilling this request.

exception

javax.servlet.ServletException: Error instantiating servlet class website.web.TestServlet
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    java.lang.Thread.run(Unknown Source)

root cause

java.lang.ClassNotFoundException: website.web.TestServlet
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
    org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
    org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
    java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
    java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
    java.lang.Thread.run(Unknown Source)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.41 logs.
Apache Tomcat/7.0.41

Here's the screen shot of the project tree from the package explorer:

enter image description here

Upvotes: 3

Views: 2904

Answers (2)

motiver
motiver

Reputation: 2202

The class name you gave is TestServlet and your web.xml is HomeServlet. So when you hit the URL it cannot find anything that is called HomeServlet.

Slightly off topic but relevant: You would have caught this during deploying itself if you had the

<load-on-startup>0</load-on-startup>

tag.

That basically loads the Servlet during deploy and if it didn't find any it will throw up. If you don't give that tag, the server loads whenever it feels like.

Upvotes: 2

austin
austin

Reputation: 5866

The code in your screenshot is for a Java class called website.web.TestServlet but your web.xml and code posted say website.web.HomeServlet.

Upvotes: 2

Related Questions