我必须在服务器启动时而不是在第一个请求时执行 struts2 操作。

请您参考如下方法:

在应用程序启动时加载数据是一项常见任务,您可以在网络上找到几个示例。如其他答案所述,您应该实现一个 ServletContextListener(不是特定于 Struts2 的)...您可以 read a great example here .

这里重要的是理解 Action 的概念:

Struts2 MVC ( Model View Controller )框架,一个 ActionController (以及 Model 的一部分)。

ActionRequest 调用来自 Client s(每个请求都会创建一个 Action,因此它们是线程安全的)。

这意味着你需要一个客户端,通常意味着一个人在电脑前,点击浏览器......然后,客户端调用不是执行自动化的正确触发器,对共享对象的服务器端操作。

当然你可以实现某种形式的 lazy-initialitazion (例如,在自定义拦截器的帮助下),以便第一个用户可以在应用程序范围内设置一些东西,其他用户可以检索已经填充的对象,但这不是最好的方法(你应该在初始化时处理并发,您将有一个用户,第一个,等待服务器可能在晚上启动时完成的操作...)。


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!