各位,大家好!
刚刚学java,有一个简单的问题请教一下大家。
我在eclipse中用XFire创建了一个Webservice工程,每次收到请求后从数据库读取相关数据返回(我是在相应的类上创建一个成员变量来存储数据库连接)。
调试的时候发现当频繁调用时,会因资源消耗导致连接失败。所以我想把这个成员变量设置成全局变量,这样一旦应用启动,先创建数据库连接,然后收到请求后只要访问这个全局变量即可获得数据库连接。
但是不知道如何创建这个全局变量,同时怎么才能让tomcat启动时就给这个全局变量赋值?

解决方案 »

  1.   


    这个很简单
    两种方式:
    1. 在tomcat的bin目录下面的catalina.bat或catalina.sh(linux),文件中设置一个tomcat启动时的全局变量,然后在程序中,可以直接通过System.getProperty("参数名")读取,tomcat关闭,则该参数值销毁。
    2. 可以在web.xml中设置一个启动参数作为全局变量启动时支持配置参数。
    3. 可以在项目启动时开一个监听程序执行某个类【类中对某全局变量赋值】
    4. 以上三种够用了 
      

  2.   

     数据库连接,看看tomcat的连接池吧,简单、安全,使用方便...........
      

  3.   

    2. 可以在web.xml中设置一个启动参数作为全局变量启动时支持配置参数。
    谢谢回复。
    可是,这个具体怎么做呢?
      

  4.   

    现在才看见你的回帖:
    首先web.xml配置全局变量的配置如下:
    我的程序给你看看
    <context-param>
    <description></description>
    <param-name>idtrust.connect.host</param-name>
    <param-value>localhost</param-value>
    </context-param>
    <context-param>
    <description></description>
    <param-name>idtrust.connect.port</param-name>
    <param-value>18445</param-value>
    </context-param>程序中获取方式:
    ServletContext ctx = ServletActionContext.getServletContext();
    idtrustHost = ctx.getInitParameter("idtrust.connect.host");
    idtrustPort = Integer.parseInt(ctx.getInitParameter("idtrust.connect.port"));再给你介绍一种:通过web.xml配置监听类,初始化全局参数
    <listener>
    <listener-class>
    com.wb.sms.protocol.sms.StartSMGPListener
    </listener-class>
    </listener>
    具体的类:
    public class StartSMGPListener implements ServletContextListener {
         public void contextDestroyed(ServletContextEvent arg0) {
    // TODO Auto-generated method stub
    log.info("destroy Sms SMGP Socket connect ..");
    }

    /**
     * 启动SMGP Socket连接
     */
    public void contextInitialized(ServletContextEvent arg0) {
    // TODO Auto-generated method stub
    log.info("initialize Sms SMGP Socket connect ..");
    try {
    (new Thread() {
    public void run() {
    try {
    String[] args=null;
    SMGPSocketServer.main(args, 0);
    } catch (Exception e) {
    e.printStackTrace();
    }
    } }).start(); } catch (Exception e) {
    log.info("Sms SMGP Socket connect error!");
    }
    }
    }两种任选其一都可以实现
      

  5.   

    楼上的可以 
     另外推荐楼主用开源的 数据库连接池 比如 c3p0 dbcp等
    简单、安全,使用方便...........