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[email protected]4b4333 :
display name [org[email protected]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[email protected]4b4333]:org.s[email protected]1975b59
2010-1-16 19:00:52 org.springframework.beans.factory.support.DefaultListableBeanFactory preInstantiateSingletons
資訊: Pre-instantiating singletons inorg.s[email protected]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("連線失敗!!!");
}
}
}
相關推薦
Tomcat中配置多個工程使用不同埠訪問問題
因為沒有深入的去學習Tomcat,所以下面的方法只是簡單的解決了這個問題。 第一種方式是: Eclispse使用的是安裝版的Tomcaat,專案直接釋出到Tomcat/webapps目錄下。 直接去Tomcat中去修改server.xml檔案,將檔案內容修
mina在spring中的配置多個埠
本次練習中是監聽2個埠 applicationContext-mina.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN/
django中配置多個mongodb數據庫
默認 bsp def imp test string body mode name 在Djnago中使用MongoDB數據庫時,使用mongoengine模塊。在settings中配置數據庫連接如下: from mongoengine import co
c++中配置多個環境的格式
alt bsp c++ ++ 分享 image acp tdi bin 例:環境1=$(QTDIR)\bin 環境2=$(PATH) 環境3=E:\軟件\辦公\Vimba_2.1\VimbaCPP\Bin\Win64 具體配置為 PATH=$(QTDIR)\bin%3b$(
spring security 中配置多個 AuthenticationManager
基於spring-security4.2.x和security-oauth2.3.x 在使用Security配置Oauth2.0的時候需要多個authenticationManager來管理來自不同方向的認證管理,比如一個clientAuthenticationManager用來認證client
oracle新增配置多個埠監聽
原來配置:listener.ora檔案如下: LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-L9P3QTT)(PORT = 1521)) (ADDRESS = (PROTOCO
Tomcat中配置多個網站,多個站點的方法
最近想要在tomcat中部署多個網站,但是不知道怎麼配置,通過查詢資料和摸索,發現要實現這一點其實還是很簡單的。 如何利用Tomcat建立多個Web應用 呢? 重點就是:server.xml檔案的配置 找到server.xml配置檔案中的<Host>節點,通過增加h
JavaWeb 如何在web.xml中配置多個servlet
之前遇到這個問題,被困擾的不行,終於在學習我們學校大神的程式碼後明白了,決定發出來,也方便以後自己檢視 <servlet> <description></description> <display-name>ListBook
log4j.xml 中配置多個輸出檔案
現在的專案中,對於日誌的配置,我們有時候需要配置對應不同的輸出日誌檔案,例如按照模組劃分,按照功能劃分,分別輸出到不同的日誌檔案中,下面介紹一下,怎麼配置不同的輸出日誌檔案。 下面是一整塊的log4j.xml配置。如果對怎麼配置spring 和 log4j不瞭解的話,可以參
classpath:和classpath*:的區別以及web.xml中配置多個xml檔案
首先我們都知道要使用spring,則需要在web.xml中增加如下程式碼: Xml程式碼 <listener> <listener-class>org.springframework.web.context.ContextLoaderList
同一個tomcat配置多個埠對應不同的app
今天有人問我,同一個tomcat部署多個app的話,要管理不同的埠,該如何配置,我的總結如下: <Server port="8005" shutdown="SHUTDOWN"> <Listener className="org.apache.catalina.sta
在spring boot中配置多個DispatcherServlet
spring boot為我們自動配置了一個開箱即用的DispatcherServlet,對映路徑為‘/’,但是如果專案中有多個服務,為了對不同服務進行不同的配置管理,需要對不同服務設定不同的上下文,比如開啟一個DispatcherServlet專門用於rest服務。 傳統springMVC專案 在傳統的spr
ehchche配置中配置多個快取物件
Ehcache不允許建立同樣名稱的CacheManager物件。如果我們沒有ehcache.xml中配置CacaheManager的名稱,那麼預設的名稱是__DEFAULT__。解決方式是<ehcache name="">中配置CacheManager的名稱,並
tomcat配置多個埠
一、Tomcat 安裝後本身提供了一個server,埠配置預設是8080,對應目錄為:..\Tomcat 6.0\webapps 二、Tomcat 6.0 配置多個埠,其實也就是給Tomcat增加幾個server,並設定對應目錄。下面以增加兩個埠號為例 第一步、修改serv
Tomcat8配置多個埠訪問各埠對應的JavaWeb專案
背景:最近遇到個專案部署的小要求:一個tomcat下配置多個埠去訪問埠對應的JavaWeb專案原理:tomcat中conf下server.xml檔案中的service節點即可配置tomcat的埠號及對應的專案配置步驟:1.開啟tomcat下conf資料夾中的serve.xml
Tomcat配置多個埠號或多個應用,使得域名後面加不同埠訪問
1.一個Tomcat下配置多個埠號,這裡是針對一個應用服務而言,只需在Service下配置多個<Connector>。如下: <Server port="8005" shutdown="SHUTDOWN" debug="0"> <Service
Maven pom中配置多個遠端倉庫
原文地址:http://www.xuebuyuan.com/1124933.html <repositories> <repository> <id>datanucleus</id> <url>
struts2中配置多個struts.xml配置檔案
一般來說我們在做開發的時候,是一個團隊,我們可能會按照人來分不同的模組,每個人維護自己不同的struts配置檔案,但在最後整合的時候,一定要把各人所用到的配置檔案都整合進來,這裡有一個方法,用是在你寫的主要的配置檔案中把別的配置檔案導進來, 在struts.
在SpringBoot中配置多個cache,實現多個cacheManager靈活切換
SpringBoot配置多個cache,實現多個cacheManager靈活切換 注:本文所用的springBoot版本號為1.5.6.6 目的&效果 在springBoot中同時配置了RedisCache和ehCache,當使用@Cacheable註解
apache 配置多個埠,部署多個專案
修改httpd.conf配置檔案 1、新增監聽埠 Listen 70 2、配置要訪問的專案,在httpd.conf檔案中新增如下內容 <VirtualHost *:70> DocumentRoot /home/CMS/GYCMS/