如何通过连接池名字去获取其中的可用连接

黑暗浪子 2015-01-09 01:14:14
项目是一个集群环境,有一个简单的小应用(仅仅是基于struts2的,没有其他框架),目前这个应用与数据库交互的方式是:
public final class Server {
private ConnectionFactory factory = null;
private static Server svr = new Server();
private Server() {
}
public static Server getInstance() {
return svr;
}
public synchronized ConnectionFactory getConnFactory() {
if (factory == null) {
try {
MiniProperties ppt = new MiniProperties();
ppt.load(Server.class.getResourceAsStream("/jdbc.properties"));
factory = new PoolConnectionFactory("test", ppt);
} catch (Exception e) {
throw new RuntimeException("jdbc配置文件读取失败!");
}
}
return factory;
}
public static void closeResource(Connection conn, Statement stmt,
ResultSet rs) {
if (rs != null) {
try {
rs.close();
} catch (Exception e) {
}
}
if (stmt != null) {
try {
stmt.close();
} catch (Exception e) {
}
}
if (conn != null) {
try {
conn.close();
} catch (Exception e) {
}
}
}
}

配置文件jdbc.properties在这里省略,url,驱动,用户名密码等等都没问题的
通过上述的方式,这个应用可以建立与数据库A连接,很正常的,那么问题来了,
现在的应用服务器(国产中创应用服务器)本身配置了连接池,指向的就是数据库A,那么我如何在我的这个应用程序里面去使用这个现有的连接池呢?而不是通过上述的这种方式,听说可以利用连接池的名字去获取对应连接池中的有效连接,请大侠们指教指教吧!
分数不够了,请谅解!
...全文
151 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
猿人林克 2015-01-09
  • 打赏
  • 举报
回复
另外,既然你们花钱用的国产的东西,可以直接找技术支持,方便快捷,分分钟搞定。
猿人林克 2015-01-09
  • 打赏
  • 举报
回复
引用 6 楼 ooppookid 的回复:
[quote=引用 5 楼 u012453619 的回复:] [quote=引用 2 楼 ooppookid 的回复:] 你把你连接池的配置截图给我,看看他的信息,如果用的jndi那就按我说的做,如果不是我再看看
连接池的配置,这个国产服务器,我么都是直接在服务器给定的内部web站点直接配置(图形界面的),我仅仅是配置了url,用户名,密码,连接池名字,以及其他的最佳连接数,最大空闲连接之类的,没有别的了,我只有去内网才能看到配置,暂时先这样描述一下吧[/quote] 找一个叫jndiName类似这种名字,然后按我上述方法试一下,看看能不能连,调试一下ct.lookup("jdbc/myOracle"),看看能不能获取到东西。 jndi是jdk自带,不用特别去下。你先试试[/quote] 这个名字也是你自己写的,就是个字符串,肯定是必填项
猿人林克 2015-01-09
  • 打赏
  • 举报
回复
引用 5 楼 u012453619 的回复:
[quote=引用 2 楼 ooppookid 的回复:] 你把你连接池的配置截图给我,看看他的信息,如果用的jndi那就按我说的做,如果不是我再看看
连接池的配置,这个国产服务器,我么都是直接在服务器给定的内部web站点直接配置(图形界面的),我仅仅是配置了url,用户名,密码,连接池名字,以及其他的最佳连接数,最大空闲连接之类的,没有别的了,我只有去内网才能看到配置,暂时先这样描述一下吧[/quote] 找一个叫jndiName类似这种名字,然后按我上述方法试一下,看看能不能连,调试一下ct.lookup("jdbc/myOracle"),看看能不能获取到东西。 jndi是jdk自带,不用特别去下。你先试试
黑暗浪子 2015-01-09
  • 打赏
  • 举报
回复
引用 2 楼 ooppookid 的回复:
你把你连接池的配置截图给我,看看他的信息,如果用的jndi那就按我说的做,如果不是我再看看
连接池的配置,这个国产服务器,我么都是直接在服务器给定的内部web站点直接配置(图形界面的),我仅仅是配置了url,用户名,密码,连接池名字,以及其他的最佳连接数,最大空闲连接之类的,没有别的了,我只有去内网才能看到配置,暂时先这样描述一下吧
黑暗浪子 2015-01-09
  • 打赏
  • 举报
回复
引用 1 楼 ooppookid 的回复:
通过jndi连,一般这种引用服务器都是jndi,比如weblogic,我没用过你说的这个国产的东西,应该一样。
 Context ct = new InitialContext() ;   
        DataSource ds = (DataSource) ct.lookup("jdbc/myOracle") ;   //这里写你配置的jdbc/oracle名字
       Connection  conn = ds.getConnection() ;  
        if(conn!=null){ 
     ...
       } 
使用服务器的jndi需要导入包不?
qzw1210 2015-01-09
  • 打赏
  • 举报
回复
通过name,遍历。
猿人林克 2015-01-09
  • 打赏
  • 举报
回复
你把你连接池的配置截图给我,看看他的信息,如果用的jndi那就按我说的做,如果不是我再看看
猿人林克 2015-01-09
  • 打赏
  • 举报
回复
通过jndi连,一般这种引用服务器都是jndi,比如weblogic,我没用过你说的这个国产的东西,应该一样。
 Context ct = new InitialContext() ;   
        DataSource ds = (DataSource) ct.lookup("jdbc/myOracle") ;   //这里写你配置的jdbc/oracle名字
       Connection  conn = ds.getConnection() ;  
        if(conn!=null){ 
     ...
       } 

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