1. 程式人生 > >Spring-mybaits-mina整合,啟動多埠監聽

Spring-mybaits-mina整合,啟動多埠監聽

Spring-mybaits-mina三大框架的整合,mina可以使用Spring的資料庫資料庫連線池,無需額外定義mybaits連線池。

可以自定義監聽多埠,埠資料可以從資料庫中讀取

不想看部落格的話,專案完整下載地址:http://download.csdn.net/detail/j506825719/9743712

首先上spring的配置檔案

<?xml version="1.0" encoding="UTF-8"?>  
  
<beans xmlns="http://www.springframework.org/schema/beans"  
  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  
    xmlns:mvc="http://www.springframework.org/schema/mvc"  
  
    xmlns:context="http://www.springframework.org/schema/context"  
  
    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd  
  
        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd  
  
        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd">  
  
   
  
    <mvc:default-servlet-handler/>  
    <!-- 連線資料庫源 -->
  <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
		<property name="driverClassName"  value="oracle.jdbc.driver.OracleDriver"/>
		<property name="url"  value="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/>
		<property name="username"  value="ookami"/>
		<property name="password"  value="123456"/>
	</bean>
	<!-- 定義sqlSessionFactory -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>
    </bean>
	<!-- 配置SqlSessionTemplate(資料庫會話面板) -->    
    <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">    
        <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory" />    
    </bean> 
<mvc:annotation-driven></mvc:annotation-driven>  
  
    <context:component-scan base-package="com.gszh.devicereceive.*" >  <!-- 設定掃描目錄 -->
  
</context:component-scan>  
  	
  	
  	<bean class="org.springframework.beans.factory.config.CustomEditorConfigurer">
		<property name="customEditors">
			<map>
				<entry key="java.net.SocketAddress" value="org.apache.mina.integration.beans.InetSocketAddressEditor"> </entry>
			</map>
		</property>
	</bean>
	
	<!--多埠監聽的配置-->
   	<bean id="ConfigLearn" class="configLearn.ConfigLearn" init-method="bind"/>
   
	<!--主要例項-->
	<bean id="ioAcceptor" class="org.apache.mina.transport.socket.nio.NioSocketAcceptor">
		<property name="handler" ref="SampleHandler" />
		<property name="reuseAddress" value="true" />
        <property name="filterChainBuilder" ref="filterChainBuilder" />
	</bean>

	<!--訊息處理函式-->
	<bean id="SampleHandler" class="com.gszh.devicereceive.listener.MinaServerHanlder" />

    
     <!--過濾器的配置-->
	<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="com.gszh.devicereceive.listener.MyDecode"></bean> </constructor-arg>
    </bean>
    <bean id="loggingFilter" class="org.apache.mina.filter.logging.LoggingFilter" />
    <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>
    
    
   
  
</beans>

啟動多埠監聽的類

/**
 * 
 */
package configLearn;

import java.io.IOException;
import java.net.InetSocketAddress;

import org.apache.mina.core.service.IoAcceptor;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;

/**
 * @author Mu
 *
 */
public class ConfigLearn {
	@Autowired
	private SqlSessionTemplate sstSessionTemplate;
	@Autowired
	private IoAcceptor acceptor;
	
	public void bind() throws IOException{		
		//如果想要繫結多埠監聽的話,在這裡繫結多個即可
		acceptor.bind(new InetSocketAddress(9988));
		acceptor.bind(new InetSocketAddress(9989));
	}
}

定義解碼器
/**
 * 
 */
package com.gszh.devicereceive.listener;

import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.codec.ProtocolCodecFactory;
import org.apache.mina.filter.codec.ProtocolDecoder;
import org.apache.mina.filter.codec.ProtocolEncoder;

/**
 * @author Mu
 *
 */
public class MyDecode implements ProtocolCodecFactory {
	
	private final CSDataEncoder encoder;
    private final CSDataDecoder decoder;
    
    public MyDecode() {
        encoder = new CSDataEncoder();
        
        decoder = new CSDataDecoder();
       
    }
    
