请注意,我不是这个应用程序的开发人员,我意识到可能有更好的方法来实现它。 但是,我被赋予了以下目标:
当 tomcat 在 RHEL 服务器上启动时,我需要自动执行 jsp 页面。 唯一的问题是需要传递三个 URL 参数。
下面是网址的示例:
http://www.myurl.com/app/getlistdata.jsp?param1=P1¶m2=P2¶m3=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
虽然有许多技术原因不这样做,但它满足了所提供的业务需求。