WebLogic配置连接池(通过mbean)

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情

WebLogic配置连接池(通过mbean)

有关WebLogic配置连接池比较好的解决方案

一般配置weblgoic连接池(或DataSource)都是通过weblogic console界面来配置,通常情况下,因为很多原因,比如类的加载,driver的错误,url的错误,以及其他属性不正确等等原因,而造成配置抛出mbean的异常信息。

这类问题,在本论坛上出现了很多次,而精华区也有介绍。但是依然不断的出现。一方面是这个问题确实很容易出现,一方面就应该从我们自身找找原因了。

配置weblogic connection pool or datasource未必只可以通过console界面。
接下来,给大家一个比较可行的方式。这种方式在weblogic6,7系列内都是非常好用的,对于weblogic8.1,我想也应该可以。
方法:就是手工通过coding操作,weblogic.management.configuration.JDBCConnectionPoolMBean或者 weblogic.management.configuration.JDBCDataSourceMBeanl类。

可能有些人会说这样写代码不是更复杂,麻烦吗?
那么,可以让这个麻烦只出现一次,也是值得的。
我就用Swing写了一个GUI界面,整合了一些配置信息(结构有些复杂,但是比较容易操作,比直接通过console要方便。主要当时为公司项目写的,便于以后项目中操作)。
仅针对connection pool配置这一块。主要代码大致如下:

public void deployServerDataSource(){

try {
ctx = getInitialContext();
if(ctx!=null){
this.txtareaDeployStatus.append(/r/n+_INFO : 连接服务器,并登陆成功);
this.txtareaDeployStatus.append(/r/n+_INFO : 获取管理对象);
//getting the Administration MBeanHome
mbeanHome = (MBeanHome)ctx.lookup(MBeanHome.ADMIN_JNDI_NAME);
this.txtareaDeployStatus.append(/r/n+_INFO : 获取Admin Server);
serverMBean = (ServerMBean)mbeanHome.getAdminMBean(serverName, Server);
this.txtareaDeployStatus.append(/r/n+_INFO : 获取domain);
domainName = mbeanHome.getDomainName();
}else{
this.txtareaDeployStatus.append(/r/n+_INFO : 连接服务器失败,请服务器正确启动,并且登陆正确);
return;
}
}
catch (Exception ex) {
this.txtareaDeployStatus.append(/r/n+_ERROR: 初始化管理服务器信息失败,配置终止);
return;
}

try{
this.txtareaDeployStatus.append(/r/n+_INFO : 开始配置WebLogic DataSource of RiseNet);
config();
this.txtareaDeployStatus.append(/r/n+_INFO : 配置WebLogic DataSource of RiseNet成功 );
JOptionPane.showMessageDialog(this, 配置WebLogic DataSource of RiseNet成功, null, JOptionPane.INFORMATION_MESSAGE);
}catch(Exception ex){
this.txtareaDeployStatus.append(/r/n+_ERROR: 配置WebLogic DataSource of RiseNet失败 );
JOptionPane.showMessageDialog(this, 配置WebLogic DataSource of RiseNet失败, 错误, JOptionPane.ERROR_MESSAGE);
}

//需要在配置完以后,进行一次连接测试。
try{
javax.sql.DataSource ds = null;
ds = (javax.sql.DataSource)ctx.lookup(cpDataSourceJNDIName);
java.sql.Connection c = ds.getConnection();
c.close();
}catch(Exception ex){
this.txtareaDeployStatus.append(/r/n+_ERROR: 测试失败 );
this.txtareaDeployStatus.append(/r/n+_ERROR: 请手动进行Apply一次,否则配置DataSource在服务器重新启动后失效 );
JOptionPane.showMessageDialog(this, 测试失败, 错误, JOptionPane.ERROR_MESSAGE);
}

}

public void config() throws Exception{

cpPoolName = this.txtPoolName.getText();
cpDataSourceName = this.txtDataSourceName.getText();
cpDataSourceJNDIName = this.txtDataSourceJNDIName.getText();

//将原有的连接DataSource信息删除
deleteDataSource();

try {
createDataSource();
}
catch (Exception ex) {
ex.printStackTrace();
throw ex;
}
}

