import javax.jms.Connection;
import javax.jms.JMSException;
import org.apache.activemq.ActiveMQConnection;
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.activemq.jms.pool.PooledConnectionFactory;
/**
* 内部类的方式实现对connection的单例获取
*/
public class JMSConnectionUtill {
private PooledConnectionFactory pooledConnectionFactory = null;
private static class CreateConnUtil{
private static JMSConnectionUtill instance = new JMSConnectionUtill();
}
private JMSConnectionUtill (){
// ConnectionFactory :连接工厂,JMS 用它创建连接
ActiveMQConnectionFactory connectionFactory = null;
// 构造ConnectionFactory实例对象,此处采用ActiveMq的实现jar
connectionFactory = new ActiveMQConnectionFactory(
ActiveMQConnection.DEFAULT_USER,
ActiveMQConnection.DEFAULT_PASSWORD, "tcp://localhost:61616");
pooledConnectionFactory = new PooledConnectionFactory();
pooledConnectionFactory.setConnectionFactory(connectionFactory);
//设置最大连接数
pooledConnectionFactory.setMaxConnections(200);
//设置最小
pooledConnectionFactory.setMaximumActiveSessionPerConnection(50);
//后台对象清理时,休眠时间超过了3000毫秒的对象为过期
pooledConnectionFactory.setTimeBetweenExpirationCheckMillis(3000);
}
//获取链接
public Connection getConnection(){
Connection connection = null;
try {
connection = pooledConnectionFactory.createConnection();
} catch (JMSException e) {
e.printStackTrace();
}
return connection;
}
public static final JMSConnectionUtill getInstance(){
return CreateConnUtil.instance;
}
}
我所想问的是,我通过内部类获取PooledConnectionFactory的单例,每次获取连接从这里面获取,避免每次都创建新的连接而消耗大量的资源,但是这样写有没有问题,单就这个获取连接的工具类,有没有不恰当的地方,或者说这样做跟直接创建连接的效果是一直的,另外,求一份关于这方面的优化方案(经过实际检验的),在线等