	@Override
	public ProtocolDecoder getDecoder(IoSession iosession) throws Exception {
		
		return this.decoder;
	}

	@Override
	public ProtocolEncoder getEncoder(IoSession iosession) throws Exception {
		
		return this.encoder;
	}

	
}
encode
package com.gszh.devicereceive.listener;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.codec.ProtocolEncoderAdapter;
import org.apache.mina.filter.codec.ProtocolEncoderOutput;

public class CSDataEncoder extends ProtocolEncoderAdapter { 
	
	public void encode(IoSession session, Object message, ProtocolEncoderOutput output) throws Exception { 
		
		System.out.println("encode");
		
	} 
} 
decode
package com.gszh.devicereceive.listener;
import org.apache.mina.core.buffer.IoBuffer;
import org.apache.mina.core.session.IoSession;
import org.apache.mina.filter.codec.CumulativeProtocolDecoder;
import org.apache.mina.filter.codec.ProtocolDecoderOutput;

public class CSDataDecoder extends CumulativeProtocolDecoder {
	@Override
	protected boolean doDecode(IoSession session, IoBuffer buffer,ProtocolDecoderOutput output) throws Exception {

		System.out.println("doDecode");
		
		return false;
	}
} 


訊息處理函式
package com.gszh.devicereceive.listener;
import org.apache.mina.core.service.IoHandlerAdapter;
import org.apache.mina.core.session.IoSession;
import org.mybatis.spring.SqlSessionTemplate;
import org.springframework.beans.factory.annotation.Autowired;

public class MessageHanlder extends IoHandlerAdapter {
	
	@Autowired
	public SqlSessionTemplate sst;
	
	//訊息處理函式
	@Override
	public void messageReceived(IoSession session, Object message)throws Exception {
		System.out.println("收到");
	}
}

完整程式碼如上,至於spring和mybaits的整合,這裡不再列出,有什麼疑問的請留言。

相關推薦

Spring-mybaits-mina整合,啟動

Spring-mybaits-mina三大框架的整合,mina可以使用Spring的資料庫資料庫連線池,無需額外定義mybaits連線池。 可以自定義監聽多埠,埠資料可以從資料庫中讀取 不想看部落格的話,專案完整下載地址:http://download.csdn.net/d

spring Mina 整合繫結spring.xml配置

<!-- Mina 整合 -->     <!-- slf4j-api-1.7.7.jar -->     <!-- slf4j-log4j12-1.7.7.jar -->     <!-- 配置 textCodecFilter &

利用 netsh 給 mysql 開啟

利用 netsh 給 mysql 開啟多埠監聽 標題黨,實際並不是真的多埠監聽,只是埠轉發而已。 由於某種特殊原因需要 mysql 伺服器多個埠監聽。 mysql 伺服器本身是不支援的,但可以通知埠轉發的方式。 本機的 IP 是 192.168.1.2 netsh interface portprox

CentOS7.0 Apache2.4.x 配置

1 檢視Apache 版本 #httpd -v 如果返回的結果不是2.4.x 版本,下面配置方式不適用。 2 檢視httpd 所在路徑 #whereis httpd 3 根據第2步的結果中找到conf檔案所在目錄 4 使用vim開啟httpd.conf #vim

Tomcat 無法啟動8080

catalina.out錯誤日誌顯示:資訊: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.lib

linux ftp搭建及

  一、前述  本來公司用的是window是的伺服器,突然經常出現問題,現在需要搭建linux環境。必定linux相對穩定一點。 二、具體 1、顯示如下圖則表示已安裝 vsftp軟體。如果未顯示則需要安裝vsftpd軟體。   如果沒有則通

openwrt裡安裝php並配置lightted

一、安裝配置Lighttpd 1.使用如下命令安裝LightHttpd opkg update opkg install lighttpd lighttpd-mod-cgi 2.通過以下命令建立2個用於埠監聽的目錄 mkdir -

oracle新增配置

