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 public class Main {
39
40 private static final int PORT = 1234;
41
42
43 private static final boolean USE_SSL = false;
44
45 public static void main(String[] args) throws Exception {
46 NioSocketAcceptor acceptor = new NioSocketAcceptor();
47 DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();
48
49 MdcInjectionFilter mdcInjectionFilter = new MdcInjectionFilter();
50 chain.addLast("mdc", mdcInjectionFilter);
51
52
53 if (USE_SSL) {
54 addSSLSupport(chain);
55 }
56
57 chain.addLast("codec", new ProtocolCodecFilter(
58 new TextLineCodecFactory()));
59
60 addLogger(chain);
61
62
63 acceptor.setHandler(new ChatProtocolHandler());
64 acceptor.bind(new InetSocketAddress(PORT));
65
66 System.out.println("Listening on port " + PORT);
67 }
68
69 private static void addSSLSupport(DefaultIoFilterChainBuilder chain)
70 throws Exception {
71 SslFilter sslFilter = new SslFilter(BogusSslContextFactory
72 .getInstance(true));
73 chain.addLast("sslFilter", sslFilter);
74 System.out.println("SSL ON");
75 }
76
77 private static void addLogger(DefaultIoFilterChainBuilder chain)
78 throws Exception {
79 chain.addLast("logger", new LoggingFilter());
80 System.out.println("Logging ON");
81 }
82 }