在Tomcat Startup上执行JSP

时间:2013-10-28 15:30:37

标签: java jsp tomcat rhel

请注意,我不是此应用的开发者,我意识到可能有更好的方法来实现它。但是,我有以下目标:

当tomcat在RHEL服务器上启动时,我需要自动执行jsp页面。唯一的标志是它们是需要传递的三个URL参数。

以下是网址的示例:

http://www.myurl.com/app/getlistdata.jsp?param1=P1&param2=P2&param3=P3

在我的web.xml中,我有以下内容,但它似乎没有自动加载。我想我可以修改start_tomcat脚本以包含一个wget,但我希望将它独立于它所部署的服务器。

<servlet>
    <servlet-name>getlistdata</servlet-name>
    <jsp-file>/getlistdata.jsp</jsp-file>
        <init-param>
            <param-name>param1</param-name>
            <param-value>P1</param-value>
        </init-param>
        <init-param>
            <param-name>param2</param-name>
            <param-value>P2</param-value>
        </init-param>
        <init-param>
            <param-name>param3</param-name>
            <param-value>P3</param-value>
        </init-param>
    <load-on-startup>3</load-on-startup>
</servlet>

2 个答案:

答案 0 :(得分:2)

正如@home所说 - Init属性不是请求参数 - 所以你的意思是什么? JSP用于将视图呈现给浏览器,作为对请求的响应。在Tomcat启动时执行此操作毫无意义,因为没有请求。

看看JSP。也许它使用Java Bean来进行一些处理。如果您可以将此处理移动到Context Listener,那将起作用:

在你的web.xml中:

<listener>
  <listener-class>
    path.to.YourListener
  </listener-class>
</listener>

然后创建一个java类:

public class YourListener implements ServletContextListener {

  public void contextInitialized(ServletContextEvent event) {
    // this will execute when tomcat initialized the web application (on startup)
    // so whatever your JSP was doing, you can do in here instead.
  }
}

不是你要求的,但这是你能做的最接近的,AFAIK。

答案 1 :(得分:0)

使用的解决方案是向startup_tomcat脚本添加curl命令。

URL="http://SOMEURL.COM/GOES/HERE"
nohup curl $URL >> /home/tomcat/log &
exit

虽然有许多技术原因没有这样做,但它符合提供的业务要求。