原來配置:listener.ora檔案如下: LISTENER = (DESCRIPTION_LIST = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = DESKTOP-L9P3QTT)(PORT = 1521)) (ADDRESS = (PROTOCO

spring,springmvc,mybatits整合例項--表關聯查詢

spring,springmvc,mybatits整合例項–多表關聯查詢 相比於ssh,ssm框架更加簡潔,輕巧,並且sql語句和程式碼耦合更低。本文給出一個ssm整合多表查詢的例項 完整程式碼下載連結: http://download.csdn.net/download/

php-fpm 啟動後沒有9000

netstat -an未發現監聽9000埠。檢視/var/log/php5-fpm.log一切正常。 隨後檢視centos/usr/local/php/etc/php-fpm.con (ubuntu:/etc/php5/fpm/pool.d/www.conf,) 發現li

程序同一個 php

最近在看nginx設計原理時思考到兩個問題,便是: 多個程序能否監聽同個埠?單個程序能否監聽多個埠? 當然隨著學習的深入,答案均是肯定的,在這個過程中筆者為了驗證,用php寫了兩個例子,在這裡分享出來,供有需要的php同學學習跟理解。 在分享例子之前,需要先介紹兩個php在socket程式設計中常用的擴

xampp配置和不同的網站目錄

1.配置Apache檔案httpd.conf 開啟xampp安裝目錄下的Apache-》conf資料夾下的httpd.conf,用記事本開啟 首先在Listen 80埠下新增其他監聽埠: Listen 8001 Listen 8002 Listen 8003 然後在httpd.conf最

Apache設定與架設個網站的方法

  現在想實現這樣一種效果,在一個Apache伺服器中設定多個監聽埠,每一個埠都對應著一個網站   開啟Apache的httpf.conf檔案,我使用的Apache版本是2.2.31   找到,大概129行附近 #LoadModule vhost_alias_module

Redis啟動、執行例項

預設Redis程式安裝在/usr/local/redis目錄下; 配置檔案:/usr/local/redis/redis.conf,該配置檔案中配置的埠為預設埠:6379; Redis的啟動命令路徑:/usr/local/bin/redis-server。 可以指定埠啟動多

Apache配置和不同的網站目錄的簡單方法

由於開發的多專案,每個專案又要獨立,要用根目錄地址。 所以這時候我們需要配置多個不同目錄的Apache,如果是外部網可能用多個域名,可以虛擬主機的方式配置; 但本地的開發環境就一個地址或者就是localhost 那就要配置多個埠來區別不同的目錄。 之前一篇文章提到用增加不同的apache服務來實現。 原來一

spring boot 一個專案啟動個例項

0、前言   在開發中,我們經常需要以不同埠啟動同一個專案的多個例項,IDEA中啟動多個例項很簡單 1、方法   1.1、在專案中,選擇編輯配置,然後點選允許並行執行,如下圖:         1.2、調出RunDashboard面板方便我們檢視,調出方法:

linux下oracle11g R2的啟動與關閉、數據庫

source app var copy time lac started success let 一、啟動監聽與數據庫 1、啟動監聽: [html] view plain copy [[email protected]/* */ oracle]# s

windows 啟動關閉Oracle和服務

break stat local 程序啟動 tle -- add network 寫入 經常要用數據庫,讓他自己啟動的話,開機太慢,所以用命令啟動方便點。 1.開啟: 在運行中輸入cmd,進入控制臺,lsnrctl start回車,提示啟動監聽成功後

web項目啟動時配置本地目錄文件添加, 刪除, 修改, 等操作

init delet break tlist 項目啟動 重新 entry ted eve 大致原理: 通過配置監聽器在web容器啟動或銷毀的時候做相應的操作, 系統目錄的監聽器使用從jdk1.7才有的WatchService 操作步驟: 1> 自定義自己的監聽器實現

spring 自定義事件發布及(簡單實例)

講解 new 繼承 概念 接口 處理 啟動 lca 事件對象 前言: Spring的AppilcaitionContext能夠發布事件和註冊相對應的事件監聽器,因此,它有一套完整的事件發布和監聽機制。 流程分析: 在一個完整的事件體系中,除了事件和監聽器以外,還應該有3個概