John, we initiate in our tomcat instance in the following manner:<br><br>&nbsp;&nbsp;&nbsp; protected static MemCachedClient mcc = new MemCachedClient();<br>&nbsp;&nbsp;&nbsp; static {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // get mcache servers<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String[] serverlist = Global.getInstance
().getProperty( &quot;memcached.servers&quot; ).split( &quot;,&quot; );<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // get server weights<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Integer[] weights&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; = new Integer[serverlist.length];<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String[] serverWeights = Global.getInstance
().getProperty( &quot;memcached.servers.weights&quot; ).split( &quot;,&quot; );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for ( int i = 0; i &lt; serverWeights.length; i++ ) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; weights[i] = new Integer( serverWeights[i] );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // get compression threshhold<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int bytes = Integer.parseInt( Global.getInstance().getProperty( &quot;memcached.compress.kbytes&quot; ) );<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // idle time set to 4 hours<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; long maxIdle = 1000 * 60 * 60 * 6;
<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // socket read timeout<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; int readTO = 1000 * 3;<br>&nbsp;&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // initialize the pool for memcache servers<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // see javadocs on this method<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // for tuning the connection pool 
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SockIOPool pool = SockIOPool.getInstance();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pool.setServers( serverlist );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pool.setWeights( weights );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pool.setInitConn( 10 );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pool.setMinConn( 5 );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pool.setMaxConn
( 250 );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pool.setMaintSleep( 30 );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pool.setNagle( false );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pool.setSocketTO( readTO );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pool.setSocketConnectTO( 0 );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pool.setMaxIdle( maxIdle );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; pool.initialize
();<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // no running w/compression for now<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ( bytes &gt; 0 ) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mcc.setCompressEnable( true );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mcc.setCompressThreshold( bytes * 1024 );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; else {
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mcc.setCompressEnable( false );<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br><br>In this class we then have some helper methods to get/put using the mcc object.&nbsp; Hope this helps.<br><br>Greg<br><br><div><span class="gmail_quote">
On 2/6/07, <b class="gmail_sendername">John Navil Joseph</b> &lt;<a href="mailto:navil.john@gmail.com">navil.john@gmail.com</a>&gt; wrote:</span><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Please correct me if I am wrong.<br><br>Ideally there should be a single memcached connection pool available<br>in the web server, and it should be made available to the servlets<br>through the initial context.<br><br>For example this is the way I connect to my MySQL databases, by making
<br>use of a connection that I get from the existing connection pool.<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Context initCtx = new InitialContext();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Context envCtx = (Context) initCtx.lookup(&quot;java:comp/env&quot;);<br><br>&nbsp;&nbsp;&nbsp;&nbsp; DataSource ds = (DataSource)
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;envCtx.lookup(&quot;jdbc/TestDB&quot;);<br><br>&nbsp;&nbsp;&nbsp;&nbsp; Connection conn = ds.getConnection();<br><br>I know it is possible to achieve the same functionality with the<br>SockIOPool as well. But how exactly do I use SockIOPool in the web
<br>server?<br><br>Thanks,<br>John<br><br>On 2/6/07, Gabe Schine &lt;<a href="mailto:gabe.schine@gmail.com">gabe.schine@gmail.com</a>&gt; wrote:<br>&gt; we have been using that combination for a while now:<br>&gt;<br>&gt; about 16 clients (load-balanced web servers) and 1 server. works
<br>&gt; great for us. we are using SockIOPool, as well -- what would you like<br>&gt; to know?<br>&gt;<br>&gt; gabe<br>&gt;<br>&gt;<br>&gt; On Feb 5, 2007, at 9:47 PM, John Navil Joseph wrote:<br>&gt;<br>&gt; &gt; Newbie to memcached here!
<br>&gt; &gt;<br>&gt; &gt; Has anyone been using the java memcached client (available<br>&gt; &gt; @<a href="http://whalin.com">whalin.com</a>) with Apache Tomcat? Just interested in knowing how<br>&gt; &gt; tried and tested/widely deployed the combination is.
<br>&gt; &gt;<br>&gt; &gt; Also some pointers on using the SockIOPool connection pool<br>&gt; &gt; mechanism with Tomcat will be helpful.<br>&gt; &gt;<br>&gt; &gt; Thanks,<br>&gt; &gt; John<br><br></blockquote></div><br><br clear="all">
<br>-- <br>Greg Whalin