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.tcp.perf;
21
22 import java.io.IOException;
23 import java.net.InetSocketAddress;
24 import java.security.GeneralSecurityException;
25 import java.util.concurrent.atomic.AtomicInteger;
26
27 import org.apache.mina.core.filterchain.DefaultIoFilterChainBuilder;
28 import org.apache.mina.core.service.IoHandlerAdapter;
29 import org.apache.mina.core.session.IdleStatus;
30 import org.apache.mina.core.session.IoSession;
31 import org.apache.mina.example.echoserver.ssl.BogusSslContextFactory;
32 import org.apache.mina.filter.ssl.SslFilter;
33 import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
34
35
36
37
38
39
40
41
42
43 public class TcpSslServer extends IoHandlerAdapter {
44
45 public static final int PORT = 18567;
46
47
48 public static final int MAX_RECEIVED = 100000;
49
50
51 private static long t0;
52
53
54 private AtomicInteger nbReceived = new AtomicInteger(0);
55
56
57
58
59 @Override
60 public void exceptionCaught(IoSession session, Throwable cause) throws Exception {
61 cause.printStackTrace();
62 session.closeNow();
63 }
64
65
66
67
68 @Override
69 public void messageReceived(IoSession session, Object message) throws Exception {
70
71 int nb = nbReceived.incrementAndGet();
72
73 if (nb == 1) {
74 t0 = System.currentTimeMillis();
75 }
76
77 if (nb == MAX_RECEIVED) {
78 long t1 = System.currentTimeMillis();
79 System.out.println("-------------> end " + (t1 - t0));
80 }
81
82 if (nb % 10000 == 0) {
83 System.out.println("Received " + nb + " messages");
84 }
85
86
87 session.write(message);
88 }
89
90
91
92
93 @Override
94 public void sessionClosed(IoSession session) throws Exception {
95 System.out.println("Session closed...");
96
97
98 System.out.println("Nb message received : " + nbReceived.get());
99 nbReceived.set(0);
100 }
101
102
103
104
105 @Override
106 public void sessionCreated(IoSession session) throws Exception {
107 System.out.println("Session created...");
108 }
109
110
111
112
113 @Override
114 public void sessionIdle(IoSession session, IdleStatus status) throws Exception {
115 System.out.println("Session idle...");
116 }
117
118
119
120
121
122
123 @Override
124 public void sessionOpened(IoSession session) throws Exception {
125 System.out.println("Session Opened...");
126 }
127
128
129
130
131
132
133
134 public TcpSslServer() throws IOException, GeneralSecurityException {
135 NioSocketAcceptoro/NioSocketAcceptor.html#NioSocketAcceptor">NioSocketAcceptor acceptor = new NioSocketAcceptor();
136
137
138 DefaultIoFilterChainBuilder chain = acceptor.getFilterChain();
139 SslFilterslFilter.html#SslFilter">SslFilter sslFilter = new SslFilter(BogusSslContextFactory
140 .getInstance(true));
141 chain.addLast("sslFilter", sslFilter);
142
143 acceptor.setHandler(this);
144
145
146
147
148
149 acceptor.bind(new InetSocketAddress(PORT));
150
151 System.out.println("Server started...");
152 }
153
154
155
156
157
158
159
160 public static void main(String[] args) throws Exception {
161 new TcpSslServer();
162 }
163 }