0

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

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

这是 URL 的示例:

http://www.myurl.com/app/getlistdata.jsp?param1=P1¶m2=P2¶m3=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>
4

2 回答 2

2

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

看看 JSP。也许它在底层使用了一个 Java Bean 来进行一些处理。如果您可以将此处理移到上下文侦听器中,那将起作用:

在您的 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。

于 2013-10-28T16:00:50.970 回答
0

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

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

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

于 2013-11-04T16:13:11.013 回答