Execute JSP at Tomcat Startup



请注意,我不是这个应用程序的开发人员,我意识到可能有更好的方法来实现它。 但是,我被赋予了以下目标:

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

下面是网址的示例:

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

在我的网络中.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>

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

看看 JSP。也许它在引擎盖下使用Java Bean来做一些处理。如果可以将此处理移出到上下文侦听器,则可以:

在您的网络中.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。

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

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

虽然有许多技术原因不这样做,但它满足了所提供的业务需求。

最新更新