public void createDataSource() throws Exception {
/**
* WebLogicObjectName的构造起的参数如下:
* java.lang.String name 名称
* java.lang.String type 类型
* java.lang.String domain 域
* java.lang.String location
* WebLogicObjectName parent 父节点
*/
/*
WebLogicObjectName pname = new WebLogicObjectName(server1, ServerRuntime, domainName,server1);
WebLogicObjectName oname = new WebLogicObjectName(cpName, JDBCConnectionPoolRuntime, domainName,server1, pname);
JDBCConnectionPoolRuntimeMBean cprmb = (JDBCConnectionPoolRuntimeMBean)mbeanHome.getMBean(oname);
*/
Vector vct = RiseNet.getDefaultDataSource();
String jdbc_user = (String)vct.get(RiseContent.HASHMAP_JDBC_USERNAME);
String jdbc_url = (String)vct.get(RiseContent.HASHMAP_JDBC_URL);
String jdbc_pass = (String)vct.get(RiseContent.HASHMAP_JDBC_PASSWROD);
String jdbc_driver = (String)vct.get(RiseContent.HASHMAP_JDBC_DRIVER_NAME);
String t_Properties = (String)vct.get(RiseContent.HASHMAP_JDBC_PROPERTIES);
t_Properties = ConfigUtil.convertEnter(t_Properties);
Properties pros = new Properties();
pros.put(user, jdbc_user);

String[] t_PropertiesArr = null;
if(!(t_Properties==null || t_Properties.equals())){
t_PropertiesArr = StrUtil.separateDateStr(t_Properties,;);
}
if(t_PropertiesArr!=null && t_PropertiesArr.length>0){
for(int i=0;i<t_PropertiesArr.length;i++){
String[] tmpArr = StrUtil.separateDateStr(t_PropertiesArr[i],=);
pros.put(tmpArr[0],tmpArr[1]);
}
}

// Create ConnectionPool MBean
JDBCConnectionPoolMBean cpMBean = (JDBCConnectionPoolMBean)mbeanHome.createAdminMBean(cpPoolName, JDBCConnectionPool, domainName);

cpMBean.setProperties(pros);
cpMBean.setURL(jdbc_url);
cpMBean.setDriverName(jdbc_driver);
cpMBean.setPassword(jdbc_pass);
cpMBean.setLoginDelaySeconds(1);
cpMBean.setInitialCapacity(0);
cpMBean.setMaxCapacity(5);
cpMBean.setCapacityIncrement(5);
cpMBean.setShrinkingEnabled(true);
cpMBean.setShrinkPeriodMinutes(10);
//cpMBean.setRefreshMinutes(10); //空闲10分钟后,即测试连接
//cpMBean.setTestTableName(dual);
//cpMBean.setACLName(dynapool);
cpMBean.addTarget(serverMBean);
cpMBean.setPersistenceEnabled(true);

JDBCDataSourceMBean dsMBeans = (JDBCDataSourceMBean)mbeanHome.createAdminMBean(cpDataSourceName, JDBCDataSource, domainName);
dsMBeans.setJNDIName(cpDataSourceJNDIName);
dsMBeans.setPoolName(cpPoolName);
dsMBeans.addTarget(serverMBean);
dsMBeans.setPersistenceEnabled(true);

}

请注意,直接通过程序修改,不可能很快的响应到config.xml中。当前的配置信息在weblogic console已经可以显示,但是如果不对其操作(apply),或者等待一段时间。那么所有的修改将在下一次server启动的时候不再存在。
为解决上面的情况,我在配置完后,硬性的采取了创建connection的操作(上面的代码有体现),这样可以大大提高永久性配置的可能性。
 

