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.logging.LoggingFilter;
29 import org.apache.mina.filter.logging.MdcInjectionFilter;
30 import org.apache.mina.filter.ssl.SslFilter;
31 import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
32
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 = false;
45
46 public static void main(String[] args) throws Exception {
47 NioSocketAcceptor acceptor = new NioSocketAcceptor();
48 DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();
49
50 MdcInjectionFilter mdcInjectionFilter = new MdcInjectionFilter();
51 chain.addLast("mdc", mdcInjectionFilter);
52
53
54 if (USE_SSL) {
55 addSSLSupport(chain);
56 }
57
58 chain.addLast("codec", new ProtocolCodecFilter(
59 new TextLineCodecFactory()));
60
61 addLogger(chain);
62
63
64 acceptor.setHandler(new ChatProtocolHandler());
65 acceptor.bind(new InetSocketAddress(PORT));
66
67 System.out.println("Listening on port " + PORT);
68 }
69
70 private static void addSSLSupport(DefaultIoFilterChainBuilder chain)
71 throws Exception {
72 SslFilter sslFilter = new SslFilter(BogusSslContextFactory
73 .getInstance(true));
74 chain.addLast("sslFilter", sslFilter);
75 System.out.println("SSL ON");
76 }
77
78 private static void addLogger(DefaultIoFilterChainBuilder chain)
79 throws Exception {
80 chain.addLast("logger", new LoggingFilter());
81 System.out.println("Logging ON");
82 }
83 }