如何让一段代码在 tomcat 启动时就被运行?

http://www.cnblogs.com/Payne-Wang/archive/2013/04/01/loadOnTomcatStartup.html

http://blog.csdn.net/u010523770/article/details/53635919

理论上来说,要实现 “如何让一段代码在 tomcat 启动时就被运行” 有很多种方法,我所知道的有两种: 1. 在 web.xml 里面配置为 listener ; 2. 配置为 Spring 的 bean 。今天因为有同班同学问了这个问题,所以就总结了这两种方法 o(∩_∩)o

1. 在 web.xml 里面配置为 listener

1 <listener>
2         <listener-class>com.pandaroid.uniqueonline.UniqueOnlineSessionListener</listener-class>
3 </listener>

      如上代码片段配置了一个 listener , 该 listener 中有一个 static 代码块:

复制代码
 1 public class UniqueOnlineSessionListener implements HttpSessionListener {
 2     static {
 3         System.out.println("haha static");
 4     }
 5     @Override
 6     public void sessionCreated(HttpSessionEvent arg0) {
 7         
 8     }
 9 
10     @Override
11     public void sessionDestroyed(HttpSessionEvent arg0) {
12         UniqueOnlineRecords.removeUser(arg0.getSession());
13     }
14 
15 }
复制代码

      由于定义为 listener ,所以在 tomcat 启动时就会初始化,初始化时 static 代码块会被执行,于是就达到了我们需要的效果:

      从图中可以看出在 Server 完成启动前,我们的代码就执行了,也就实现了“让一段代码在 tomcat 启动时就被运行”。

2. 配置为 Spring 的 bean

      这种方式在读某学长的代码时看到,于是学了过来。特别要注意的是:使用这种方式时,bean 的 scope 必须设为默认的 singleton 。因为只有这样,Spring 才会在应用服务器启动时为我们加载相应的 bean 。

1 <bean id="HiReportService" class="com.pandaroid.hiReport.service.HiReportServiceImpl">
2     <property name="fileUploadDiskPath" ref="fileupload.disk.path"/>
3     <property name="fileUploadHttpPath" ref="fileupload.http.path"/>
4     <property name="jasperService" ref="JasperService"/>
5 </bean>

      上面是项目中 HiReportService 的配置,为了测试,我在相应的 HiReportServiceImpl 类中加入了一段 static 代码:

1 public class HiReportServiceImpl implements HiReportService {
2     static {
3         System.out.println("Spring bean static !");
4     }
5     ...
6 }

      最终的运行结果如下:

      也是顺利实现了“让一段代码在 tomcat 启动时就被运行”。

3. 总结

      问题的关键在于:让 tomcat 启动时加载我们的类,加载了,那么必然会运行其中的 static 代码块;那么如何让我们的类在 tomcat 启动时被加载?使用上述两种方法即可 o(∩_∩)o

      如果有问题或更好的方法,欢迎留言提出和交流,谢谢 o(∩_∩)o

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在IDEA中运行Tomcat,你可以按照以下步骤进行操作: 1. 首先,确保已经安装了Apache Tomcat服务器,并且知道其安装路径。 2. 打开IDEA并创建一个新的Java Web项目。 3. 在项目结构中,选择"Project Settings"或"File" -> "Project Structure"。 4. 在左侧面板中选择"Artifacts",然后点击"+"按钮添加一个新的Artifact。 5. 选择"Web Application: Exploded",然后点击"From Module"并选择你的项目模块。 6. 在Artifact的输出路径中指定Tomcat服务器的webapps目录路径。例如,如果你的Tomcat安装路径为"/usr/local/tomcat",则输出路径可以设置为"/usr/local/tomcat/webapps/your-app-name"。 7. 点击"OK"保存Artifact配置。 8. 在IDEA的顶部菜单中选择"Run" -> "Edit Configurations"。 9. 在左侧面板中选择"Tomcat Server" -> "Local"。 10. 点击"+"按钮添加一个新的Tomcat配置。 11. 在右侧面板中,选择你的Tomcat服务器路径,并确保部署选项中选择了之前创建的Artifact。 12. 点击"OK"保存Tomcat配置。 13. 点击IDEA工具栏中的运行按钮,选择之前创建的Tomcat配置。 14. 等待一段时间,Tomcat将会启动并部署你的项目。 15. 一旦部署成功,你可以在浏览器中访问"http://localhost:8080/your-app-name"来查看你的应用程序。 这样,你就可以在IDEA中成功运行Tomcat服务器了。请确保你的项目代码和配置正确无误,并且Tomcat服务器能够正常工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值