title: Invoke the doGet Servlet method from java class
body: <p>I have a scheduled job class, implements the Quartz Job class, from which I want to invoke a Servlet class that updates a flag in a DB table and then it sends emails to an appropriate emailing list.</p>
  
  <p>I get a <code>java.net.ConnectException</code>. Though the servlet is properly invoked by either entering its URL in the browser or by JavaScript in a JSP page.</p>
  
  <p>My Java class is the following:</p>
  
  <pre><code>public class ExpirationJob implements Job {
      org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger("ExpirationJob.class");
  
      public void execute(JobExecutionContext context)
              throws JobExecutionException {
          try {
              URL serv = new URL("http://localhost:8080/app/emailExpirationServlet");
              URLConnection sr = serv.openConnection();
              sr.connect();
              InputStream is = sr.getInputStream();
              InputStreamReader isr = new InputStreamReader(is);
              BufferedReader in = new BufferedReader(isr);
  
              String inputLine;
              int i =0;
              while ((inputLine = in.readLine()) != null)
                  i = i +1;
              log.debug("Input line: " + inputLine);
              in.close();
          } catch (MalformedURLException e) {
              log.debug("Error while calling the emailExpirationServlet -- MalformedURLException: "+ e.getMessage());
              e.printStackTrace();
          } catch (IOException e) {
              log.debug("Error while calling the emailExpirationServlet -- IOException: "+ e.getMessage());
              e.printStackTrace();
          }
      }
  }
  </code></pre>
  
  <p>My servlet code is:</p>
  
  <pre><code>public class emailExpireServlet extends HttpServlet {
      private static final String CONTENT_TYPE = "text/html; charset=UTF-8";
      org.apache.log4j.Logger log = org.apache.log4j.Logger.getLogger("emailExpireServlet.class");
  
      public void init(ServletConfig config) throws ServletException {
          super.init(config);
          log.debug("Initializing emailExpireServlet");
      }
  
      public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  
          request.setCharacterEncoding("UTF-8");
          response.setContentType("text/html;charset=UTF-8");
          response.setDateHeader("Expires", 0);
          response.setHeader("Cache-Control", "no-cache");
          log.debug("Starting emailExpireServlet");
  
          //do some business logic here - I have commented it out to rule out any other blocking issue
          response.setStatus(200);
          response.getOutputStream().print("Invoked emailExpireServlet! Status is OK");
  
      }
  
      public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
          doGet(request, response);
      }
  }
  </code></pre>
  
  <p>The exception I get is:</p>
  
  <pre><code>java.net.ConnectException: Connection refused: connect
      at java.net.PlainSocketImpl.socketConnect(Native Method)
      at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
      at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
      at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
      at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
      at java.net.Socket.connect(Socket.java:525)
      at java.net.Socket.connect(Socket.java:475)
      at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
      at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
      at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
      at sun.net.www.http.HttpClient.&lt;init&gt;(HttpClient.java:233)
      at sun.net.www.http.HttpClient.New(HttpClient.java:306)
      at sun.net.www.http.HttpClient.New(HttpClient.java:323)
      at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:860)
      at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:801)
      at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:726)
      at schedulers.ExpirationJob.execute(Unknown Source)
      at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
      at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557)
  </code></pre>
  
  <p>I am using Tomcat 5.5. </p>
  
  <p>I have seen lots of other relative posts but did not help, I also tried with <code>HttpClient</code> but the same exception. </p>
  
  <p>Could anyone figure out what the problem is?  </p>
  
  <p>The servlet configuration on the <code>web.xml</code> is:</p>
  
  <pre><code>&lt;servlet&gt;
      &lt;servlet-name&gt;emailExpireServlet&lt;/servlet-name&gt;
      &lt;servlet-class&gt;emailExpireServlet&lt;/servlet-class&gt;
  &lt;/servlet&gt;
  ...
  &lt;servlet-mapping&gt;
      &lt;servlet-name&gt;emailExpireServlet&lt;/servlet-name&gt;
      &lt;url-pattern&gt;/emailExpireServlet&lt;/url-pattern&gt;
  &lt;/servlet-mapping&gt;
  </code></pre>