Linux + Tomcat 6 + JSP网站有一个后台服务,打包成了.jar文件,jsp要调用jar中的方法。如果把jar放在WEB-INF文件夹里,每次调用jar中的方法都要初始化(需要一些时间)如何让tomcat6启动以后,jar中的程序初始化,而jsp和这个初始化了的进程对话(类似于服务器断的服务)?

解决方案 »

  1.   

    如果把jar放在WEB-INF文件夹里,每次调用jar中的方法都要初始化(需要一些时间) 
    这句话不太对,如果是从jsp中做方法调用到jar中的类,则只有第一次调用的时候需要初始化。
    如何让tomcat6启动以后,jar中的程序初始化,而jsp和这个初始化了的进程对话(类似于服务器断的服务)?
    这个可以在ContextLister中,启动一个线程,来初始化你的jar中的服务。
      

  2.   

    jinxfel:初始化我指的是运行类的建构方法ClassName a = new ClassName();另,有没有ContextListener的帮助?我比较菜
      

  3.   


    你的意思是说,每次调用都new一个新的实例,
    如果你不想这样,用单例模式吧:public class ClassName{
       private ClassName(){};
       private ClassName instance=null;
       public static ClassName getInstance(){
           if (instance==null){
             instance=new ClassName();
             //这里做必要的初始化,只有第一次调用的时候才被执行。
           }
           return instance;
       }
    }
    以后你别
    ClassName a = new ClassName();
    而是
    ClassName a = ClassName.getInstance();
    ---------------
    至于ContenxtListenr
    应该很容易在网上搜到。
      

  4.   


    这个在一个页面中可行,但是两个用户访问这个jsp页的时候要分别实例化对不对?
      

  5.   


    当然不对,单例就能保证你tomcat不重启,则只会初始化一次。不信简单测试一下就可以了:在class的构造方法打一句话,你可以在jsp中任意调用,看是不是只打印一次。