• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 572
  • Last Modified:

Running a JSP script every 5 mins?

Hello,

I am new to JSP. I would like to know how I can make a JSP script run automatically every 5 mins. This will be used to pull data from a webpage and store it in a database. If the server restarts, I need this script to continue to run.

Thank you,

- 007
0
jsp007
Asked:
jsp007
  • 6
  • 4
  • 3
  • +2
1 Solution
 
jsp007Author Commented:
I am testing the code on a tomcat server on Win XP, but the final production server will most likely be IBM websphere running on an undecided OS.

Thanks in advance

-007
0
 
jimmackCommented:
When the servlet container starts, you can have a servlet automatically load.  From this servlet's init() method, you could start a separate TimerTask that runs every 5 minutes to do your update.

To automatically load the servlet (and therefore execute the init() method) when the server starts, you need to include the <load-on-startup> tag (inside the <servlet> tag) in the web.xml file.
0
 
TimYatesCommented:
That's the only way I can think of doing it...

Of course instead of running a JSP, you would be better moving your code into the TimerTask

Tim
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
jarasaCommented:
Hi 007.
If your goal is to pickup data from the Web and put it on your database, with out caring of your webserver access, I really don't understand why you want to do it on a web based application. You should just make it on any language as an stand alone application and configure it as you like.
Javier
0
 
TimYatesCommented:
It's probably part of his web-application, so it can cache regular web-pages, or feeds...
0
 
jimmackCommented:
>> Of course instead of running a JSP, you would be better moving your code into the TimerTask

;-)

You cannot run a JSP from the new thread (unless the new Thread is simulating a browser).  So Tim is right here :-)
0
 
jsp007Author Commented:
hello everyone,

Thank you for taking time to answer my Q. The most sensible thing would be to write a standalone program, but that is not an option in this case. As of now the following answer seems to be the most reasonable one...
Comment from jimmack
Date: 12/09/2003 02:59PM PST

Is it possible for you to give me a step by step method of doing this i.e. loading the servlet into the init() method? Also, will I need any admin access to do this once it goes up on the sever?

Thanks

- 007
0
 
jimmackCommented:
The init() method is already inside the servlet.  It is one of the methods that you can override from GenericServlet.  So, you could do:

public TaskServlet extends GenericServlet
{
    public void init() throws ServletException
    {
        // Create and start the timer task here.
    }
}

For help with Timer and TimerTask, look at: http://java.sun.com/docs/books/tutorial/essential/threads/timer.html
0
 
jimmackCommented:
No, you shouldn't need any extra rights on the server.  If your servlet can execute, it should be able to start another thread.
0
 
TimYatesCommented:
Don't forget:

> you need to include the <load-on-startup> tag (inside the <servlet> tag) in the web.xml

as jim said earlier as well :-)
0
 
kdkruegerCommented:
I tested the following code on Tomcat 4.1.24.  The page continued to refresh every 5 minutes even after restarting the server.  The URL parameter should be the page you're calling it from (this page).

<HTML>
<HEAD>
<meta http-equiv="refresh" content="300; URL=http://your_url/test_refresh.jsp">
<title>test_refresh.jsp</title>
</HEAD>
<font size=+1>
This page should reload every five minutes.
<br>
<br><br>
<%@ page import="java.util.Calendar" %>
<%
      Calendar calendar = Calendar.getInstance();
%>
Loaded at <%=calendar.getTime()%>
</html>
0
 
TimYatesCommented:
> The page continued to refresh every 5 minutes even after restarting the server.

As long as you open it in a browser...  it will stop running when you close your browser...
0
 
kdkruegerCommented:
> This will be used to pull data from a webpage and store it in a database.

From the original post it sounds like a webpage will already be open.
0
 
jimmackCommented:
>> and store it in a database

?
0
 
kdkruegerCommented:
Storing the information in the database would be done with code on the jsp page that refreshes every 5 minutes.  This could be done with code like the following enhancement of my earlier post.  Put code to handle the submit before code to display the page.:

<HTML>
<HEAD>
<meta http-equiv="refresh" content="300; URL=http://yoururl/test_refresh.jsp">
<title>test_refresh.jsp</title>
</HEAD>
<body onunload="document.the_form.submit()">
<font size=+1>
This page should reload every five minutes.
<br>
Old value = <%=request.getParameter("the_time")%>
<br><br>
<%@ page import="java.util.Calendar" %>
<%
      Calendar calendar = Calendar.getInstance();
%>
<form name="the_form" action="http://your_url/test_refresh.jsp" method="post">
Loaded at <input name="the_time" value="<%=calendar.getTime()%>">.
</form>
</body>
</html>
0
 
jsp007Author Commented:
Hello everyone,

I just wanted to thank you all for answering my Qs. Although most of your answerswere right, it was not what I was looking for... The meta tag refresh (which I thought of previously) would not work because I cannot have a browser open day and night refreshing the page.

I have chosen the following answer because it is exactly what I wanted
Comment from jimmack
Date: 12/10/2003 03:22AM PST

I will follow this URL and and the rest is up to me to figure it out

Thanks a lot guys :-)

- Sid
0
 
jimmackCommented:
;-)
0

Featured Post

Keep up with what's happening at Experts Exchange!

Sign up to receive Decoded, a new monthly digest with product updates, feature release info, continuing education opportunities, and more.

  • 6
  • 4
  • 3
  • +2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now