1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.jboss.netty.example.localtime;
17
18 import org.jboss.netty.bootstrap.ClientBootstrap;
19 import org.jboss.netty.channel.Channel;
20 import org.jboss.netty.channel.ChannelFuture;
21 import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory;
22 import org.jboss.netty.handler.ssl.SslContext;
23 import org.jboss.netty.handler.ssl.util.InsecureTrustManagerFactory;
24
25 import java.net.InetSocketAddress;
26 import java.util.Arrays;
27 import java.util.List;
28 import java.util.concurrent.Executors;
29
30
31
32
33
34 public final class LocalTimeClient {
35
36 static final boolean SSL = System.getProperty("ssl") != null;
37 static final String HOST = System.getProperty("host", "127.0.0.1");
38 static final int PORT = Integer.parseInt(System.getProperty("port", "8463"));
39 static final List<String> CITIES = Arrays.asList(System.getProperty(
40 "cities", "Asia/Seoul,Europe/Berlin,America/Los_Angeles").split(","));
41
42 public static void main(String[] args) throws Exception {
43
44 final SslContext sslCtx;
45 if (SSL) {
46 sslCtx = SslContext.newClientContext(InsecureTrustManagerFactory.INSTANCE);
47 } else {
48 sslCtx = null;
49 }
50
51 ClientBootstrap bootstrap = new ClientBootstrap(
52 new NioClientSocketChannelFactory(
53 Executors.newCachedThreadPool(),
54 Executors.newCachedThreadPool()));
55 try {
56
57 bootstrap.setPipelineFactory(new LocalTimeClientPipelineFactory(sslCtx));
58
59
60 ChannelFuture connectFuture = bootstrap.connect(new InetSocketAddress(HOST, PORT));
61
62
63 Channel channel = connectFuture.sync().getChannel();
64
65
66 LocalTimeClientHandler handler = channel.getPipeline().get(LocalTimeClientHandler.class);
67
68
69 List<String> response = handler.getLocalTimes(CITIES);
70
71
72 channel.close().sync();
73
74
75 for (int i = 0; i < CITIES.size(); i ++) {
76 System.out.format("%28s: %s%n", CITIES.get(i), response.get(i));
77 }
78 } finally {
79
80 bootstrap.releaseExternalResources();
81 }
82 }
83 }