我需要在应用程序启动时调用Servlet,因为它包含一些应用程序初始化逻辑.
我知道我可以设置启动时加载配置,但这只会调用Servlet的init方法.我需要调用doGet方法并将一些Url参数传递给它.
Servlet的doGet方法需要ServletRequest和ServletResponse对象.
另外,由于这是集群应用程序,因此我需要确切地知道我要访问的节点(因为一个选择就是打开套接字并调用Servlet).
什么是执行此操作的最佳选择?
编辑:作为澄清,Servlet已经存在并且不能被修改.到目前为止,有人会从浏览器中手动调用Servlet.我需要使它自动化.
解决方法:
最好的选择是将doGet方法中的任何逻辑重构为可以从init和doGet调用的单独方法.
如果您确实无法重构逻辑(这确实是唯一的好选择),则可以使用一些模拟库. Google说Spring’s mock objects很受欢迎.
具有HttpServletRequest和HttpServletResponse的可用实现,使servlet加载启动时加载,并从其init方法中,从当前ServletContext中定位相关的servlet,并使用适当的请求和响应对象调用doGet. (是的,这是一个很糟糕的想法,但是您必须执行类似的操作.)
编辑:如果您不想黑客WAR文件,也许您应该检查您的servlet容器是否有可能在重新部署Web应用程序之后运行某种挂钩.