Modified:
websites/staging/mina/trunk/content/mina/userguide/ch16-jmx-support/ch16-jmx-support.html
==============================================================================
---
websites/staging/mina/trunk/content/mina/userguide/ch16-jmx-support/ch16-jmx-support.html
(original)
+++
websites/staging/mina/trunk/content/mina/userguide/ch16-jmx-support/ch16-jmx-support.html
Thu Nov 1 05:13:20 2012
@@ -162,30 +162,30 @@
</ul>
<p>We shall follow
\src\main\java\org\apache\mina\example\imagine\step3\server\ImageServer.java,
for the rest of our discussion</p>
<h2 id="createget-mbean-server">Create/Get MBean server</h2>
-<div class="codehilite"><pre><span class="sr">//</span> <span
class="n">create</span> <span class="n">a</span> <span class="n">JMX</span>
<span class="n">MBean</span> <span class="n">Server</span> <span
class="n">server</span> <span class="n">instance</span>
-<span class="n">MBeanServer</span> <span class="n">mBeanServer</span> <span
class="o">=</span> <span class="n">ManagementFactory</span><span
class="o">.</span><span class="n">getPlatformMBeanServer</span><span
class="p">();</span>
+<div class="codehilite"><pre><span class="c1">// create a JMX MBean Server
server instance</span>
+<span class="n">MBeanServer</span> <span class="n">mBeanServer</span> <span
class="o">=</span> <span class="n">ManagementFactory</span><span
class="o">.</span><span class="na">getPlatformMBeanServer</span><span
class="o">();</span>
</pre></div>
<p>This lines get the MBean Server instance.</p>
<h2 id="instantiate-mbeans">Instantiate MBean(s)</h2>
<p>We create an MBean for IoService</p>
-<div class="codehilite"><pre><span class="sr">//</span> <span
class="n">create</span> <span class="n">a</span> <span
class="n">JMX</span><span class="o">-</span><span class="n">aware</span> <span
class="n">bean</span> <span class="n">that</span> <span class="n">wraps</span>
<span class="n">a</span> <span class="n">MINA</span> <span
class="n">IoService</span> <span class="n">object</span><span
class="o">.</span> <span class="n">In</span> <span class="n">this</span>
-<span class="sr">//</span> <span class="k">case</span><span class="p">,</span>
<span class="n">a</span> <span class="n">NioSocketAcceptor</span><span
class="o">.</span>
-<span class="n">IoServiceMBean</span> <span class="n">acceptorMBean</span>
<span class="o">=</span> <span class="k">new</span> <span
class="n">IoServiceMBean</span><span class="p">(</span> <span
class="n">acceptor</span> <span class="p">);</span>
+<div class="codehilite"><pre><span class="c1">// create a JMX-aware bean that
wraps a MINA IoService object. In this</span>
+<span class="c1">// case, a NioSocketAcceptor. </span>
+<span class="n">IoServiceMBean</span> <span class="n">acceptorMBean</span>
<span class="o">=</span> <span class="k">new</span> <span
class="n">IoServiceMBean</span><span class="o">(</span> <span
class="n">acceptor</span> <span class="o">);</span>
</pre></div>
<p>This creates an IoService MBean. It accepts instance of an acceptor that it
exposed via JMX.</p>
<p>Similarly, you can add IoFilterMBean and other custom MBeans as well</p>
<h2 id="registering-mbeans-with-mbean-server">Registering MBeans with MBean
Server</h2>
-<div class="codehilite"><pre><span class="sr">//</span> <span
class="n">create</span> <span class="n">a</span> <span class="n">JMX</span>
<span class="n">ObjectName</span><span class="o">.</span> <span
class="n">This</span> <span class="n">has</span> <span class="n">to</span>
<span class="n">be</span> <span class="n">in</span> <span class="n">a</span>
<span class="n">specific</span> <span class="nb">format</span><span
class="o">.</span>
-<span class="n">ObjectName</span> <span class="n">acceptorName</span> <span
class="o">=</span> <span class="k">new</span> <span
class="n">ObjectName</span><span class="p">(</span> <span
class="n">acceptor</span><span class="o">.</span><span
class="n">getClass</span><span class="p">()</span><span class="o">.</span><span
class="n">getPackage</span><span class="p">()</span><span
class="o">.</span><span class="n">getName</span><span class="p">()</span> <span
class="o">+</span>
- <span class="s">":type=acceptor,name="</span> <span
class="o">+</span> <span class="n">acceptor</span><span class="o">.</span><span
class="n">getClass</span><span class="p">()</span><span class="o">.</span><span
class="n">getSimpleName</span><span class="p">());</span>
-
-<span class="sr">//</span> <span class="n">register</span> <span
class="n">the</span> <span class="n">bean</span> <span class="n">on</span>
<span class="n">the</span> <span class="n">MBeanServer</span><span
class="o">.</span> <span class="n">Without</span> <span class="n">this</span>
<span class="n">line</span><span class="p">,</span> <span class="nb">no</span>
<span class="n">JMX</span> <span class="n">will</span> <span
class="n">happen</span> <span class="k">for</span>
-<span class="sr">//</span> <span class="n">this</span> <span
class="n">acceptor</span><span class="o">.</span>
-<span class="n">mBeanServer</span><span class="o">.</span><span
class="n">registerMBean</span><span class="p">(</span> <span
class="n">acceptorMBean</span><span class="p">,</span> <span
class="n">acceptorName</span> <span class="p">);</span>
+<div class="codehilite"><pre><span class="c1">// create a JMX ObjectName.
This has to be in a specific format. </span>
+<span class="n">ObjectName</span> <span class="n">acceptorName</span> <span
class="o">=</span> <span class="k">new</span> <span
class="n">ObjectName</span><span class="o">(</span> <span
class="n">acceptor</span><span class="o">.</span><span
class="na">getClass</span><span class="o">().</span><span
class="na">getPackage</span><span class="o">().</span><span
class="na">getName</span><span class="o">()</span> <span class="o">+</span>
+ <span class="s">":type=acceptor,name="</span> <span
class="o">+</span> <span class="n">acceptor</span><span class="o">.</span><span
class="na">getClass</span><span class="o">().</span><span
class="na">getSimpleName</span><span class="o">());</span>
+
+<span class="c1">// register the bean on the MBeanServer. Without this line,
no JMX will happen for</span>
+<span class="c1">// this acceptor.</span>
+<span class="n">mBeanServer</span><span class="o">.</span><span
class="na">registerMBean</span><span class="o">(</span> <span
class="n">acceptorMBean</span><span class="o">,</span> <span
class="n">acceptorName</span> <span class="o">);</span>
</pre></div>
@@ -203,7 +203,7 @@
<h2 id="start-jconsole">Start JConsole</h2>
<p>Start JConsole using the following command: </p>
-<p><JDK_HOME>/bin/jconsole</p>
+<p><JDK_HOME>/bin/jconsole</p>
<p>We can see the different attributes and operations that are exposed by the
MBeans</p>
Modified:
websites/staging/mina/trunk/content/mina/userguide/ch17-spring-integration/ch17-spring-integration.html
==============================================================================
---
websites/staging/mina/trunk/content/mina/userguide/ch17-spring-integration/ch17-spring-integration.html
(original)
+++
websites/staging/mina/trunk/content/mina/userguide/ch17-spring-integration/ch17-spring-integration.html
Thu Nov 1 05:13:20 2012
@@ -160,27 +160,27 @@
</ul>
<h3 id="initialization-code">Initialization Code</h3>
<p>Lets see the code first. For simplicity we have omitted the glue code.</p>
-<div class="codehilite"><pre><span class="n">public</span> <span
class="n">void</span> <span class="n">initialize</span><span
class="p">()</span> <span class="n">throws</span> <span
class="n">IOException</span> <span class="p">{</span>
+<div class="codehilite"><pre><span class="kd">public</span> <span
class="kt">void</span> <span class="nf">initialize</span><span
class="o">()</span> <span class="kd">throws</span> <span
class="n">IOException</span> <span class="o">{</span>
- <span class="sr">//</span> <span class="n">Create</span> <span
class="n">an</span> <span class="n">Acceptor</span>
- <span class="n">NioDatagramAcceptor</span> <span class="n">acceptor</span>
<span class="o">=</span> <span class="k">new</span> <span
class="n">NioDatagramAcceptor</span><span class="p">();</span>
+ <span class="c1">// Create an Acceptor</span>
+ <span class="n">NioDatagramAcceptor</span> <span class="n">acceptor</span>
<span class="o">=</span> <span class="k">new</span> <span
class="n">NioDatagramAcceptor</span><span class="o">();</span>
- <span class="sr">//</span> <span class="n">Add</span> <span
class="n">Handler</span>
- <span class="n">acceptor</span><span class="o">.</span><span
class="n">setHandler</span><span class="p">(</span><span class="k">new</span>
<span class="n">ServerHandler</span><span class="p">());</span>
+ <span class="c1">// Add Handler</span>
+ <span class="n">acceptor</span><span class="o">.</span><span
class="na">setHandler</span><span class="o">(</span><span class="k">new</span>
<span class="n">ServerHandler</span><span class="o">());</span>
- <span class="n">acceptor</span><span class="o">.</span><span
class="n">getFilterChain</span><span class="p">()</span><span
class="o">.</span><span class="n">addLast</span><span class="p">(</span><span
class="s">"logging"</span><span class="p">,</span>
- <span class="k">new</span> <span
class="n">LoggingFilter</span><span class="p">());</span>
- <span class="n">acceptor</span><span class="o">.</span><span
class="n">getFilterChain</span><span class="p">()</span><span
class="o">.</span><span class="n">addLast</span><span class="p">(</span><span
class="s">"codec"</span><span class="p">,</span>
- <span class="k">new</span> <span
class="n">ProtocolCodecFilter</span><span class="p">(</span><span
class="k">new</span> <span class="n">SNMPCodecFactory</span><span
class="p">()));</span>
-
- <span class="sr">//</span> <span class="n">Create</span> <span
class="n">Session</span> <span class="n">Configuration</span>
- <span class="n">DatagramSessionConfig</span> <span class="n">dcfg</span>
<span class="o">=</span> <span class="n">acceptor</span><span
class="o">.</span><span class="n">getSessionConfig</span><span
class="p">();</span>
- <span class="n">dcfg</span><span class="o">.</span><span
class="n">setReuseAddress</span><span class="p">(</span><span
class="n">true</span><span class="p">);</span>
- <span class="n">logger</span><span class="o">.</span><span
class="n">debug</span><span class="p">(</span><span class="s">"Starting
Server......"</span><span class="p">);</span>
- <span class="sr">//</span> <span class="n">Bind</span> <span
class="ow">and</span> <span class="n">be</span> <span class="n">ready</span>
<span class="n">to</span> <span class="nb">listen</span>
- <span class="n">acceptor</span><span class="o">.</span><span
class="nb">bind</span><span class="p">(</span><span class="k">new</span> <span
class="n">InetSocketAddress</span><span class="p">(</span><span
class="n">DEFAULT_PORT</span><span class="p">));</span>
- <span class="n">logger</span><span class="o">.</span><span
class="n">debug</span><span class="p">(</span><span class="s">"Server
listening on "</span><span class="o">+</span><span
class="n">DEFAULT_PORT</span><span class="p">);</span>
-<span class="p">}</span>
+ <span class="n">acceptor</span><span class="o">.</span><span
class="na">getFilterChain</span><span class="o">().</span><span
class="na">addLast</span><span class="o">(</span><span
class="s">"logging"</span><span class="o">,</span>
+ <span class="k">new</span> <span
class="nf">LoggingFilter</span><span class="o">());</span>
+ <span class="n">acceptor</span><span class="o">.</span><span
class="na">getFilterChain</span><span class="o">().</span><span
class="na">addLast</span><span class="o">(</span><span
class="s">"codec"</span><span class="o">,</span>
+ <span class="k">new</span> <span
class="nf">ProtocolCodecFilter</span><span class="o">(</span><span
class="k">new</span> <span class="n">SNMPCodecFactory</span><span
class="o">()));</span>
+
+ <span class="c1">// Create Session Configuration</span>
+ <span class="n">DatagramSessionConfig</span> <span class="n">dcfg</span>
<span class="o">=</span> <span class="n">acceptor</span><span
class="o">.</span><span class="na">getSessionConfig</span><span
class="o">();</span>
+ <span class="n">dcfg</span><span class="o">.</span><span
class="na">setReuseAddress</span><span class="o">(</span><span
class="kc">true</span><span class="o">);</span>
+ <span class="n">logger</span><span class="o">.</span><span
class="na">debug</span><span class="o">(</span><span class="s">"Starting
Server......"</span><span class="o">);</span>
+ <span class="c1">// Bind and be ready to listen</span>
+ <span class="n">acceptor</span><span class="o">.</span><span
class="na">bind</span><span class="o">(</span><span class="k">new</span> <span
class="n">InetSocketAddress</span><span class="o">(</span><span
class="n">DEFAULT_PORT</span><span class="o">));</span>
+ <span class="n">logger</span><span class="o">.</span><span
class="na">debug</span><span class="o">(</span><span class="s">"Server
listening on "</span><span class="o">+</span><span
class="n">DEFAULT_PORT</span><span class="o">);</span>
+<span class="o">}</span>
</pre></div>
@@ -196,8 +196,8 @@
This example has been derived from <a
href="http://svn.apache.org/viewvc/mina/branches/1.0/example/src/main/java/org/apache/mina/example/chat/">Chat
example</a> shipped with MINA release. Please refer the xml shipped with chat
example.</p>
<p>Now lets pull things together</p>
<p>Lets set the IO Handler in the spring context file</p>
-<div class="codehilite"><pre><span class="o"><!--</span> <span
class="n">The</span> <span class="n">IoHandler</span> <span
class="n">implementation</span> <span class="o">--></span>
-<span class="o"><</span><span class="n">bean</span> <span
class="n">id</span><span class="o">=</span><span
class="s">"trapHandler"</span> <span class="n">class</span><span
class="o">=</span><span
class="s">"com.ashishpaliwal.udp.mina.server.ServerHandler"</span><span
class="o">></span>
+<div class="codehilite"><pre><span class="c"><!-- The IoHandler
implementation --></span>
+<span class="nt"><bean</span> <span class="na">id=</span><span
class="s">"trapHandler"</span> <span class="na">class=</span><span
class="s">"com.ashishpaliwal.udp.mina.server.ServerHandler"</span><span
class="nt">></span>
</pre></div>
@@ -244,9 +244,9 @@ This example has been derived from <a hr
<p>Now we create our ioAcceptor, set IO handler and Filter Chain. Now we have
to write a function to read this file using Spring and start our application.
Here's the code</p>
-<div class="codehilite"><pre><span class="n">public</span> <span
class="n">void</span> <span class="n">initializeViaSpring</span><span
class="p">()</span> <span class="n">throws</span> <span
class="n">Exception</span> <span class="p">{</span>
- <span class="k">new</span> <span
class="n">ClassPathXmlApplicationContext</span><span class="p">(</span><span
class="s">"trapReceiverContext.xml"</span><span class="p">);</span>
-<span class="p">}</span>
+<div class="codehilite"><pre><span class="kd">public</span> <span
class="kt">void</span> <span class="nf">initializeViaSpring</span><span
class="o">()</span> <span class="kd">throws</span> <span
class="n">Exception</span> <span class="o">{</span>
+ <span class="k">new</span> <span
class="nf">ClassPathXmlApplicationContext</span><span class="o">(</span><span
class="s">"trapReceiverContext.xml"</span><span class="o">);</span>
+<span class="o">}</span>
</pre></div>
Modified:
websites/staging/mina/trunk/content/mina/userguide/ch2-basics/sample-tcp-client.html
==============================================================================
---
websites/staging/mina/trunk/content/mina/userguide/ch2-basics/sample-tcp-client.html
(original)
+++
websites/staging/mina/trunk/content/mina/userguide/ch2-basics/sample-tcp-client.html
Thu Nov 1 05:13:20 2012
@@ -153,39 +153,39 @@
<p>We have seen the Client Architecture. Lets explore a sample Client
implementation.</p>
<p>We shall use <a
href="http://mina.apache.org/report/trunk/xref/org/apache/mina/example/sumup/Client.html">Sumup
Client</a> as a reference implementation.</p>
<p>We will remove boiler plate code and concentrate on the important
constructs. Below the code for the Client :</p>
-<div class="codehilite"><pre><span class="n">public</span> <span
class="n">static</span> <span class="n">void</span> <span
class="n">main</span><span class="p">(</span><span class="n">String</span><span
class="o">[]</span> <span class="n">args</span><span class="p">)</span> <span
class="n">throws</span> <span class="n">Throwable</span> <span
class="p">{</span>
- <span class="n">NioSocketConnector</span> <span class="n">connector</span>
<span class="o">=</span> <span class="k">new</span> <span
class="n">NioSocketConnector</span><span class="p">();</span>
- <span class="n">connector</span><span class="o">.</span><span
class="n">setConnectTimeoutMillis</span><span class="p">(</span><span
class="n">CONNECT_TIMEOUT</span><span class="p">);</span>
-
- <span class="k">if</span> <span class="p">(</span><span
class="n">USE_CUSTOM_CODEC</span><span class="p">)</span> <span
class="p">{</span>
- <span class="n">connector</span><span class="o">.</span><span
class="n">getFilterChain</span><span class="p">()</span><span
class="o">.</span><span class="n">addLast</span><span class="p">(</span><span
class="s">"codec"</span><span class="p">,</span>
- <span class="k">new</span> <span
class="n">ProtocolCodecFilter</span><span class="p">(</span><span
class="k">new</span> <span class="n">SumUpProtocolCodecFactory</span><span
class="p">(</span><span class="n">false</span><span class="p">)));</span>
- <span class="p">}</span> <span class="k">else</span> <span
class="p">{</span>
- <span class="n">connector</span><span class="o">.</span><span
class="n">getFilterChain</span><span class="p">()</span><span
class="o">.</span><span class="n">addLast</span><span class="p">(</span><span
class="s">"codec"</span><span class="p">,</span>
- <span class="k">new</span> <span
class="n">ProtocolCodecFilter</span><span class="p">(</span><span
class="k">new</span> <span
class="n">ObjectSerializationCodecFactory</span><span class="p">()));</span>
- <span class="p">}</span>
-
- <span class="n">connector</span><span class="o">.</span><span
class="n">getFilterChain</span><span class="p">()</span><span
class="o">.</span><span class="n">addLast</span><span class="p">(</span><span
class="s">"logger"</span><span class="p">,</span> <span
class="k">new</span> <span class="n">LoggingFilter</span><span
class="p">());</span>
- <span class="n">connector</span><span class="o">.</span><span
class="n">setHandler</span><span class="p">(</span><span class="k">new</span>
<span class="n">ClientSessionHandler</span><span class="p">(</span><span
class="nb">values</span><span class="p">));</span>
- <span class="n">IoSession</span> <span class="n">session</span><span
class="p">;</span>
-
- <span class="k">for</span> <span class="p">(;;)</span> <span
class="p">{</span>
- <span class="n">try</span> <span class="p">{</span>
- <span class="n">ConnectFuture</span> <span class="n">future</span>
<span class="o">=</span> <span class="n">connector</span><span
class="o">.</span><span class="nb">connect</span><span class="p">(</span><span
class="k">new</span> <span class="n">InetSocketAddress</span><span
class="p">(</span><span class="n">HOSTNAME</span><span class="p">,</span> <span
class="n">PORT</span><span class="p">));</span>
- <span class="n">future</span><span class="o">.</span><span
class="n">awaitUninterruptibly</span><span class="p">();</span>
- <span class="n">session</span> <span class="o">=</span> <span
class="n">future</span><span class="o">.</span><span
class="n">getSession</span><span class="p">();</span>
- <span class="n">break</span><span class="p">;</span>
- <span class="p">}</span> <span class="n">catch</span> <span
class="p">(</span><span class="n">RuntimeIoException</span> <span
class="n">e</span><span class="p">)</span> <span class="p">{</span>
- <span class="n">System</span><span class="o">.</span><span
class="n">err</span><span class="o">.</span><span class="n">println</span><span
class="p">(</span><span class="o">&</span><span class="n">quot</span><span
class="p">;</span><span class="n">Failed</span> <span class="n">to</span> <span
class="nb">connect</span><span class="o">.&</span><span
class="n">quot</span><span class="p">;);</span>
- <span class="n">e</span><span class="o">.</span><span
class="n">printStackTrace</span><span class="p">();</span>
- <span class="n">Thread</span><span class="o">.</span><span
class="nb">sleep</span><span class="p">(</span><span
class="mi">5000</span><span class="p">);</span>
- <span class="p">}</span>
- <span class="p">}</span>
-
- <span class="sr">//</span> <span class="nb">wait</span> <span
class="k">until</span> <span class="n">the</span> <span
class="n">summation</span> <span class="n">is</span> <span class="n">done</span>
- <span class="n">session</span><span class="o">.</span><span
class="n">getCloseFuture</span><span class="p">()</span><span
class="o">.</span><span class="n">awaitUninterruptibly</span><span
class="p">();</span>
- <span class="n">connector</span><span class="o">.</span><span
class="n">dispose</span><span class="p">();</span>
-<span class="p">}</span>
+<div class="codehilite"><pre><span class="kd">public</span> <span
class="kd">static</span> <span class="kt">void</span> <span
class="nf">main</span><span class="o">(</span><span
class="n">String</span><span class="o">[]</span> <span
class="n">args</span><span class="o">)</span> <span class="kd">throws</span>
<span class="n">Throwable</span> <span class="o">{</span>
+ <span class="n">NioSocketConnector</span> <span class="n">connector</span>
<span class="o">=</span> <span class="k">new</span> <span
class="n">NioSocketConnector</span><span class="o">();</span>
+ <span class="n">connector</span><span class="o">.</span><span
class="na">setConnectTimeoutMillis</span><span class="o">(</span><span
class="n">CONNECT_TIMEOUT</span><span class="o">);</span>
+
+ <span class="k">if</span> <span class="o">(</span><span
class="n">USE_CUSTOM_CODEC</span><span class="o">)</span> <span
class="o">{</span>
+ <span class="n">connector</span><span class="o">.</span><span
class="na">getFilterChain</span><span class="o">().</span><span
class="na">addLast</span><span class="o">(</span><span
class="s">"codec"</span><span class="o">,</span>
+ <span class="k">new</span> <span
class="nf">ProtocolCodecFilter</span><span class="o">(</span><span
class="k">new</span> <span class="n">SumUpProtocolCodecFactory</span><span
class="o">(</span><span class="kc">false</span><span class="o">)));</span>
+ <span class="o">}</span> <span class="k">else</span> <span
class="o">{</span>
+ <span class="n">connector</span><span class="o">.</span><span
class="na">getFilterChain</span><span class="o">().</span><span
class="na">addLast</span><span class="o">(</span><span
class="s">"codec"</span><span class="o">,</span>
+ <span class="k">new</span> <span
class="nf">ProtocolCodecFilter</span><span class="o">(</span><span
class="k">new</span> <span
class="n">ObjectSerializationCodecFactory</span><span class="o">()));</span>
+ <span class="o">}</span>
+
+ <span class="n">connector</span><span class="o">.</span><span
class="na">getFilterChain</span><span class="o">().</span><span
class="na">addLast</span><span class="o">(</span><span
class="s">"logger"</span><span class="o">,</span> <span
class="k">new</span> <span class="n">LoggingFilter</span><span
class="o">());</span>
+ <span class="n">connector</span><span class="o">.</span><span
class="na">setHandler</span><span class="o">(</span><span class="k">new</span>
<span class="n">ClientSessionHandler</span><span class="o">(</span><span
class="n">values</span><span class="o">));</span>
+ <span class="n">IoSession</span> <span class="n">session</span><span
class="o">;</span>
+
+ <span class="k">for</span> <span class="o">(;;)</span> <span
class="o">{</span>
+ <span class="k">try</span> <span class="o">{</span>
+ <span class="n">ConnectFuture</span> <span class="n">future</span>
<span class="o">=</span> <span class="n">connector</span><span
class="o">.</span><span class="na">connect</span><span class="o">(</span><span
class="k">new</span> <span class="n">InetSocketAddress</span><span
class="o">(</span><span class="n">HOSTNAME</span><span class="o">,</span> <span
class="n">PORT</span><span class="o">));</span>
+ <span class="n">future</span><span class="o">.</span><span
class="na">awaitUninterruptibly</span><span class="o">();</span>
+ <span class="n">session</span> <span class="o">=</span> <span
class="n">future</span><span class="o">.</span><span
class="na">getSession</span><span class="o">();</span>
+ <span class="k">break</span><span class="o">;</span>
+ <span class="o">}</span> <span class="k">catch</span> <span
class="o">(</span><span class="n">RuntimeIoException</span> <span
class="n">e</span><span class="o">)</span> <span class="o">{</span>
+ <span class="n">System</span><span class="o">.</span><span
class="na">err</span><span class="o">.</span><span
class="na">println</span><span class="o">(&</span><span
class="n">quot</span><span class="o">;</span><span class="n">Failed</span>
<span class="n">to</span> <span class="n">connect</span><span
class="o">.&</span><span class="n">quot</span><span class="o">;);</span>
+ <span class="n">e</span><span class="o">.</span><span
class="na">printStackTrace</span><span class="o">();</span>
+ <span class="n">Thread</span><span class="o">.</span><span
class="na">sleep</span><span class="o">(</span><span
class="mi">5000</span><span class="o">);</span>
+ <span class="o">}</span>
+ <span class="o">}</span>
+
+ <span class="c1">// wait until the summation is done</span>
+ <span class="n">session</span><span class="o">.</span><span
class="na">getCloseFuture</span><span class="o">().</span><span
class="na">awaitUninterruptibly</span><span class="o">();</span>
+ <span class="n">connector</span><span class="o">.</span><span
class="na">dispose</span><span class="o">();</span>
+<span class="o">}</span>
</pre></div>
@@ -198,44 +198,44 @@
</ul>
<p>Lets examine each one in detail</p>
<h2 id="create-a-connector">Create a Connector</h2>
-<div class="codehilite"><pre><span class="n">NioSocketConnector</span> <span
class="n">connector</span> <span class="o">=</span> <span class="k">new</span>
<span class="n">NioSocketConnector</span><span class="p">();</span>
+<div class="codehilite"><pre><span class="n">NioSocketConnector</span> <span
class="n">connector</span> <span class="o">=</span> <span class="k">new</span>
<span class="n">NioSocketConnector</span><span class="o">();</span>
</pre></div>
<p>Here we have created a NIO Socket connector</p>
<h2 id="create-a-filter-chain">Create a Filter Chain</h2>
-<div class="codehilite"><pre><span class="k">if</span> <span
class="p">(</span><span class="n">USE_CUSTOM_CODEC</span><span
class="p">)</span> <span class="p">{</span>
- <span class="n">connector</span><span class="o">.</span><span
class="n">getFilterChain</span><span class="p">()</span><span
class="o">.</span><span class="n">addLast</span><span class="p">(</span><span
class="s">"codec"</span><span class="p">,</span>
- <span class="k">new</span> <span
class="n">ProtocolCodecFilter</span><span class="p">(</span><span
class="k">new</span> <span class="n">SumUpProtocolCodecFactory</span><span
class="p">(</span><span class="n">false</span><span class="p">)));</span>
-<span class="p">}</span> <span class="k">else</span> <span class="p">{</span>
- <span class="n">connector</span><span class="o">.</span><span
class="n">getFilterChain</span><span class="p">()</span><span
class="o">.</span><span class="n">addLast</span><span class="p">(</span><span
class="s">"codec"</span><span class="p">,</span>
- <span class="k">new</span> <span
class="n">ProtocolCodecFilter</span><span class="p">(</span><span
class="k">new</span> <span
class="n">ObjectSerializationCodecFactory</span><span class="p">()));</span>
-<span class="p">}</span>
+<div class="codehilite"><pre><span class="k">if</span> <span
class="o">(</span><span class="n">USE_CUSTOM_CODEC</span><span
class="o">)</span> <span class="o">{</span>
+ <span class="n">connector</span><span class="o">.</span><span
class="na">getFilterChain</span><span class="o">().</span><span
class="na">addLast</span><span class="o">(</span><span
class="s">"codec"</span><span class="o">,</span>
+ <span class="k">new</span> <span
class="nf">ProtocolCodecFilter</span><span class="o">(</span><span
class="k">new</span> <span class="n">SumUpProtocolCodecFactory</span><span
class="o">(</span><span class="kc">false</span><span class="o">)));</span>
+<span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
+ <span class="n">connector</span><span class="o">.</span><span
class="na">getFilterChain</span><span class="o">().</span><span
class="na">addLast</span><span class="o">(</span><span
class="s">"codec"</span><span class="o">,</span>
+ <span class="k">new</span> <span
class="nf">ProtocolCodecFilter</span><span class="o">(</span><span
class="k">new</span> <span
class="n">ObjectSerializationCodecFactory</span><span class="o">()));</span>
+<span class="o">}</span>
</pre></div>
<p>We add Filters to the Filter Chain for the Connector. Here we have added a
ProtocolCodec, to the filter Chain.</p>
<h2 id="create-iohandler">Create IOHandler</h2>
-<div class="codehilite"><pre><span class="n">connector</span><span
class="o">.</span><span class="n">setHandler</span><span
class="p">(</span><span class="k">new</span> <span
class="n">ClientSessionHandler</span><span class="p">(</span><span
class="nb">values</span><span class="p">));</span>
+<div class="codehilite"><pre><span class="n">connector</span><span
class="o">.</span><span class="na">setHandler</span><span
class="o">(</span><span class="k">new</span> <span
class="n">ClientSessionHandler</span><span class="o">(</span><span
class="n">values</span><span class="o">));</span>
</pre></div>
<p>Here we create an instance of <a
href="http://mina.apache.org/report/trunk/xref/org/apache/mina/example/sumup/ClientSessionHandler.html">ClientSessionHandler</a>
and set it as a handler for the Connector.</p>
<h2 id="bind-to-server">Bind to Server</h2>
-<div class="codehilite"><pre><span class="n">IoSession</span> <span
class="n">session</span><span class="p">;</span>
+<div class="codehilite"><pre><span class="n">IoSession</span> <span
class="n">session</span><span class="o">;</span>
-<span class="k">for</span> <span class="p">(;;)</span> <span class="p">{</span>
- <span class="n">try</span> <span class="p">{</span>
- <span class="n">ConnectFuture</span> <span class="n">future</span>
<span class="o">=</span> <span class="n">connector</span><span
class="o">.</span><span class="nb">connect</span><span class="p">(</span><span
class="k">new</span> <span class="n">InetSocketAddress</span><span
class="p">(</span><span class="n">HOSTNAME</span><span class="p">,</span> <span
class="n">PORT</span><span class="p">));</span>
- <span class="n">future</span><span class="o">.</span><span
class="n">awaitUninterruptibly</span><span class="p">();</span>
- <span class="n">session</span> <span class="o">=</span> <span
class="n">future</span><span class="o">.</span><span
class="n">getSession</span><span class="p">();</span>
- <span class="n">break</span><span class="p">;</span>
- <span class="p">}</span> <span class="n">catch</span> <span
class="p">(</span><span class="n">RuntimeIoException</span> <span
class="n">e</span><span class="p">)</span> <span class="p">{</span>
- <span class="n">System</span><span class="o">.</span><span
class="n">err</span><span class="o">.</span><span class="n">println</span><span
class="p">(</span><span class="s">"Failed to connect."</span><span
class="p">);</span>
- <span class="n">e</span><span class="o">.</span><span
class="n">printStackTrace</span><span class="p">();</span>
- <span class="n">Thread</span><span class="o">.</span><span
class="nb">sleep</span><span class="p">(</span><span
class="mi">5000</span><span class="p">);</span>
- <span class="p">}</span>
-<span class="p">}</span>
+<span class="k">for</span> <span class="o">(;;)</span> <span class="o">{</span>
+ <span class="k">try</span> <span class="o">{</span>
+ <span class="n">ConnectFuture</span> <span class="n">future</span>
<span class="o">=</span> <span class="n">connector</span><span
class="o">.</span><span class="na">connect</span><span class="o">(</span><span
class="k">new</span> <span class="n">InetSocketAddress</span><span
class="o">(</span><span class="n">HOSTNAME</span><span class="o">,</span> <span
class="n">PORT</span><span class="o">));</span>
+ <span class="n">future</span><span class="o">.</span><span
class="na">awaitUninterruptibly</span><span class="o">();</span>
+ <span class="n">session</span> <span class="o">=</span> <span
class="n">future</span><span class="o">.</span><span
class="na">getSession</span><span class="o">();</span>
+ <span class="k">break</span><span class="o">;</span>
+ <span class="o">}</span> <span class="k">catch</span> <span
class="o">(</span><span class="n">RuntimeIoException</span> <span
class="n">e</span><span class="o">)</span> <span class="o">{</span>
+ <span class="n">System</span><span class="o">.</span><span
class="na">err</span><span class="o">.</span><span
class="na">println</span><span class="o">(</span><span class="s">"Failed
to connect."</span><span class="o">);</span>
+ <span class="n">e</span><span class="o">.</span><span
class="na">printStackTrace</span><span class="o">();</span>
+ <span class="n">Thread</span><span class="o">.</span><span
class="na">sleep</span><span class="o">(</span><span
class="mi">5000</span><span class="o">);</span>
+ <span class="o">}</span>
+<span class="o">}</span>
</pre></div>