通过MBean server监控weblogic应用 因为最近自己一直在做一个weblogic项目监控的web工程,而苦于网上关于weblogic监控可获取属性的信息少之又少,所以自己对此做了一点小小的总结,希望看到的人能少走一些弯路。 首先,从建立Mbean server的连接说起, public class MonitorWeblogic {   public static final Logger LOG = Logger.getLo 阅读详情

相关推荐

Weblogic如何通过JMX监控JDBC资源(数据源)数据

今天一同事问到了我这个问题,由于本人对Weblogic不太了解,所以决定先尝试一下。     新建一个数据源,通过传统的Jconsole连接(需要在Weblogic启动参数中配置jmx参数,这里省略),在MBean一栏中 没有找到关于JDBC资源的监控项。 通过查找资料,发现可以通过IIOP访问,步骤如下: 1、在${WLS_HOME}/lib下面执行 java -j

shi2huang的博客 8061

weblogic10数据源(连接池)配置

weblogic配置数据源比在tomcat中配置数据源要麻烦一些,但是性能要强大得多! 1.        打开浏览器输入控制台url,进入控制台进行管理(http://82.XXX.XXX.XXX:7001/console),用户名密码输入之前配置的域用户名、密码 2.        点击“锁定并编辑”,选择:服务-数据源 3.        点击新建,选择“一般数据源”,

御前两把刀的专栏 2万+

WebLogic配置策略

WebLogic配置策略--手动和模板选项,第一部分 域含有BEA WebLogic Server实例的配置信息。它包含有关服务器、集群和机器的配置信息。域还含有关于资源,例如Java数据库连接(Java DataBase Connectivity,JDBC)、连接池JDBC数据源、连接工厂和Java消息服务(Java Message Service,JMS)队列等的配置信息。此外,域还包含

JAVA之迷 1983

利用weblogic的POOL(连接池)连接数据库 ()

利用weblogic的POOL(连接池)连接数据库 ()[@more@]利用webLOGIC的POOL(连接池)连接数据库 作者:XYZ 简单介绍 以往用Java存取数据库都是直接用JdbC连接数据库;一般的,每个数据库...

circularr9834的博客 332

WebLogic连接池配置数据库断掉后自动重连设置

转自:http://soft.zdnet.com.cn/software_zone/2007/1004/535407.shtml 进入某个连接池配置页,进入“连接“页,点击高级选项的”show“显示高级选项。 指定 "测试频率" 并启用 "测试保留的连接"、"测试创建的连接" 和 "测试释放的连接"。   测试频率(Test Frequency):  60 秒

顾传龙 7458

weblogic 连接池配置

Weblogic中访问oracle数据库的连接池可以采用三种JDBC方式进行配置 提交时间: Oct 1, 2005 2:17:05 PM  --> 引用 回复   发消息 一 在weblogic console中按如下配置 建立connection pool ,并修改startWeblogic.cmd文件1 weblogic 方式, 使用weblogic的jDriver属性 值 URL : jd

lanbery的专栏 2023

java读取weblogic的config.xml配置信息

当然喽,最主要的是首先要有weblogic.jar 包喽   public String getWLConnectedDB() {  String dbName = null;  String connectionName = "connectToMssqlPool";  //private MBeanHome localHome = null;  MBeanHome adminHome = ...

我的地盘—我做主 531

WEBLOGIC性能参数

转载至https://blog.csdn.net/abcchenxin19790311/article/details/83742938

Vic的博客 502

使用JMX监控应用程序内、外部的状况

google_ad_client = "pub-8800625213955058";/* 336x280, 创建于 07-11-21 */google_ad_slot = "0989131976";google_ad_width = 336;google_ad_height = 280;//<script type="text/java

java专栏 251

weblogic中运行kettle:登录weblogic出错,已禁用所需的MBean服务器....

这里写自定义目录标题后端出现错误信息解决方法 后端出现错误信息 java.io.IOException: Cannot bind to URL: javax.naming.NoInitialContextException: Cannot instantiate class: org.osjava.sj.SimpleContextFactory [Root exception is java.l...

6920

weblogic 理解MBean

为了完全理解WebLogic服务器如何工作,并让它表现出最佳性能,我们很有必要理解几个概念。最重要的概念都在下面的内容中谈到了。本文为第一部分。   执行线程和队列   本部分内容简单描述了Oracle WebLogic服务器的内部架构,大家可以了解到该服务器如何执行工作来满足用户请求的。当客户端向WebLogic发起请求时,响应该请求的实际工作是由叫做执行线程的Java线程执行的。用户可以使

indieinside的专栏 4420

WebLogic工作机制

WebLogic工作机制

yangkei 1256

Weblogic 脚本工具 导航和编辑 MBean

导航和编辑 MBean 以下部分描述了如何使用 WLST 来导航、询问和编辑 MBean: 导航和询问 MBean浏览运行时 MBeanMBean 层次中导航查找 MBean访问自定义 MBean编辑配置 MBean   导航和询问 MBean WLST 提供了对 MBean 的简化访问。而 weblogic.Admin 实用工具(不赞成在此版本 WebLogic

Fred Lee的程序人生 1652

weblogic console不能登陆 报错 已禁用所需要的MBean服务器,这将阻止weblogic管理控制台的正常操作

weblogic console不能登陆 console页面报错“已禁用所需的Mbean服务器,这将阻止weblogic管理控制台的正常操作,请在该域的配置中启用DomainRuntimeMBean服务器和Edit MBean服务器 ”,并且日志报错入下: <2020-6-5 上午2时58分07秒 CST> <Error> <Console> <BEA-240003> <Administration Console encountered the f

东方神龙马的博客 1887

使用 JMX 访问 WebLogic Server MBean

 http://edocs.weblogicfans.net/wls/docs92/jmx/accessWLS.html  JMX 访问 WebLogic Server MBean  ,这个听不容易找的,呵呵,大家看看吧  使用 JMX 访问 WebLogic Server MBean 下列部分描述如何从 JMX 客户端访问 WebLogic Server MBean

HI,我是小瑞! 3983

weblogic控制台报错:已禁用所需的Mbean服务器,这将阻止weblogic管理控制台的正常操作

有套应用环境,weblogic控制台端口号是7010,浏览器登录后报错: 已禁用所需的Mbean服务器,这将阻止weblogic管理控制台的正常操作 请在该域的配置中启用DomainRuntimeMBean服务器和Edit MBean服务器 由于自身对weblogic也不熟悉,看报错的意思,下意识觉得是不是哪个地方禁用了这个什么MBean,鼓弄了半天也没搞定。 通常weblogic控制台都...

killvoon的专栏 2805

Weblogic常用监控指标以及监控工具小结

Weblogic常用监控指标 JMSRuntime JMSServersCurrentCount 返回当前JMS服务的连接数 ConnectionsCurrentCount 返回本JMS服务器上当前的连接数 JMSServersHighCount 返回自服务器启动后JMS服务的最大连接数 ConnectionsHighCount 返回本JMS服务器自上次重置后的最大连接数

hualusiyu的专栏 1万+
上一篇: Struts标签+javascript的省市连动
下一篇: 关于tomcat连接池的配置
zh029t
博客等级 码龄21年 1粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值