以下是一个增加了JMX支持的Mina Echo Server.

package org.apache.mina.echoServer;

import java.lang.management.ManagementFactory;

import java.net.InetSocketAddress;

import javax.management.MBeanServer;

import javax.management.ObjectName;

import org.apache.mina.transport.socket.SocketAcceptor;

import org.apache.mina.transport.socket.nio.NioSocketAcceptor;

import org.apache.mina.integration.jmx.IoServiceMBean;

public class Main {
public static void main(String[] args) throws Exception {
SocketAcceptor acceptor = new NioSocketAcceptor();
acceptor.setHandler(new EchoProtocolHandler());
acceptor.bind(new InetSocketAddress(PORT));
System.out.println("Listening on port " + 8293);
MBeanServer mBeanServer = ManagementFactory.getPlatformMBeanServer();
IoServiceMBean acceptorMBean = new IoServiceMBean(acceptor);
ObjectName acceptorName = new ObjectName(acceptor.getClass().getPackage().getName()
+ ":type=acceptor,name=" + acceptor.getClass().getSimpleName());
mBeanServer.registerMBean(acceptorMBean, acceptorName);
}
}

package org.apache.mina.echoServer;

import org.apache.mina.core.buffer.IoBuffer;

import org.apache.mina.core.service.IoHandlerAdapter;

import org.apache.mina.core.session.IdleStatus;

import org.apache.mina.core.session.IoSession;

import org.apache.mina.filter.ssl.SslFilter;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

public class EchoProtocolHandler extends IoHandlerAdapter {
private static final Logger LOGGER = LoggerFactory.getLogger(EchoProtocolHandler.class);
@Override
public void exceptionCaught(IoSession session, Throwable cause) {
session.close(true);
}
@Override
public void messageReceived(IoSession session, Object message) throws Exception {
LOGGER.info("Received : " + message);
session.write(((IoBuffer) message).duplicate());
}
}

ivy.xml:

启动服务是需要加VM参数-Dcom.sun.management.jmxremote:

命令行启动:java -Dcom.sun.management.jmxremote -classpath org.apache.mina.echoServer.Main

Eclipse中启动:Run->Debug configuration中,Name: Main , VM arguments: -Dcom.sun.management.jmxremote

启动JConsole,连接org.apache.mina.echoServer.Main;

进入Main的监控窗口后MBean->操作,可以手工运行acceptor的方法,例如点击Dispose,会关闭acceptor。

最新文章

  1. 给Excel2013添加WebADI的Oracle加载项
  2. React Native 红屏之Could not connect to development server.
  3. 【Java EE 学习 48】【Hibernate学习第五天】【抓取策略】【二级缓存】【HQL】
  4. 一文彻底了解join的各种用法
  5. Linux系统改变ls文件和文件夹颜色方法
  6. go文件操作大全
  7. ABAP WRITE、WRITE TO、FORMAT语句
  8. HDU 1224 Free DIY Tour
  9. (从终端看linux-2)浅析terminal创建时ptmx和pts关系
  10. MSSQL存储过程(好久的笔记,翻出来怀念下)
  11. Linux sz rz
  12. mysql 查询随机一条记录
  13. Swift - 九宫格图片缩放总结样例
  14. Linux查看硬盘使用时间等信息
  15. Nancy 框架
  16. Hadoop(一)Centos7虚拟机网络配置
  17. python3加密解密模块 cryptography
  18. 线段树 (区间查询最大 区间求和 区间加)带lazy
  19. 五、Redis持久化配置
  20. bootstrap-datepicker简单使用

热门文章

  1. jquery 选择器 模糊匹配
  2. IE浏览器 AjaxForm文件上传错误:Stream ended unexpectedly
  3. Gym 101334D 记忆化dp
  4. js实现返回顶部按钮
  5. Nginx:Nginx配置文件详解
  6. java封装继承以及多态(含代码)
  7. python08篇 发邮件和异常处理
  8. 自动化测试 如何快速提取Json数据
  9. c语言:sprintf() 数字转字符赋值给数组
  10. C语言:预处理命令总结