`
liufei.fir
  • 浏览: 693638 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

使用MBean获取tomcat和jboss端口

阅读更多
/**
	 * 根据协议和scheme获取服务端口号
	 * 
	 * @param protocol
	 * @param scheme
	 * @return
	 */
	protected Integer getPortByMBean(String protocol, String scheme) {
		MBeanServer mBeanServer = null;
		ArrayList<MBeanServer> mBeanServers = MBeanServerFactory.findMBeanServer(null);
		
		int serverType = 1;
		if(mBeanServers.size() > 0) {
			for (MBeanServer _mBeanServer : mBeanServers) {
				if(_mBeanServer instanceof JmxMBeanServer) {
					mBeanServer = _mBeanServer;
					break;
				} else if("jboss".equals(_mBeanServer.getDefaultDomain())) {
					mBeanServer = _mBeanServer;
					serverType = 2;
				} else {
					throw new IllegalStateException("无法识别JVM中关联的MBeanServer.");
				}
			}
		}
		if(mBeanServer == null) {
			throw new IllegalStateException("没有发现JVM中关联的MBeanServer.");
		}
		
		Set<ObjectName> objectNames = null;
		
		try {
			if(serverType == 1) {
				objectNames = mBeanServer.queryNames(new ObjectName("Catalina:type=Connector,*"), null);
			}
			else if(serverType == 2) {
				objectNames = mBeanServer.queryNames(new ObjectName("jboss.web:type=Connector,*"), null);
			}
		} catch (MalformedObjectNameException e) {
			e.printStackTrace();
		} catch (NullPointerException e) {
			e.printStackTrace();
		}
		
		if(objectNames == null || objectNames.size() <= 0) {
			throw new IllegalStateException("没有发现JVM中关联的MBeanServer : " + mBeanServer.getDefaultDomain() + " 中的对象名称.");
		}
		
		try {
			for (ObjectName objectName : objectNames) {
				Object _protocol = mBeanServer.getAttribute(objectName, "protocol");
				Object _scheme = mBeanServer.getAttribute(objectName, "scheme");
				
				if(protocol.equals(_protocol) && scheme.equals(_scheme)) {
					return (Integer) mBeanServer.getAttribute(objectName, "port");
				}
			}
		} catch (AttributeNotFoundException e) {
			e.printStackTrace();
		} catch (InstanceNotFoundException e) {
			e.printStackTrace();
		} catch (MBeanException e) {
			e.printStackTrace();
		} catch (ReflectionException e) {
			e.printStackTrace();
		}
		
		return null;
	}
分享到:
评论

相关推荐

    一台机器部署多个jboss说明

    此文件位于`$JBOSS_HOME/server/default/deploy/jbossweb-tomcat55.sar/`目录下,主要用于配置HTTP服务端口。 ```xml ${jboss.bind.address}"/&gt; ${jboss.bind.address}"/&gt; ``` 需要注意的是,上述示例中的`8080...

    jboss 下载(httpwww.jboss.org)

    1. MBean 服务器:作为 JBoss 的核心,管理和控制应用程序组件。 2. EJB 容器:处理 EJB 的生命周期管理和事务管理。 3. JNDI(Java Naming and Directory Interface):提供对象的命名和查找服务。 4. JMS(Java ...

    JBossAS中文官方文档

    - **数据库配置**: 包括如何启用HSQL MBean和TCP/IP连接、创建数据库模式以及使用HSQL数据库管理工具。 - **部署步骤**: 如何将构建好的应用部署到JBoss服务器上,并确保正确配置JNDI信息等。 ##### 4. 安全性配置 ...

    Apache2.2.16+ mod_jk +Jboss4.2.3.GA集群

    这一步骤与配置 Tomcat 类似,主要涉及 `JBOSS_HOME` 变量的设置。 - 在系统变量下新建 `JBOSS_HOME`,路径指向 JBoss 的安装目录。 - 在 `PATH` 变量中添加 `%JBOSS_HOME%\bin`(注意前面要有分号“;”)。 #### ...

    Tomcat学习

    通过conf/tomcat-users.xml配置用户和角色,使用Realm进行身份验证,比如MemoryRealm或JDBCRealm。 4.2 SSL/TLS支持 配置SSL Connector来实现HTTPS通信,提供安全的Web服务。 4.3 防火墙和安全策略 设置防火墙规则...

    jconsole使用手册

    2. 启动Tomcat或JBoss服务器,使用jconsole连接到远程服务器,输入主机名或IP地址、端口号等信息。 3. 使用jconsole的图形化界面实时监控服务器的运行情况。 jconsole的优点包括: 1. 实时监控服务器的运行情况,...

    zabbix监控系统 PDF 下载

    Zabbix可以通过JMX连接到Java应用服务器,如Tomcat、JBoss等,获取内存使用、线程状态、Garbage Collection等关键信息。 在Java环境中,集成Zabbix监控通常包括以下步骤: 1. **启用JMX**:在Java应用服务器的启动...

    利用Java内置的API开发JMX功能

    而且,由于JMX是标准规范,很多工具和框架(如Tomcat、WebLogic、JBoss)都支持JMX,这意味着你可以使用通用的管理工具来管理采用JMX的应用,而无需为每个应用程序单独开发管理界面。 总的来说,JMX为复杂的Java...

Global site tag (gtag.js) - Google Analytics