如何在启动tomcat时候,自动启动一个jar程序。
觉得这个应该在打包tomcat web服务为一个独立程序的时候应该有点作用。原文博客特别不错。
原文地址:https://crunchify.com/how-to-run-java-program-automatically-on-tomcat-startup/
![Apache Tomcat - Crunchify Tips](https://cdn.crunchify.com/wp-content/uploads/2013/05/Apache-Tomcat-Crunchify-Tips.jpg)
Recently I wanted to start my standalone Java Application on Tomcat Startup. Also found so many other related questions on net. i.e.
- I need to run an application that can run automatically that when the tomcat starts..? any suggestions…?
- how can I start my application by default on tomcat server start/restart?
- Is it possible to
edit
tomcat startup services? - How to Start a service
automatically
when the tomcat starts
To run java program automatically on tomcat startup, need to use Servletand this Servlet initialized on tomcat startup automatically.
To execute a program, you have to use Servlet
and Servlet should define in deployment descriptor web.xml
file under WEB-INF
folder.
web.xml file contain tags <load-on-startup>
and <servlet>
tag. Servlet tag keeps information of Servlet class. When tomcat starts, all Servlet loads in web container and init method of Servlet loaded first. Any java statement in init method
of Servlet can be executed on running tomcat startup batch or shell.
In init method we can define our scripts which have to be executed e.g. sending emails, sending newsletters, starting scheduler, etc..
Below is a simple trick to run your java program automatically on Tomcat Startup.
Step-1
Modify Web.xml file with below information. Where CrunchifyServletExample
is a class name and crunchify.com.tutorials
is a package name.
Modify these values as per your need.
<
servlet
>
<
servlet
-
name
>
CrunchifyTutorials
<
/
servlet
-
name
>
<
servlet
-
class
>
crunchify
.
com
.
tutorials
.
CrunchifyServletExample
<
/
servlet
-
class
>
<
load
-
on
-
startup
>
1
<
/
load
-
on
-
startup
>
<
/
servlet
>
|
This is my complete web.xml
file
<?
xml
version
=
"1.0"
encoding
=
"UTF-8"
?>
<
web
-
app
xmlns
:
xsi
=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns
=
"http://java.sun.com/xml/ns/javaee"
xmlns
:
web
=
"http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi
:
schemaLocation
=
"http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version
=
"3.0"
>
<
display
-
name
>
CrunchifyTutorials
<
/
display
-
name
>
<
welcome
-
file
-
list
>
<
welcome
-
file
>
index
.
html
<
/
welcome
-
file
>
<
welcome
-
file
>
index
.
htm
<
/
welcome
-
file
>
<
welcome
-
file
>
index
.
jsp
<
/
welcome
-
file
>
<
welcome
-
file
>
default
.
html
<
/
welcome
-
file
>
<
welcome
-
file
>
default
.
htm
<
/
welcome
-
file
>
<
welcome
-
file
>
default
.
jsp
<
/
welcome
-
file
>
<
/
welcome
-
file
-
list
>
<
servlet
>
<
servlet
-
name
>
CrunchifyTutorials
<
/
servlet
-
name
>
<
servlet
-
class
>
crunchify
.
com
.
tutorials
.
CrunchifyServletExample
<
/
servlet
-
class
>
<
load
-
on
-
startup
>
1
<
/
load
-
on
-
startup
>
<
/
servlet
>
<
/
web
-
app
>
|
Step-2
package
crunchify
.
com
.
tutorials
;
import
javax
.
servlet
.
*
;
import
javax
.
servlet
.
http
.
HttpServlet
;
/**
* @author Crunchify.com
*/
@SuppressWarnings
(
"serial"
)
public
class
CrunchifyServletExample
extends
HttpServlet
{
public
void
init
(
)
throws
ServletException
{
System
.
out
.
println
(
"----------"
)
;
System
.
out
.
println
(
"---------- CrunchifyServletExample Initialized successfully ----------"
)
;
System
.
out
.
println
(
"----------"
)
;
}
}
|
Step-3
Now Clean your project using Maven or Project Menu
-> Clean
Step-4
- Deploy your project to Tomcat
- Start Tomcat
- Check your
system out logs
and you should see output like this
--
--
--
--
--
--
--
--
--
--
CrunchifyServletExample
Initialized
successfully
--
--
--
--
--
--
--
--
--
--
|
Enjoy and Happy Coding..