<!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 332218 2005-11-10 03:52:42Z 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 The Apache Directory Project (dev@directory.apache.org)</em>
<a name="34" href="#34">34</a>  <em> * @version $Rev: 332218 $, $Date: 2005-11-10 12:52:42 +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>

