MINA 開發入門執行個體–用於FLEX的843連接埠

來源:互聯網
上載者:User

 最近由於公司業務需要,開始學習mima架構 ,貼上一個簡單的入門執行個體.

     該執行個體主要實現的功能是:

開啟一個843監聽連接埠,其作用是為FLEX的安全沙箱機制提供策略檔案(可不管這是幹什麼的)。


WebFlex843Server類

package com.demo.service843;import java.io.IOException;import java.net.InetSocketAddress;import java.nio.charset.Charset;import org.apache.log4j.Logger;import org.apache.mina.core.service.IoAcceptor;import org.apache.mina.core.session.IdleStatus;import org.apache.mina.filter.codec.ProtocolCodecFilter;import org.apache.mina.filter.codec.textline.TextLineCodecFactory;import org.apache.mina.transport.socket.nio.NioSocketAcceptor;public class WebFlex843Server {private final static Logger logger = Logger.getLogger(WebFlex843Server.class);//連接埠號碼private final static int PORT = 843;public void startWf843Server() {// 非阻塞的IoAcceptor acceptor = new NioSocketAcceptor();// 過濾器,客服端上傳上來的資訊必須以">"結尾;且伺服器端下發的資訊末尾自動加上">"acceptor.getFilterChain().addLast("codec",new ProtocolCodecFilter(new TextLineCodecFactory(Charset.forName("UTF-8"), ">", ">")));// 綁定邏輯處理器acceptor.setHandler(new WebFlex843ServerHandler());// 設定緩衝區大小和讀寫通道10秒內無操作進入空閑狀態acceptor.getSessionConfig().setReadBufferSize(2048);acceptor.getSessionConfig().setIdleTime(IdleStatus.BOTH_IDLE, 10);// 綁定連接埠try {acceptor.bind(new InetSocketAddress(PORT));} catch (IOException e) {logger.info("異常:WebFlex伺服器綁定連接埠號碼:" + PORT + ",出現異常");return;}logger.info("WebFlxe843伺服器已啟動,監聽連接埠" + PORT + " ...");}

FlexServerHandler 類

package com.demo.service843;import org.apache.log4j.Logger;import org.apache.mina.core.service.IoHandlerAdapter;import org.apache.mina.core.session.IdleStatus;import org.apache.mina.core.session.IoSession;public class WebFlex843ServerHandler extends IoHandlerAdapter {private final static Logger logger = Logger.getLogger(WebFlex843ServerHandler.class);/** * AS要接收\0結尾的字串 */private static final String SECURITY_FILE = "<?xml version=\"1.0\"?>"+ "<cross-domain-policy>"+ "<site-control permitted-cross-domain-policies=\"all\"/>"+ "<allow-access-from domain=\"*\" to-ports=\"*\" />"+ "</cross-domain-policy>\0";@Overridepublic void sessionOpened(IoSession session) {logger.info("發現使用者登入843伺服器");}/** * Trap exceptions. */@Overridepublic void exceptionCaught(IoSession session, Throwable cause)throws Exception {cause.printStackTrace();session.close(true);if (cause.getMessage().indexOf("遠程主機強迫關閉") >= 0) {logger.info("偵測到:本地Web-Flex的Client的Session關閉,自動關閉其串連的session");}}/** * If the message is 'quit', we exit by closing the session. Otherwise, we * return the current date. */@Overridepublic void messageReceived(IoSession session, Object message)throws Exception {String msg = message.toString();if (msg.length() < 0)return;if (msg.contains("<policy-file-request/>")) {session.write(SECURITY_FILE);} elsesession.write(SECURITY_FILE);}/** * On idle, we just write a message on the console */@Overridepublic void sessionIdle(IoSession session, IdleStatus status)throws Exception {System.out.println("IDLE " + session.getIdleCount(status));}}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.