1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.jboss.netty.example.objectecho;
17
18 import org.jboss.netty.bootstrap.ClientBootstrap;
19 import org.jboss.netty.channel.ChannelFuture;
20 import org.jboss.netty.channel.ChannelPipeline;
21 import org.jboss.netty.channel.ChannelPipelineFactory;
22 import org.jboss.netty.channel.Channels;
23 import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory;
24 import org.jboss.netty.example.echo.EchoClient;
25 import org.jboss.netty.handler.codec.serialization.ClassResolvers;
26 import org.jboss.netty.handler.codec.serialization.ObjectDecoder;
27 import org.jboss.netty.handler.codec.serialization.ObjectEncoder;
28 import org.jboss.netty.handler.ssl.SslContext;
29 import org.jboss.netty.handler.ssl.util.InsecureTrustManagerFactory;
30
31 import java.net.InetSocketAddress;
32 import java.util.concurrent.Executors;
33
34
35
36
37 public final class ObjectEchoClient {
38
39 static final boolean SSL = System.getProperty("ssl") != null;
40 static final String HOST = System.getProperty("host", "127.0.0.1");
41 static final int PORT = Integer.parseInt(System.getProperty("port", "8007"));
42 static final int SIZE = Integer.parseInt(System.getProperty("size", "256"));
43
44 public static void main(String[] args) throws Exception {
45
46 final SslContext sslCtx;
47 if (SSL) {
48 sslCtx = SslContext.newClientContext(InsecureTrustManagerFactory.INSTANCE);
49 } else {
50 sslCtx = null;
51 }
52
53
54 ClientBootstrap bootstrap = new ClientBootstrap(
55 new NioClientSocketChannelFactory(
56 Executors.newCachedThreadPool(),
57 Executors.newCachedThreadPool()));
58
59 try {
60
61 bootstrap.setPipelineFactory(new ChannelPipelineFactory() {
62 public ChannelPipeline getPipeline() {
63 ChannelPipeline p = Channels.pipeline(
64 new ObjectEncoder(),
65 new ObjectDecoder(ClassResolvers.cacheDisabled(getClass().getClassLoader())),
66 new ObjectEchoClientHandler(SIZE)
67 );
68
69 if (sslCtx != null) {
70 p.addFirst("ssl", sslCtx.newHandler(HOST, PORT));
71 }
72 return p;
73 }
74 });
75
76
77 ChannelFuture f = bootstrap.connect(new InetSocketAddress(HOST, PORT));
78
79
80 f.sync().getChannel().getCloseFuture().sync();
81 } finally {
82 bootstrap.releaseExternalResources();
83 }
84 }
85 }