各位,大家好!
刚刚学java,有一个简单的问题请教一下大家。
我在eclipse中用XFire创建了一个Webservice工程,每次收到请求后从数据库读取相关数据返回(我是在相应的类上创建一个成员变量来存储数据库连接)。
调试的时候发现当频繁调用时,会因资源消耗导致连接失败。所以我想把这个成员变量设置成全局变量,这样一旦应用启动,先创建数据库连接,然后收到请求后只要访问这个全局变量即可获得数据库连接。
但是不知道如何创建这个全局变量,同时怎么才能让tomcat启动时就给这个全局变量赋值?
刚刚学java,有一个简单的问题请教一下大家。
我在eclipse中用XFire创建了一个Webservice工程,每次收到请求后从数据库读取相关数据返回(我是在相应的类上创建一个成员变量来存储数据库连接)。
调试的时候发现当频繁调用时,会因资源消耗导致连接失败。所以我想把这个成员变量设置成全局变量,这样一旦应用启动,先创建数据库连接,然后收到请求后只要访问这个全局变量即可获得数据库连接。
但是不知道如何创建这个全局变量,同时怎么才能让tomcat启动时就给这个全局变量赋值?
这个很简单
两种方式:
1. 在tomcat的bin目录下面的catalina.bat或catalina.sh(linux),文件中设置一个tomcat启动时的全局变量,然后在程序中,可以直接通过System.getProperty("参数名")读取,tomcat关闭,则该参数值销毁。
2. 可以在web.xml中设置一个启动参数作为全局变量启动时支持配置参数。
3. 可以在项目启动时开一个监听程序执行某个类【类中对某全局变量赋值】
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!");
}
}
}两种任选其一都可以实现
另外推荐楼主用开源的 数据库连接池 比如 c3p0 dbcp等
简单、安全,使用方便...........