apache mina: the high-performance protocol construction toolkit
DESCRIPTION
An introduction to Apache MINA, a toolkit for building scalable clients and servers in Java leveraging NIO.TRANSCRIPT
![Page 1: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/1.jpg)
The high-performance protocol construction toolkit.
Apache
Peter Royal <[email protected]>Originally presented at ApacheCon US 2007 in
Atlanta, GA
(if you can’t read this, move closer!)
1Wednesday, November 14, 2007
![Page 2: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/2.jpg)
Hi, I’m Peterhttp://fotap.org/~osi
2Wednesday, November 14, 2007
![Page 3: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/3.jpg)
MINA hacker since Fall 2005
3Wednesday, November 14, 2007
![Page 4: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/4.jpg)
Radar Networkshttp://radarnetworks.com
4Wednesday, November 14, 2007
![Page 5: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/5.jpg)
San Francisco5Wednesday, November 14, 2007
![Page 7: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/7.jpg)
What is MINA?
7Wednesday, November 14, 2007
![Page 8: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/8.jpg)
MINA?8Wednesday, November 14, 2007
![Page 9: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/9.jpg)
MultipurposeInfrastructureNetworkedApplications
http://mina.apache.org
9Wednesday, November 14, 2007
![Page 10: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/10.jpg)
Built on Java NIO
10Wednesday, November 14, 2007
![Page 11: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/11.jpg)
Non-Blocking
11Wednesday, November 14, 2007
![Page 12: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/12.jpg)
Asynchronous
12Wednesday, November 14, 2007
![Page 13: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/13.jpg)
Event-Driven(SEDA!)
13Wednesday, November 14, 2007
![Page 14: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/14.jpg)
Multiple Transports(framework is really agnostic)
14Wednesday, November 14, 2007
![Page 15: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/15.jpg)
TCP
15Wednesday, November 14, 2007
![Page 16: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/16.jpg)
UDP(being re-written for 2.0)
16Wednesday, November 14, 2007
![Page 17: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/17.jpg)
In-VM(great for testing)
17Wednesday, November 14, 2007
![Page 18: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/18.jpg)
Apache Portable Runtime (APR)
(under development, alternate TCP/UDP implementation)
18Wednesday, November 14, 2007
![Page 19: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/19.jpg)
(and more..)
19Wednesday, November 14, 2007
![Page 20: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/20.jpg)
Smartly Designed
20Wednesday, November 14, 2007
![Page 21: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/21.jpg)
Follows Inversion of Control Pattern
(plays nicely with PicoContainer, Spring, etc)
21Wednesday, November 14, 2007
![Page 22: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/22.jpg)
Separation of Concerns
22Wednesday, November 14, 2007
![Page 23: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/23.jpg)
Application Logic
Wire Protocol
Rather than this...23Wednesday, November 14, 2007
![Page 24: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/24.jpg)
Concerns are Separated
Wire Protocol
Application Logic
24Wednesday, November 14, 2007
![Page 25: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/25.jpg)
Stable and Production-Ready
• v1.0 released Fall 2006
• v1.1 released April 2007
• Same API as v1.0 but uses Java 5 Concurrency primitives
• v2.0 this year
• API simplification based on lessons learned
• Performance boosts too!
25Wednesday, November 14, 2007
![Page 26: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/26.jpg)
Many Protocols & Users(here are a few...)
26Wednesday, November 14, 2007
![Page 27: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/27.jpg)
Apache Directory
http://directory.apache.org
LDAPv3, NTP, DNS, DHCP and Kerberos
27Wednesday, November 14, 2007
![Page 28: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/28.jpg)
SubEthaSTMPhttp://subethasmtp.tigris.org/
SMTP
28Wednesday, November 14, 2007
![Page 29: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/29.jpg)
Apache (incubating)
Qpidhttp://cwiki.apache.org/qpid/
Advanced Messaging Queuing Protocol (AMQP)
(from Wall Street!)
29Wednesday, November 14, 2007
![Page 30: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/30.jpg)
Openfirehttp://www.jivesoftware.com/
products/openfire/
XMPP
30Wednesday, November 14, 2007
![Page 31: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/31.jpg)
red5http://www.osflash.org/red5
RTMP(talk to Flash player)
31Wednesday, November 14, 2007
![Page 32: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/32.jpg)
...and more!(maybe you, next time!)
32Wednesday, November 14, 2007
![Page 33: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/33.jpg)
Key Concepts
33Wednesday, November 14, 2007
![Page 34: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/34.jpg)
ByteBuffer
• Core NIO construct
• MINA version that wraps and provides additional convenience methods
• auto-expanding, string encoding
• MINA gives control...
• allocate from the Heap or Stack
• optional Pooling
• (in v2, will be non-pooled and heap-only, as it provides the best performance)
34Wednesday, November 14, 2007
![Page 35: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/35.jpg)
Future
• Represents a function call that completes asynchronously
• Provides blocking functions to retrieve the result
• MINA allows callbacks to be invoked upon completion, so invoking thread can “fire and forget”
• (unlike the Java 5 Future)
35Wednesday, November 14, 2007
![Page 36: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/36.jpg)
IoService
IoHandler
IoFilter
IoFilter
IoFilter
IoProcessor
Reads
Writes
36Wednesday, November 14, 2007
![Page 37: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/37.jpg)
IoHandler
IoProcessor
IoFilter
IoFilter
IoFilter
IoService
Reads
Writes
Two Versions
37Wednesday, November 14, 2007
![Page 38: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/38.jpg)
IoHandler
IoProcessor
IoFilter
IoFilter
IoFilter
IoService
Reads
Writes
IoAcceptor“act as server”
single thread for new connections
38Wednesday, November 14, 2007
![Page 39: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/39.jpg)
IoHandler
IoProcessor
IoFilter
IoFilter
IoFilter
IoService
Reads
Writes
IoConnector“act as client”
39Wednesday, November 14, 2007
![Page 40: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/40.jpg)
IoHandler
IoProcessor
IoFilter
IoFilter
IoFilter
IoService
Reads
Writes
Connection instance is an IoSession
40Wednesday, November 14, 2007
![Page 41: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/41.jpg)
IoHandler
IoProcessor
IoFilter
IoFilter
IoFilter
IoService
Reads
Writes
Handles reads and writes
41Wednesday, November 14, 2007
![Page 42: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/42.jpg)
IoHandler
IoProcessor
IoFilter
IoFilter
IoFilter
IoService
Reads
Writes
Instance count scales with CPU/Load
42Wednesday, November 14, 2007
![Page 43: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/43.jpg)
IoHandler
IoProcessor
IoFilter
IoFilter
IoFilter
IoService
Reads
Writes
Session fixed to an Instance(under review for v2)
43Wednesday, November 14, 2007
![Page 44: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/44.jpg)
IoHandler
IoProcessor
IoFilter
IoFilter
IoFilter
IoService
Reads
Writes
Chain of IoFilter’s
44Wednesday, November 14, 2007
![Page 45: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/45.jpg)
IoHandler
IoProcessor
IoFilter
IoFilter
IoFilter
IoService
Reads
Writes
Per Connection
45Wednesday, November 14, 2007
![Page 46: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/46.jpg)
IoHandler
IoProcessor
IoFilter
IoFilter
IoFilter
IoService
Reads
Writes
Reusable
46Wednesday, November 14, 2007
![Page 47: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/47.jpg)
IoHandler
IoProcessor
IoFilter
IoFilter
IoFilter
IoService
Reads
Writes
Hot Deployable
47Wednesday, November 14, 2007
![Page 48: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/48.jpg)
IoHandler
IoProcessor
IoFilter
IoFilter
IoFilter
IoService
Reads
Writes
Filter all eventsRead / Write / Idle / etc
48Wednesday, November 14, 2007
![Page 49: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/49.jpg)
IoHandler
IoProcessor
IoFilter
IoFilter
IoFilter
IoService
Reads
Writes
Application Logic Lives Here
49Wednesday, November 14, 2007
![Page 50: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/50.jpg)
Large Library of IoFilter’s
50Wednesday, November 14, 2007
![Page 51: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/51.jpg)
Protocol Conversion
• Framework to plug in your own codecs to handle conversion to/from a ByteBuffer
• Existing codecs
• Text-based
• Java Serialization
51Wednesday, November 14, 2007
![Page 52: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/52.jpg)
Blacklist
52Wednesday, November 14, 2007
![Page 53: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/53.jpg)
Logging(great for debugging!)
53Wednesday, November 14, 2007
![Page 54: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/54.jpg)
SSL / TLS
54Wednesday, November 14, 2007
![Page 55: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/55.jpg)
Compression
55Wednesday, November 14, 2007
![Page 56: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/56.jpg)
Read Throttling(write throttling is in 2.0)
56Wednesday, November 14, 2007
![Page 57: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/57.jpg)
Thread Models(a necessary evil)
57Wednesday, November 14, 2007
![Page 58: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/58.jpg)
“single threaded”
58Wednesday, November 14, 2007
![Page 59: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/59.jpg)
One IoProcessor Thread
59Wednesday, November 14, 2007
![Page 60: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/60.jpg)
Scalability sucks
60Wednesday, November 14, 2007
![Page 61: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/61.jpg)
Add more IoProcessor Threads
(at least one per CPU core)
61Wednesday, November 14, 2007
![Page 62: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/62.jpg)
Lowest latencyScales nicely
(connection latency to be addressed in v2)
62Wednesday, November 14, 2007
![Page 63: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/63.jpg)
“multi threaded”
63Wednesday, November 14, 2007
![Page 64: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/64.jpg)
use ExecutorFilter
64Wednesday, November 14, 2007
![Page 65: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/65.jpg)
IoProcessor threads only do reads & writes
(the intent)
65Wednesday, November 14, 2007
![Page 66: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/66.jpg)
Filters execute on a different thread.
(filter location is key!)
66Wednesday, November 14, 2007
![Page 67: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/67.jpg)
Work for a session is serialized(queued per session)
67Wednesday, November 14, 2007
![Page 68: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/68.jpg)
Work is delegated to an Executor
(generally a java.util.concurrent.ThreadPoolExecutor)
68Wednesday, November 14, 2007
![Page 69: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/69.jpg)
Size thread pool to “active” session count
(too much in queue == OOM!Use the Read Throttle filter)
69Wednesday, November 14, 2007
![Page 70: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/70.jpg)
“recommended application pattern”
• use ExecutorFilter as first in chain
• unless you need really low latency
• use ProtocolCodecFilter
• convert the wire protocol into a Java representation
• put application logic into an IoHandler
• store state in the IoSession
• minimum of Java 5
• java.util.concurrent rocks!
70Wednesday, November 14, 2007
![Page 71: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/71.jpg)
Example Time!
71Wednesday, November 14, 2007
![Page 72: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/72.jpg)
Everybody loves a Haiku
72Wednesday, November 14, 2007
![Page 73: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/73.jpg)
This is our Haiku validator73Wednesday, November 14, 2007
![Page 74: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/74.jpg)
Simple Protocol
• Connect
• Send 3 lines of text
• Receive HAIKU! or NOT A HAIKU:
• (plus a little reason why not)
74Wednesday, November 14, 2007
![Page 75: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/75.jpg)
ProtocolCodecFilter + TextLineCodecFactory
Bytes to Java String’s. For free!
75Wednesday, November 14, 2007
![Page 76: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/76.jpg)
ToHaikuIoFilterThree String’s to a Haiku
76Wednesday, November 14, 2007
![Page 77: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/77.jpg)
Filter is very testable(mock objects rock!)
77Wednesday, November 14, 2007
![Page 78: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/78.jpg)
IoHandler is very simpleValidate Haiku, send result
78Wednesday, November 14, 2007
![Page 79: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/79.jpg)
Also very testable79Wednesday, November 14, 2007
![Page 80: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/80.jpg)
Very easy to hook it all up80Wednesday, November 14, 2007
![Page 81: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/81.jpg)
Questions?(I’m here all week!)
81Wednesday, November 14, 2007
![Page 82: Apache MINA: The high-performance protocol construction toolkit](https://reader036.vdocuments.site/reader036/viewer/2022081413/54844d21b4af9ff46c8b4665/html5/thumbnails/82.jpg)
Thank You!82Wednesday, November 14, 2007