<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" /><title>Main xref</title>
<link type="text/css" rel="stylesheet" href="../../../../../stylesheet.css" />
</head>
<body>
<div id="overview"><a href="../../../../../../apidocs/org/apache/mina/examples/echoserver/Main.html">View Javadoc</a></div><pre>

<a name="1" href="#1">1</a>   <em class="comment">/*</em>
<a name="2" href="#2">2</a>   <em class="comment"> *   @(#) $Id: Main.java 210062 2005-07-11 03:52:38Z trustin $</em>
<a name="3" href="#3">3</a>   <em class="comment"> *</em>
<a name="4" href="#4">4</a>   <em class="comment"> *   Copyright 2004 The Apache Software Foundation</em>
<a name="5" href="#5">5</a>   <em class="comment"> *</em>
<a name="6" href="#6">6</a>   <em class="comment"> *   Licensed under the Apache License, Version 2.0 (the "License");</em>
<a name="7" href="#7">7</a>   <em class="comment"> *   you may not use this file except in compliance with the License.</em>
<a name="8" href="#8">8</a>   <em class="comment"> *   You may obtain a copy of the License at</em>
<a name="9" href="#9">9</a>   <em class="comment"> *</em>
<a name="10" href="#10">10</a>  <em class="comment"> *       <a href="http://www.apache.org/licenses/LICENSE-2.0" target="alexandria_uri">http://www.apache.org/licenses/LICENSE-2.0</a></em>
<a name="11" href="#11">11</a>  <em class="comment"> *</em>
<a name="12" href="#12">12</a>  <em class="comment"> *   Unless required by applicable law or agreed to in writing, software</em>
<a name="13" href="#13">13</a>  <em class="comment"> *   distributed under the License is distributed on an "AS IS" BASIS,</em>
<a name="14" href="#14">14</a>  <em class="comment"> *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</em>
<a name="15" href="#15">15</a>  <em class="comment"> *   See the License for the specific language governing permissions and</em>
<a name="16" href="#16">16</a>  <em class="comment"> *   limitations under the License.</em>
<a name="17" href="#17">17</a>  <em class="comment"> *</em>
<a name="18" href="#18">18</a>  <em class="comment"> */</em>
<a name="19" href="#19">19</a>  <strong>package</strong> <a href="../../../../../org/apache/mina/examples/echoserver/package-summary.html">org.apache.mina.examples.echoserver</a>;
<a name="20" href="#20">20</a>  
<a name="21" href="#21">21</a>  <strong>import</strong> org.apache.mina.common.TransportType;
<a name="22" href="#22">22</a>  <strong>import</strong> org.apache.mina.examples.echoserver.ssl.BogusSSLContextFactory;
<a name="23" href="#23">23</a>  <strong>import</strong> org.apache.mina.io.IoAcceptor;
<a name="24" href="#24">24</a>  <strong>import</strong> org.apache.mina.io.filter.IoLoggingFilter;
<a name="25" href="#25">25</a>  <strong>import</strong> org.apache.mina.io.filter.SSLFilter;
<a name="26" href="#26">26</a>  <strong>import</strong> org.apache.mina.registry.Service;
<a name="27" href="#27">27</a>  <strong>import</strong> org.apache.mina.registry.ServiceRegistry;
<a name="28" href="#28">28</a>  <strong>import</strong> org.apache.mina.registry.SimpleServiceRegistry;
<a name="29" href="#29">29</a>  
<a name="30" href="#30">30</a>  <em>/**<em>*</em></em>
<a name="31" href="#31">31</a>  <em> * (&lt;b>Entry point&lt;/b>) Echo server</em>
<a name="32" href="#32">32</a>  <em> * </em>
<a name="33" href="#33">33</a>  <em> * @author Trustin Lee (trustin@apache.org)</em>
<a name="34" href="#34">34</a>  <em> * @version $Rev: 210062 $, $Date: 2005-07-11 12:52:38 +0900 $</em>
<a name="35" href="#35">35</a>  <em> */</em>
<a name="36" href="#36">36</a>  <strong>public</strong> <strong>class</strong> <a href="../../../../../org/apache/mina/examples/echoserver/Main.html">Main</a>
<a name="37" href="#37">37</a>  {
<a name="38" href="#38">38</a>      <em>/**<em>* Choose your favorite port number. */</em></em>
<a name="39" href="#39">39</a>      <strong>private</strong> <strong>static</strong> <strong>final</strong> <strong>int</strong> PORT = 8080;
<a name="40" href="#40">40</a>      
<a name="41" href="#41">41</a>      <em>/**<em>* Set this to true if you want to make the server SSL */</em></em>
<a name="42" href="#42">42</a>      <strong>private</strong> <strong>static</strong> <strong>final</strong> <strong>boolean</strong> USE_SSL = false;
<a name="43" href="#43">43</a>  
<a name="44" href="#44">44</a>      <strong>public</strong> <strong>static</strong> <strong>void</strong> main( String[] args ) throws Exception
<a name="45" href="#45">45</a>      {
<a name="46" href="#46">46</a>          ServiceRegistry registry = <strong>new</strong> SimpleServiceRegistry();
<a name="47" href="#47">47</a>          
<a name="48" href="#48">48</a>          <em class="comment">// Add SSL filter if SSL is enabled.</em>
<a name="49" href="#49">49</a>          <strong>if</strong>( USE_SSL )
<a name="50" href="#50">50</a>          {
<a name="51" href="#51">51</a>              addSSLSupport( registry );
<a name="52" href="#52">52</a>          }
<a name="53" href="#53">53</a>          
<a name="54" href="#54">54</a>          addLogger( registry );
<a name="55" href="#55">55</a>          
<a name="56" href="#56">56</a>          <em class="comment">// Bind</em>
<a name="57" href="#57">57</a>          Service service = <strong>new</strong> Service( <span class="string">"echo"</span>, TransportType.SOCKET, PORT );
<a name="58" href="#58">58</a>          registry.bind( service, <strong>new</strong> EchoProtocolHandler() );
<a name="59" href="#59">59</a>  
<a name="60" href="#60">60</a>          System.out.println( <span class="string">"Listening on port "</span> + PORT );
<a name="61" href="#61">61</a>      }
<a name="62" href="#62">62</a>  
<a name="63" href="#63">63</a>      <strong>private</strong> <strong>static</strong> <strong>void</strong> addSSLSupport( ServiceRegistry registry )
<a name="64" href="#64">64</a>          throws Exception
<a name="65" href="#65">65</a>      {
<a name="66" href="#66">66</a>          SSLFilter sslFilter =
<a name="67" href="#67">67</a>              <strong>new</strong> SSLFilter( BogusSSLContextFactory.getInstance( <strong>true</strong> ) );
<a name="68" href="#68">68</a>          IoAcceptor acceptor = registry.getIoAcceptor( TransportType.SOCKET );
<a name="69" href="#69">69</a>          acceptor.getFilterChain().addLast( <span class="string">"sslFilter"</span>, sslFilter );
<a name="70" href="#70">70</a>          System.out.println( <span class="string">"SSL ON"</span> );
<a name="71" href="#71">71</a>      }
<a name="72" href="#72">72</a>      
<a name="73" href="#73">73</a>      <strong>private</strong> <strong>static</strong> <strong>void</strong> addLogger( ServiceRegistry registry )
<a name="74" href="#74">74</a>      {
<a name="75" href="#75">75</a>          IoAcceptor acceptor = registry.getIoAcceptor( TransportType.SOCKET );
<a name="76" href="#76">76</a>          acceptor.getFilterChain().addLast( <span class="string">"logger"</span>, <strong>new</strong> IoLoggingFilter() );
<a name="77" href="#77">77</a>          System.out.println( <span class="string">"Logging ON"</span> );
<a name="78" href="#78">78</a>      }
<a name="79" href="#79">79</a>  }
</pre>
<hr/><div id="footer">This page was automatically generated by <a href="http://maven.apache.org/">Maven</a></div></body>
</html>

