惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
月光博客
月光博客
MyScale Blog
MyScale Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
爱范儿
爱范儿
P
Proofpoint News Feed
人人都是产品经理
人人都是产品经理
Last Week in AI
Last Week in AI
罗磊的独立博客
G
Google Developers Blog
Y
Y Combinator Blog
博客园 - 【当耐特】
WordPress大学
WordPress大学
大猫的无限游戏
大猫的无限游戏
博客园 - 叶小钗
J
Java Code Geeks
酷 壳 – CoolShell
酷 壳 – CoolShell
V
Visual Studio Blog
美团技术团队
宝玉的分享
宝玉的分享
Jina AI
Jina AI
小众软件
小众软件
T
Tailwind CSS Blog
A
About on SuperTechFans

博客园 - 糊涂隐锋

[转]SSH框架搭建 Java与Flex通信[转] 使用 Eclipse Memory Analyzer 检测内存泄漏问题 [转] Myeclipse SVN 插件安装 JIRA管理思路[转] linux下安装jira4.4.1[转] CentOS 6.0 安装配置rails 2.3.11 + redmine 1.2.1 笔记[转] 安装项目管理工具 SVN+Redmine[转] MySql 优化[转] Spring中常用的操作数据库的(Dao)方法 [转] Red5共享对象的处理机制[转] 【转载】Red5 0.6 安全 quartz数据库方式与web工程整合 ShareObject 主要用途 - 糊涂隐锋 - 博客园 FLEX提高篇---------FMS两种方式实现简易聊天室 - 糊涂隐锋 - 博客园 ShareObject对象详解 shareObject的使用 Flex 中需要记住的一些东西[转] Flex或Flash的跨域访问解决方案
将mina整合到tomcat中
糊涂隐锋 · 2011-12-08 · via 博客园 - 糊涂隐锋

webgame中的聊天模块采用前台flash,后台java,socket来进行通讯。后台是自己写的socket server。但存在很多问题,与spring不方便整合,部署的时候要分开部署。自己写的还存在效率问题。所以想到了apache mina。如果用mina的话就会提高socket服务器的效率。又在网上查到一些mina与tomcat整合的资料,自己就动手开始进行整合

首先在pom.xml中加入
<!-- mina and mix spring -->
<dependency>
<groupId>org.apache.mina</groupId>
<artifactId>mina-core</artifactId>
<version>2.0.0-M3</version>
</dependency>
<dependency>
<groupId>org.apache.mina</groupId>
<artifactId>mina-integration-spring</artifactId>
<version>1.1.7</version>
</dependency>
<dependency>
<groupId>org.apache.mina</groupId>
<artifactId>mina-integration-beans</artifactId>
<version>2.0.0-M3</version>
</dependency>

运行ant通过maven取得相应的jar包。然后加入spring的配置,让mina和spring整合在一起。

<beans>
<bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">
<property name="customEditors">
<map>
<entry key="java.net.SocketAddress">
<bean class="org.apache.mina.integration.beans.InetSocketAddressEditor" />
</entry>
</map>
</property>
</bean>

<!-- The IoHandler implementation -->
<bean id="minaHandler" class="com.game.MinaProtocolHandler"/>

<!-- the IoFilters -->
<bean id="executorFilter" class="org.apache.mina.filter.executor.ExecutorFilter" />

<bean id="mdcInjectionFilter" class="org.apache.mina.filter.logging.MdcInjectionFilter">
<constructor-arg value="remoteAddress" />
</bean>

<bean id="codecFilter" class="org.apache.mina.filter.codec.ProtocolCodecFilter">
<constructor-arg>
<bean class="org.apache.mina.filter.codec.textline.TextLineCodecFactory" />
</constructor-arg>
</bean>

<bean id="loggingFilter" class="org.apache.mina.filter.logging.LoggingFilter" />

<!-- The non-SSL filter chain. -->
<bean id="filterChainBuilder" class="org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder">
<property name="filters">
<map>
<entry key="executor" value-ref="executorFilter" />
<entry key="mdcInjectionFilter" value-ref="mdcInjectionFilter" />
<entry key="codecFilter" value-ref="codecFilter" />
<entry key="loggingFilter" value-ref="loggingFilter" />
</map>
</property>
</bean>

<!-- The IoAcceptor which binds to port 8888 server side -->
<bean id="minaAcceptor" class="org.apache.mina.transport.socket.nio.NioSocketAcceptor"
init-method="bind" destroy-method="unbind">
<property name="defaultLocalAddress" value=":8888" />
<property name="handler" ref="minaHandler" />
<property name="reuseAddress" value="true" />
<property name="filterChainBuilder" ref="filterChainBuilder" />
</bean>

</beans>

其中com.game.MinaProtocolHandler是我要实现的类,新建类MinaProtocolHandler继承IoHandlerAdapter,代码如下

public void messageReceived(IoSession session, Object message) {
String msg = (String) message;
System.out.println("Server Received: " + msg);
session.write("Send msg: " + msg);
}

public void sessionIdle(IoSession session, IdleStatus status) {
session.close();
}

public void exceptionCaught(IoSession session, Throwable cause) {
session.close();
}

启动tomcat,就会开启一个8888的端口,进入命令行输入telnet 127.0.0.1 8888看看