mina在spring中的配置多个端口
本次练习中是监听2个端口
applicationContext-mina.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//spring//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd ">
<beans>
<bean
class="org.springframework.beans.factory.config.CustomEditorConfigurer">
<property name="customEditors">
<map>
<entry key="Java.net.SocketAddress">
<bean
class="org.apache.mina.integration.spring.InetSocketAddressEditor" />
</entry>
</map>
</property>
</bean>
<!--创建服务器-->
<bean id="ioAcceptor"
class="org.apache.mina.integration.spring.IoAcceptorFactoryBean">
<property name="target">
<bean
class="org.apache.mina.transport.socket.nio.SocketAcceptor" />
</property>
<property name="bindings">
<list>//这里是个list 里面可以创建多个监听
<bean
class="org.apache.mina.integration.spring.Binding">
<property name="address" value=":8888" /> //监听端口:8888
<property name="handler" ref="SampleHandler" />// SampleHandler:定义服务器的handler
<property name="serviceConfig">
<bean
class="org.apache.mina.transport.socket.nio.SocketAcceptorConfig">
<property name="filterChainBuilder "//配置filter
ref="filterChainBuilder" /> //指向: filterChainBuilder
<property name="reuseAddress" value="true" />
</bean>
</property>
</bean>
<bean
class="org.apache.mina.integration.spring.Binding">
<property name="address" value=":9999" /> //第二个监听端口:9999
<property name="handler" ref="bossSampleHandler" /> //监听该端口的 handler
<property name="serviceConfig">
<bean
class="org.apache.mina.transport.socket.nio.SocketAcceptorConfig">
<property name="filterChainBuilder"
ref="filterChainBuilder" />
<property name="reuseAddress" value="true" />
</bean>
</property>
</bean>
</list>
</property>
</bean>
<bean id="SampleHandler" class="cn.org.handler.HandlerTwo" />
<bean id="bossSampleHandler" class="cn.org.handler.HandlerOne" />
//定义filter
<bean id="filterChainBuilder"
class="org.apache.mina.integration.spring.DefaultIoFilterChainBuilderFactoryBean">
<property name="filters">
<list>
<bean
class="org.apache.mina.filter.codec.ProtocolCodecFilter">
<constructor-arg>
<bean
class="org.apache.mina.filter.codec.textline.TextLineCodecFactory" /> //这个是编码格式filter
</constructor-arg>
</bean>
<bean class="org.apache.mina.filter.LoggingFilter" / >//日志的filter
</list>
</property>
</bean>
</beans>
sprng的简单配置文件就是这样:
然后看 handler:
SampleHandler 和 bossSampleHandler 。我写的都是一样的:
package cn.org.handler;
import org.apache.mina.common.IdleStatus;
import org.apache.mina.common.IoHandlerAdapter;
import org.apache.mina.common.IoSession;
public class HandlerOne extends IoHandlerAdapter {
public HandlerOne() {
// TODO Auto-generated constructor stub
}
@Override
public void exceptionCaught(IoSession session, Throwable cause)
throws Exception {
}
@Override
public void messageReceived(IoSession session, Object message)
throws Exception {
// TODO Auto-generated method stub
System.out.println("收到信息");
System.out.println("message :"+message.toString());
}
@Override
public void messageSent(IoSession session, Object message) throws Exception {
System.out.println("小心发送");
}
@Override
public void sessionClosed(IoSession session) throws Exception {
// TODO Auto-generated method stub
super.sessionClosed(session);
}
@Override
public void sessionCreated(IoSession session) throws Exception {
System.out.println(session.getRemoteAddress().toString() +"---create");
}
@Override
public void sessionIdle(IoSession session, IdleStatus status)
throws Exception {
System.out.println(session.getServiceAddress() +"IDS");
}
@Override
public void sessionOpened(IoSession session) throws Exception {
System.out.println("连接打开:"+session.getLocalAddress());
}
}
现在测试:
Test.java
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
ClassPathXmlApplicationContext ct = new ClassPathXmlApplicationContext("applicationContext-mina.xml");
}
}
控制台打印出:
2010-1-16 19:00:51 org.springframework.context.support.AbstractApplicationContext prepareRefresh
信息: Refreshingorg.springframework.context.support.ClassPathXmlApplicationContext@4b4333 : display name [org.springframework.context.support.ClassPathXmlApplicationContext@4b4333]; startup date [Sat Jan 16 19:00:51 CST 2010]; root of context hierarchy
2010-1-16 19:00:51 org.springframework.beans.factory.xml.XmlBeanDefinitionReader loadBeanDefinitions
信息: Loading XML bean definitions from class path resource [applicationContext-mina.xml]
2010-1-16 19:00:51 org.springframework.context.support.AbstractApplicationContext obtainFreshBeanFactory
信息: Bean factory for application context [org.springframework.context.support.ClassPathXmlApplicationContext@4b4333]:org.springframework.beans.factory.support.DefaultListableBeanFactory@1975b59
2010-1-16 19:00:52 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
信息: Pre-instantiating singletons inorg.springframework.beans.factory.support.DefaultListableBeanFactory@1975b59 : defining beans [org.springframework.beans.factory.config.CustomEditorConfigurer#0,ioAcceptor,SampleHandler,bossSampleHandler,filterChainBuilder]; root of factory hierarchy
表明服务器就已经启动了:
现在你可以用telent的方式测试。也可以写个客户端的测试类:
写了个客户端的测试类:Clint.java
public class Clint {
/**
* @param args
*/
final static char end = 0x1a;
public static void main(String[] args) {
SocketConnector connector = new SocketConnector();
SocketAddress address = new InetSocketAddress("127.0.0.1", 8888);
SocketConnectorConfig config = new SocketConnectorConfig();
config.setConnectTimeout(10);// 秒
connector.getFilterChain().addLast( "codec", new ProtocolCodecFilter( new TextLineCodecFactory( Charset.forName( "GB2312" )))); //设置编码过滤器
connector.getFilterChain().addLast( "logger", new org.apache.mina.filter.LoggingFilter() );
IoSession session =null;
ConnectFuture cf = connector.connect(address, new ClintHandler(),
config);
cf.join();
if (cf.isConnected()) {
session = cf.getSession();
System.out.println("连接成功");
session.write("abc");
}else{
System.out.println("连接失败!!!");
}
}
}
转载于:https://www.cnblogs.com/duanxz/p/3555304.html
mina在spring中的配置多个端口相关推荐
- spring中事务配置的3种方式-2
http://doc.javanb.com/spring-framework-reference-zh-2-0-5/ch09s05.html http://zpchen.iteye.com/blog/ ...
- Druid 在spring中的配置
Spring配置中dataSource配置 <bean id="dataSource" class="com.alibaba.druid.pool.DruidDat ...
- java spring 配置log_spring-logger spring中日志配置
默认日志 Logback: 默认情况下,Spring Boot会用Logback来记录日志,并用INFO级别输出到控制台.在运行应用程序和其他例子时,你应该已经看到很多INFO级别的日志了. 从上图可 ...
- 初探Dubbo在Spring中的配置
现在做的系统中用到了Dubbo,但是对它的了解甚少,比较惭愧,现在来学习一下.由于大部分项目都会使用Spring,而且DUBBO也提供了通过Spring来进行配置. 现有系统使用的SpingMVC框架 ...
- MyBatis延迟加载及在spring中集成配置
当你要使用one to one,many to one 就会碰到N+1的问题.很明显,对象之间关联很多有A关联B,B关联C,C关联A这样的关系,如果不是采用延迟加载,很容易一下在出现成千上万对象 ...
- Spring中继承配置的注入方法
(1)两个java类.一个父类一个字类 package com.lc.inherit;/** 这里是父类*/ public class Student {protected String name;p ...
- log4j2在spring中的配置
2019独角兽企业重金招聘Python工程师标准>>> <?xml version="1.0" encoding="UTF-8"?> ...
- java jndi jboss_jboss结合spring中如何配置jndi
D:\jboss-4.0\server\default\deploy目录下:oracle-da.xml配置如下<?xmlversion ="1.0"encoding=&quo ...
- spring中c3p0配置 ---这是一位仁兄的经历
c3p0详细配置 官方文档 : http://www.mchange.com/projects/c3p0/index.html <c3p0-config> <default-conf ...
- 常用数据库jdbc连接池的配置(在spring中的配置)
jdbc连接配置经常用到,那一串url确实不好记,这里汇总下,就好找了. oracle 各种数据库之间,一般只有驱动和url不同. 所以其他的库username,password就不写了. sprin ...
最新文章
- [UOJ422]小Z的礼物
- SQL游标原理和使用方法
- Ubuntu16.04安装opencv-3.4.2
- 用eclispe远程调试tomcat war包形式
- html框架集把那根框架隐藏,HTML 框架集 frameset 和内嵌框架 iframe
- js 如何获取class的元素 以及创建方法getElementsByClassName
- 35岁前把下面十件事做好
- 实例47:python
- RTX5 | 软件定时器01 - 创建一个软件定时器(单次运行)
- 请问C#中如何自动生成summary注释
- Sublime Text 全程指南
- leetcode之有效的括号
- matlab画简谐振动图,基于MATLAB的简谐振动合成图形的动态演示.pdf
- 智云通CRM:销售高手如何维护自己的“地盘”?
- 【交通标志识别】BP神经网络交通标志识别【含GUI Matlab源码 718期】
- 【大数据入门】Hadoop技术原理与应用之基于Hadoop的数据仓库Hive
- android逻辑分辨率,手机ui设计dpi如何把握,看这3个平台各自的画布设置情况
- MySQL的基本知识点,一千行命令概括
- 网卡(eth、lo)
- exp数据导出mysql_关于使用exp按照条件导出数据的问题(摘)