使用jmx对weblogic进行动态的配置(源代码)

使用jmx对weblogic进行动态的配置(源代码),第1张

对weblogic进行配置一般是通过console控制台来进行配置的 但有的时候 需要自己在程序中需要进行动态的配置 比如增加队列 显示队列 或者配置数据源 改写写config xml 是可以达到动态配置的效果的 但bea不推荐这样做 而且这样做需要重新启动服务器 怎么样既动态的配置 又不重新启动服务器呢?笔者查询了weblogic的网站 了解到有两种方法动态的配置( )可以使用weblogic Admin命令(文档地址 ) ( )使用weblogic是用jmx编程来进行管理 通过jmx来对weblogic中的组件进行动态的配置 jmx的文档地址 如果使用这种方法 要将weblogic jar配置到CLASSPATH环境变量中(因为weblogic的jmx类是放在weblogic jar中的)本人写了一份代码 对Queue进行管理 包括JMSQueue的增加 删除 和显示 我的config xml文件如下 <JMSServer Name= MessageCenterServer Store= MyJmsSave Targets= myserver TemporaryTemplate= MyJMSTemplate ><JMSQueue CreationTime= JNDIName= CenterQueue Name= CenterQueue Template= MyJMSTemplate /><JMSQueue CreationTime= JNDIName= que Name= que Template= MyJMSTemplate /><JMSQueue CreationTime= JNDIName= que Name= que Template= MyJMSTemplate /><JMSQueue CreationTime= JNDIName= queue Name= queue /></JMSServer>代码如下 package messagecenter;/ <p>Title: 消息中心</p> <p>Description: 对消息队列进行维护</p> @author 张荣斌 @version /import java util ;import java util regex Pattern;import javax naming Context;import weblogic jndi Environment;import weblogic management MBeanHome;import weblogic management runtime ServletRuntimeMBean;import weblogic management runtime ApplicationRuntimeMBean;import weblogic management runtime WebAppComponentRuntimeMBean;import weblogic management runtime ComponentRuntimeMBean;import weblogic jms extensions ;import weblogic management RemoteMBeanServer;import javax management ObjectName;import javax management QueryExp;public class JMSQueueMaintain {public static final String WEBLOGIC_URL = t ://localhost: ;public static final String WEBLOGIC_USER= system ;public static final String WEBLOGIC_PASSWORD = ;public static final String WEBLOGIC_JMSSERVER = MessageCenterServer ; //JMS服务器的名字 可以看到我的config xml<JMSServerName= MessageCenterServer Store= MyJmsSave 这一行public JMSQueueMaintain() {}/ 得到initial context/private static Context getCtx(String url String username String password) throws Exception{Environment env = new Environment();env setProviderUrl(url);env setSecurityPrincipal(username);env setSecurityCredentials(password);return env getInitialContext();}/ 得到the Admin MBean Home/private static MBeanHome getMBeanHome(String url String username String password) throws Exception{return (MBeanHome) getCtx(url username password) lookup(MBeanHome ADMIN_JNDI_NAME);}/ 增加队列/public static void addQueue(String queuename) throws Exception{Context ctx = getCtx(WEBLOGIC_URL WEBLOGIC_USER WEBLOGIC_PASSWORD);JMSHelper createPermanentQueueAsync(ctx WEBLOGIC_JMSSERVER queuename queuename);}/ 删除队列/public static void deleteQueue(String queuename) throws Exception{Context ctx = getCtx(WEBLOGIC_URL WEBLOGIC_USER WEBLOGIC_PASSWORD);JMSHelper deletePermanentQueue(ctx WEBLOGIC_JMSSERVER queuename);}/ 得到所有的队列名/public static Vector getQueuenames() throws Exception{Vector vect = new Vector();MBeanHome home = getMBeanHome(WEBLOGIC_URL WEBLOGIC_USER WEBLOGIC_PASSWORD);RemoteMBeanServer homeServer = null;QueryExp query = null;homeServer = home getMBeanServer();Set JMSMBeans = homeServer queryNames(new ObjectName( mydomain:JMSServer= +WEBLOGIC_JMSSERVER+ Type=JMSQueue ) query);//where query could be any object that implements the JMX//javax managementQueryExpfor (Iterator itr = erator(); itr hasNext(); ) {ObjectName mbean = (ObjectName)itr next();if(!mbean getKeyProperty( Name ) equals( CenterQueue )){vect addElement(mbean getKeyProperty( Name ));}}return vect;}public static void main(String[] args) {JMSQueueMaintain JMSQueueMaintain = new JMSQueueMaintain();try{System out println(JMSQueueMaintain getQueuenames());JMSQueueMaintain addQueue( queue );JMSQueueMaintain deleteQueue( queue );System out println(JMSQueueMaintain getQueuenames());}catch(Exception e){}}} lishixinzhi/Article/program/Java/ky/201311/28614

以前有从weblogic81向tomcat55转程序的经历,我猜可能是你访问jndi的方式没有变吧,两个在访问数据源上有一小点差别:

比如在weblogic中创建数据源名为xx的对象用:

DataSource dataSource = (DataSource)ctxlookup("xx");

而tomcat下面就换成:DataSource dataSource = (DataSource) ctxlookup("java:comp/env/xx");

weblogic连接池如何判断数据源异常,配置连接池通过IP/console进入管理控制台(如果不知道用户名和密码可以通过以下方式进入:右击StartWebLogicsh快捷方式,选择“编辑”,在文本中可以找到用户名和密码)

在左侧菜单中依次进入mydomain(自定义的域名称)-服务-JDBC-连接缓冲池

点击“配置新的JDBC Connection Pool ”

数据类型选择:Oracle

数据库驱动程序选择:Oracle's Driver (Thin) Version:901,020,10

点击右下角的“继续”

在名称中写入想要设置的连接池名称如myConnection

数据库名称:要访问的数据库名称

主机名:写入数据库服务器的主机名称或IP地址

端口号默认为:1521

数据库用户名称、密码

点击“继续”

在下一页中点击“测试驱动程序配置”显示“连接成功”

点击“创建和部署”

在新页面的列表中出现mpConnection的配置项

连接池配置完毕

2、配置JDBC数据源

在管理控制台左侧菜单中依次进入mydomain(自定义的域名称)-服务-JDBC-数据源

点击“配置新的JDBC Data Source”

在名称中写入要配置的数据源名称myConnection

在JNDI名称中写入访问的名字pc/ora9)

点击“继续”

JNDI(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API。命名服务将名称和对象联系起来,使得我们可以用名称访问对象。

以上就是关于使用jmx对weblogic进行动态的配置(源代码)全部的内容,包括:使用jmx对weblogic进行动态的配置(源代码)、weblogic8.1、weblogic连接池如何判断数据源异常等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/10179192.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存