1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.mina.example.chat;
21
22 import java.net.InetSocketAddress;
23
24 import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
25 import org.apache.mina.example.echoserver.ssl.BogusSslContextFactory;
26 import org.apache.mina.filter.codec.ProtocolCodecFilter;
27 import org.apache.mina.filter.codec.textline.TextLineCodecFactory;
28 import org.apache.mina.filter.compression.CompressionFilter;
29 import org.apache.mina.filter.logging.LoggingFilter;
30 import org.apache.mina.filter.logging.MdcInjectionFilter;
31 import org.apache.mina.filter.ssl.SslFilter;
32 import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
33
34
35
36
37
38
39 public class Main {
40
41 private static final int PORT = 1234;
42
43
44 private static final boolean USE_SSL = true;
45
46 public static void main(String[] args) throws Exception {
47 NioSocketAcceptorioSocketAcceptor.html#NioSocketAcceptor">NioSocketAcceptor acceptor = new NioSocketAcceptor();
48 DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();
49
50 MdcInjectionFilter.html#MdcInjectionFilter">MdcInjectionFilter mdcInjectionFilter = new MdcInjectionFilter();
51 chain.addLast("mdc", mdcInjectionFilter);
52
53
54 if (USE_SSL) {
55 addSSLSupport(chain);
56 }
57
58
59 chain.addLast( "Compressor", new CompressionFilter() );
60
61 chain.addLast("codec", new ProtocolCodecFilter(
62 new TextLineCodecFactory()));
63
64 addLogger(chain);
65
66
67 acceptor.setHandler(new ChatProtocolHandler());
68 acceptor.bind(new InetSocketAddress(PORT));
69
70 System.out.println("Listening on port " + PORT);
71 }
72
73 private static void addSSLSupport(DefaultIoFilterChainBuilder chain)
74 throws Exception {
75 SslFilterilter.html#SslFilter">SslFilter sslFilter = new SslFilter(BogusSslContextFactory
76 .getInstance(true));
77 chain.addLast("sslFilter", sslFilter);
78 System.out.println("SSL ON");
79 }
80
81 private static void addLogger(DefaultIoFilterChainBuilder chain)
82 throws Exception {
83 chain.addLast("logger", new LoggingFilter());
84 System.out.println("Logging ON");
85 }
86 }