webgame中的聊天模塊采用前臺(tái)flash,后臺(tái)java,socket來(lái)進(jìn)行通訊。后臺(tái)是自己寫的socket server。但存在很多問(wèn)題,與spring不方便整合,部署的時(shí)候要分開部署。自己寫的還存在效率問(wèn)題。所以想到了apache mina。如果用mina的話就會(huì)提高socket服務(wù)器的效率。又在網(wǎng)上查到一些mina與tomcat整合的資料,自己就動(dòng)手開始進(jìn)行整合 首先在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> 運(yùn)行ant通過(guò)maven取得相應(yīng)的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是我要實(shí)現(xiàn)的類,新建類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(); } 啟動(dòng)tomcat,就會(huì)開啟一個(gè)8888的端口,進(jìn)入命令行輸入telnet 127.0.0.1 8888看看 |
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
