关于网友提出的“ Tomcat启动时自动执行jar,或者main 怎么弄啊”问题疑问,本网通过在网上对“ Tomcat启动时自动执行jar,或者main 怎么弄啊”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: Tomcat启动时自动执行jar,或者main 怎么弄啊描述:
我想让Tomcat启动的时候执行一个jar文件,这个一个小的独立的程序,
或者能执行main方法也行,也能达到效果
再或者用jsp页面执行一个jar文件也可以··不知道这样行不行··
高手指点一二··
解决方案1:
web.xml中加入
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class SerialPortListener implements ServletContextListener {
private Log log = LogFactory.getLog(SerialPortListener.class);
public void contextInitialized(ServletContextEvent arg0) {
if (ResetDatabase.checkDBExist()){
int eqListSize = CommonDataUnit.getEquiList().size();
if (eqListSize > 0){
// 波特率
int baudRateNo = Integer.parseInt(CommonDataUnit.getSysArgsByKey(BeanForSysArgs.BAUDRATE_NUMBER));
// 刷新时间( 单位为秒)
int flashTime = Integer.parseInt(CommonDataUnit.getSysArgsByKey(BeanForSysArgs.DATA_FLASHTIME));
// 3: 测试串口是否可用
Level_First_Serial first_Level = Level_First_Serial.getInstance();
if (first_Level.initForTempHumi(baudRateNo, flashTime) == 1){
log.info("程序启动串口正常...");
first_Level.beginTask(); // 开始运行串口
}else{
log.info("程序无法启动串口.原因:无法连接串口...");
}
}else{
log.info("程序无法启动串口.原因:没有发现仪器列表...");
}
}
}
public void contextDestroyed(ServletContextEvent arg0) {
if (ResetDatabase.checkDBExist()){
Level_First_Serial.getInstance().endTask();
Level_First_Serial.getInstance().clearBarData();
log.info("程序已经关闭串口连接...");
}
}
}
恩,用监听器。我用的就是这个。
解决方案4:同意4楼
解决方案5:写个监听器就好了,容器启动的时候就执行
解决方案6:放到WEB。XML加载吧。。。应该和JBOSS一样的。。
解决方案7:嗯,这样可以。
或者自己写个servlet,配置到web.xml里面让启动时执行,servlet去调用那个main 解决方案8:
跟着项目启动不行吗?
比如在servlet启动的时候定义一个init-param
类似:
然后在servlet的init方法里
用函数(好像叫getInitParameter,lz自己google一下吧)
把“package.a.b.c.OtherApp”读出来,
然后用Class.forName(),newInstance之类的方法来实例化一个类,
然后就想干什么干什么了。
good luck