Jim, Andrea,<br><br>I updated MapBench to provide test statistics (avg, median, stddev, rms, med + stddev, min, max) and CSV output (tab separator):<br><a href="http://jmmc.fr/%7Ebourgesl/share/java2d-pisces/MapBench/" target="_blank">http://jmmc.fr/~bourgesl/share/java2d-pisces/MapBench/</a><br>

<br><br>Here are the results (OpenJDK8 Ref vs Patched):<br><a href="http://jmmc.fr/~bourgesl/share/java2d-pisces/ref_det.log">http://jmmc.fr/~bourgesl/share/java2d-pisces/ref_det.log</a><br><a href="http://jmmc.fr/~bourgesl/share/java2d-pisces/patch_det.log">http://jmmc.fr/~bourgesl/share/java2d-pisces/patch_det.log</a><br>
<br>



        
        
        
        
        <style>body, div, table, thead, tbody, tfoot, tr, th, td, p { font-family: "Liberation Sans"; font-size: x-small; }</style>
        

<table border="0" cellspacing="0" cols="10" frame="VOID" rules="NONE">
        <colgroup><col width="165"><col width="94"><col width="49"><col width="94"><col width="94"><col width="105"><col width="94"><col width="129"><col width="94"><col width="94"></colgroup>
        <tbody>
                <tr>
                        <td style="border:1px solid rgb(0,0,0)" height="24" width="165" align="LEFT">test</td>
                        <td style="border:1px solid rgb(0,0,0)" width="94" align="LEFT">threads</td>
                        <td style="border:1px solid rgb(0,0,0)" width="49" align="LEFT">ops</td>
                        <td style="border:1px solid rgb(0,0,0)" width="94" align="LEFT">Tavg</td>
                        <td style="border:1px solid rgb(0,0,0)" width="94" align="LEFT">Tmed</td>
                        <td style="border:1px solid rgb(0,0,0)" width="105" align="LEFT">stdDev</td>
                        <td style="border:1px solid rgb(0,0,0)" width="94" align="LEFT">rms</td>
                        <td style="border:1px solid rgb(0,0,0)" width="129" align="LEFT">Med+Stddev</td>
                        <td style="border:1px solid rgb(0,0,0)" width="94" align="LEFT">min</td>
                        <td style="border:1px solid rgb(0,0,0)" width="94" align="LEFT">max</td>
                </tr>
                <tr>
                        <td style="border:1px solid rgb(0,0,0)" height="24" align="LEFT">boulder_17</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">1</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">20</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">180,22%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">181,08%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">1186,01%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">181,17%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">185,92%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">176,35%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">170,36%</td>
                </tr>
                <tr>
                        <td style="border:1px solid rgb(0,0,0)" height="24" align="LEFT">boulder_17</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">2</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">20</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">183,15%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">183,80%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">162,68%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">183,78%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">183,17%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">174,01%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">169,89%</td>
                </tr>
                <tr>
                        <td style="border:1px solid rgb(0,0,0)" height="24" align="LEFT">boulder_17</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">4</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">20</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">216,62%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">218,03%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">349,31%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">218,87%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">226,68%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">172,15%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">167,54%</td>
                </tr>
                <tr>
                        <td style="border:1px solid rgb(0,0,0)" height="24" align="LEFT">shp_alllayers_47</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">1</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">20</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">243,90%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">244,86%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">537,92%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">244,87%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">246,39%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">240,64%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">231,00%</td>
                </tr>
                <tr>
                        <td style="border:1px solid rgb(0,0,0)" height="24" align="LEFT">shp_alllayers_47</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">2</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">20</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">286,42%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">287,07%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">294,87%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">287,07%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">287,23%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">277,19%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">272,23%</td>
                </tr>
                <tr>
                        <td style="border:1px solid rgb(0,0,0)" height="24" align="LEFT">shp_alllayers_47</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">4</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">20</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">303,08%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">302,15%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">168,19%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">301,90%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">295,90%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">462,70%</td>
                        <td style="border:1px solid rgb(0,0,0)" align="RIGHT">282,41%</td>
                </tr>
        </tbody>
</table>
<br><br>PATCH:<br>



        
        
        
        
        <style>body, div, table, thead, tbody, tfoot, tr, th, td, p { font-family: "Liberation Sans"; font-size: x-small; }</style>
        

<table border="0" cellspacing="0" cols="10" frame="VOID" rules="NONE">
        <colgroup><col width="210"><col width="162"><col width="49"><col width="97"><col width="97"><col width="87"><col width="97"><col width="129"><col width="97"><col width="97"></colgroup>
        <tbody>
                <tr>
                        <td height="24" width="210" align="LEFT">test</td>
                        <td width="162" align="LEFT">threads</td>
                        <td width="49" align="LEFT">ops</td>
                        <td width="97" align="LEFT">Tavg</td>
                        <td width="97" align="LEFT">Tmed</td>
                        <td width="87" align="LEFT">stdDev</td>
                        <td width="97" align="LEFT">rms</td>
                        <td width="129" align="LEFT">Med+Stddev</td>
                        <td width="97" align="LEFT">min</td>
                        <td width="97" align="LEFT">max</td>
                </tr>
                <tr>
                        <td height="24" align="LEFT">boulder_17</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">20</td>
                        <td align="RIGHT">110,196</td>
                        <td align="RIGHT">109,244</td>
                        <td align="RIGHT">0,529</td>
                        <td align="RIGHT">109,246</td>
                        <td align="RIGHT">109,773</td>
                        <td align="RIGHT">108,197</td>
                        <td align="RIGHT">129,327</td>
                </tr>
                <tr>
                        <td height="24" align="LEFT">boulder_17</td>
                        <td align="RIGHT">2</td>
                        <td align="RIGHT">40</td>
                        <td align="RIGHT">127,916</td>
                        <td align="RIGHT">127,363</td>
                        <td align="RIGHT">3,899</td>
                        <td align="RIGHT">127,423</td>
                        <td align="RIGHT">131,262</td>
                        <td align="RIGHT">125,262</td>
                        <td align="RIGHT">151,561</td>
                </tr>
                <tr>
                        <td height="24" align="LEFT">boulder_17</td>
                        <td align="RIGHT">4</td>
                        <td align="RIGHT">80</td>
                        <td align="RIGHT">213,085</td>
                        <td align="RIGHT">212,268</td>
                        <td align="RIGHT">14,988</td>
                        <td align="RIGHT">212,796</td>
                        <td align="RIGHT">227,256</td>
                        <td align="RIGHT">155,512</td>
                        <td align="RIGHT">334,407</td>
                </tr>
                <tr>
                        <td height="24" align="LEFT">shp_alllayers_47</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">20</td>
                        <td align="RIGHT">1139,452</td>
                        <td align="RIGHT">1134,858</td>
                        <td align="RIGHT">5,971</td>
                        <td align="RIGHT">1134,873</td>
                        <td align="RIGHT">1140,829</td>
                        <td align="RIGHT">1125,859</td>
                        <td align="RIGHT">1235,746</td>
                </tr>
                <tr>
                        <td height="24" align="LEFT">shp_alllayers_47</td>
                        <td align="RIGHT">2</td>
                        <td align="RIGHT">40</td>
                        <td align="RIGHT">1306,889</td>
                        <td align="RIGHT">1304,598</td>
                        <td align="RIGHT">28,157</td>
                        <td align="RIGHT">1304,902</td>
                        <td align="RIGHT">1332,755</td>
                        <td align="RIGHT">1280,49</td>
                        <td align="RIGHT">1420,351</td>
                </tr>
                <tr>
                        <td height="24" align="LEFT">shp_alllayers_47</td>
                        <td align="RIGHT">4</td>
                        <td align="RIGHT">80</td>
                        <td align="RIGHT">2296,487</td>
                        <td align="RIGHT">2303,81</td>
                        <td align="RIGHT">112,816</td>
                        <td align="RIGHT">2306,57</td>
                        <td align="RIGHT">2416,626</td>
                        <td align="RIGHT">1390,31</td>
                        <td align="RIGHT">2631,455</td>
                </tr>
        </tbody>
</table>
<br><br>REF:<br>



        
        
        
        
        <style>body, div, table, thead, tbody, tfoot, tr, th, td, p { font-family: "Liberation Sans"; font-size: x-small; }</style>
        

<table border="0" cellspacing="0" cols="10" frame="VOID" rules="NONE">
        <colgroup><col width="228"><col width="162"><col width="49"><col width="97"><col width="97"><col width="79"><col width="97"><col width="129"><col width="97"><col width="97"></colgroup>
        <tbody>
                <tr>
                        <td height="24" width="228" align="LEFT">test</td>
                        <td width="162" align="LEFT">threads</td>
                        <td width="49" align="LEFT">ops</td>
                        <td width="97" align="LEFT">Tavg</td>
                        <td width="97" align="LEFT">Tmed</td>
                        <td width="79" align="LEFT">stdDev</td>
                        <td width="97" align="LEFT">rms</td>
                        <td width="129" align="LEFT">Med+Stddev</td>
                        <td width="97" align="LEFT">min</td>
                        <td width="97" align="LEFT">max</td>
                </tr>
                <tr>
                        <td height="24" align="LEFT">boulder_17</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">20</td>
                        <td align="RIGHT">198,591</td>
                        <td align="RIGHT">197,816</td>
                        <td align="RIGHT">6,274</td>
                        <td align="RIGHT">197,916</td>
                        <td align="RIGHT">204,091</td>
                        <td align="RIGHT">190,805</td>
                        <td align="RIGHT">220,319</td>
                </tr>
                <tr>
                        <td height="24" align="LEFT">boulder_17</td>
                        <td align="RIGHT">2</td>
                        <td align="RIGHT">40</td>
                        <td align="RIGHT">234,272</td>
                        <td align="RIGHT">234,09</td>
                        <td align="RIGHT">6,343</td>
                        <td align="RIGHT">234,176</td>
                        <td align="RIGHT">240,433</td>
                        <td align="RIGHT">217,967</td>
                        <td align="RIGHT">257,485</td>
                </tr>
                <tr>
                        <td height="24" align="LEFT">boulder_17</td>
                        <td align="RIGHT">4</td>
                        <td align="RIGHT">80</td>
                        <td align="RIGHT">461,579</td>
                        <td align="RIGHT">462,8</td>
                        <td align="RIGHT">52,354</td>
                        <td align="RIGHT">465,751</td>
                        <td align="RIGHT">515,153</td>
                        <td align="RIGHT">267,712</td>
                        <td align="RIGHT">560,254</td>
                </tr>
                <tr>
                        <td height="24" align="LEFT">shp_alllayers_47</td>
                        <td align="RIGHT">1</td>
                        <td align="RIGHT">20</td>
                        <td align="RIGHT">2779,133</td>
                        <td align="RIGHT">2778,823</td>
                        <td align="RIGHT">32,119</td>
                        <td align="RIGHT">2779,009</td>
                        <td align="RIGHT">2810,943</td>
                        <td align="RIGHT">2709,285</td>
                        <td align="RIGHT">2854,557</td>
                </tr>
                <tr>
                        <td height="24" align="LEFT">shp_alllayers_47</td>
                        <td align="RIGHT">2</td>
                        <td align="RIGHT">40</td>
                        <td align="RIGHT">3743,255</td>
                        <td align="RIGHT">3745,111</td>
                        <td align="RIGHT">83,027</td>
                        <td align="RIGHT">3746,031</td>
                        <td align="RIGHT">3828,138</td>
                        <td align="RIGHT">3549,364</td>
                        <td align="RIGHT">3866,612</td>
                </tr>
                <tr>
                        <td height="24" align="LEFT">shp_alllayers_47</td>
                        <td align="RIGHT">4</td>
                        <td align="RIGHT">80</td>
                        <td align="RIGHT">6960,23</td>
                        <td align="RIGHT">6960,948</td>
                        <td align="RIGHT">189,75</td>
                        <td align="RIGHT">6963,533</td>
                        <td align="RIGHT">7150,698</td>
                        <td align="RIGHT">6432,945</td>
                        <td align="RIGHT">7431,541</td>
                </tr>
        </tbody>
</table>
<br>Linux 64 server vm <br>JVM: -Xms128m -Xmx128m (low mem)<br><br>Laurent<br><br><div class="gmail_quote">2013/4/14 Andrea Aime <span dir="ltr"><<a href="mailto:andrea.aime@geo-solutions.it" target="_blank">andrea.aime@geo-solutions.it</a>></span><br>

<blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div>On Tue, Apr 9, 2013 at 3:02 PM, Laurent Bourgès <span dir="ltr"><<a href="mailto:bourges.laurent@gmail.com" target="_blank">bourges.laurent@gmail.com</a>></span> wrote:<br>

</div></div><div class="gmail_extra"><div class="gmail_quote"><div><div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Dear Java2D members,<br><br>Could someone review the following webrev concerning Java2D Pisces to enhance its performance and reduce its memory footprint (RendererContext stored in thread local or concurrent queue):<br>


<a href="http://jmmc.fr/%7Ebourgesl/share/java2d-pisces/webrev-1/" target="_blank">http://jmmc.fr/~bourgesl/share/java2d-pisces/webrev-1/</a><br>
<br>FYI I fixed file headers in this patch and signed my OCA 3 weeks ago.<br><br>Remaining work:<br>- cleanup (comments ...)<br>- statistics to perform auto-tuning<br>- cache / memory cleanup (SoftReference ?): use hints or System properties to adapt it to use cases<br>



- another problem: fix clipping performance in Dasher / Stroker for segments out of bounds<br><br>Could somebody support me ? ie help me working on these tasks or just to discuss on Pisces algorithm / implementation ?<br>


</blockquote><div><br></div></div></div><div>Hi,</div><div>I would like to express my support for this patch. </div><div>Given that micro-benchmarks have already been run, I took the patch for a spin in a large, real world benchmark instead,</div>


<div>the OSGeo WMS Shootout 2010 benchmark, for which you can see the results here:</div><div><a href="http://www.slideshare.net/gatewaygeomatics.com/wms-performance-shootout-2010" target="_blank">http://www.slideshare.net/gatewaygeomatics.com/wms-performance-shootout-2010</a><br>


</div><div><br></div><div>The presentation is long, but suffice it to say all Java based implementations took quite the beating due to the</div><div>poor scalability of Ductus with antialiased rendering of vector data (for an executive summary just look</div>


<div>at slide 27 and slide 66, where GeoServer, Oracle MapViewer and Constellation SDI were the </div><div>Java based ones)</div><div><br></div><div>I took the same tests and run them again on my machine (different hardware than the tests, don't try to compare</div>


<div>the absolute values), using Oracle JDK 1.7.0_17, OpenJDK 8 (a checkout a couple of weeks old) and the</div><div>same, but with Laurent's patches applied. <br>Here are the results, throughput (in maps generated per second) with the load generator (JMeter) going</div>


<div>up from one client to 64 concurrent clients:</div><div><br></div><div>
        
        
        
        



<table border="0" cellspacing="0" cols="5">
        <colgroup width="111"></colgroup>
        <colgroup width="110"></colgroup>
        <colgroup span="2" width="154"></colgroup>
        <colgroup width="139"></colgroup>
        <tbody><tr>
                <td style="border:1px solid rgb(0,0,0)" height="32" align="LEFT"><b>Threads</b></td>
                <td style="border:1px solid rgb(0,0,0)" align="LEFT"><b>JDK 1.7.0_17</b></td>
                <td style="border:1px solid rgb(0,0,0)" align="LEFT"><b>OpenJDK 8, vanilla</b></td>
                <td style="border:1px solid rgb(0,0,0)" align="LEFT"><b>OpenJDK 8 + pisces renderer improvements</b></td>
                <td style="border:1px solid rgb(0,0,0)" align="LEFT"><b>Pisces renderer performance gain, %</b></td>
        </tr>
        <tr>
                <td style="border:1px solid rgb(0,0,0)" height="16" align="RIGHT">1</td>
                <td style="border:1px solid rgb(0,0,0)" align="RIGHT">13,97</td>
                <td style="border:1px solid rgb(0,0,0)" align="RIGHT">12,43</td>
                <td style="border:1px solid rgb(0,0,0)" align="RIGHT">13,03</td>
                <td style="border:1px solid rgb(0,0,0)" align="RIGHT">4,75%</td>
        </tr>
        <tr>
                <td style="border:1px solid rgb(0,0,0)" height="16" align="RIGHT">2</td>
                <td style="border:1px solid rgb(0,0,0)" align="RIGHT">22,08</td>
                <td style="border:1px solid rgb(0,0,0)" align="RIGHT">20,60</td>
                <td style="border:1px solid rgb(0,0,0)" align="RIGHT">20,77</td>
                <td style="border:1px solid rgb(0,0,0)" align="RIGHT">0,81%</td>
        </tr>
        <tr>
                <td style="border:1px solid rgb(0,0,0)" height="16" align="RIGHT">4</td>
                <td style="border:1px solid rgb(0,0,0)" align="RIGHT">34,36</td>
                <td style="border:1px solid rgb(0,0,0)" align="RIGHT">33,15</td>
                <td style="border:1px solid rgb(0,0,0)" align="RIGHT">33,36</td>
                <td style="border:1px solid rgb(0,0,0)" align="RIGHT">0,62%</td>
        </tr>
        <tr>
                <td style="border:1px solid rgb(0,0,0)" height="16" align="RIGHT">8</td>
                <td style="border:1px solid rgb(0,0,0)" align="RIGHT">39,39</td>
                <td style="border:1px solid rgb(0,0,0)" align="RIGHT">40,51</td>
                <td style="border:1px solid rgb(0,0,0)" align="RIGHT">41,71</td>
                <td style="border:1px solid rgb(0,0,0)" align="RIGHT">2,96%</td>
        </tr>
        <tr>
                <td style="border:1px solid rgb(0,0,0)" height="16" align="RIGHT">16</td>
                <td style="border:1px solid rgb(0,0,0)" align="RIGHT">40,61</td>
                <td style="border:1px solid rgb(0,0,0)" align="RIGHT">44,57</td>
                <td style="border:1px solid rgb(0,0,0)" align="RIGHT">46,98</td>
                <td style="border:1px solid rgb(0,0,0)" align="RIGHT">5,39%</td>
        </tr>
        <tr>
                <td style="border:1px solid rgb(0,0,0)" height="16" align="RIGHT">32</td>
                <td style="border:1px solid rgb(0,0,0)" align="RIGHT">41,41</td>
                <td style="border:1px solid rgb(0,0,0)" align="RIGHT">44,73</td>
                <td style="border:1px solid rgb(0,0,0)" align="RIGHT">48,16</td>
                <td style="border:1px solid rgb(0,0,0)" align="RIGHT">7,66%</td>
        </tr>
        <tr>
                <td style="border:1px solid rgb(0,0,0)" height="16" align="RIGHT">64</td>
                <td style="border:1px solid rgb(0,0,0)" align="RIGHT">37,09</td>
                <td style="border:1px solid rgb(0,0,0)" align="RIGHT">42,19</td>
                <td style="border:1px solid rgb(0,0,0)" align="RIGHT">45,28</td>
                <td style="border:1px solid rgb(0,0,0)" align="RIGHT">7,32%</td>
        </tr>
</tbody></table></div><div><br></div><div>Well, first of all, congratulations to the JDK developers, don't know what changed in JDK 8, but</div><div>GeoServer seems to like it quite a bit :-).</div>
<div>That said, Laurent's patch also gives a visible boost, especially when several concurrent clients are</div><div>asking for the maps.</div><div><br></div><div>Mind, as I said, this is no micro-benchmark, it is a real application loading doing a lot of I/O</div>


<div>(from the operating system file cache), other processing before the data reaches the rendering</div><div>pipeline, and then has to PNG encode the output BufferedImage (PNG encoding being rather</div><div>
expensive), so getting this speedup from just a change in the rendering pipeline is significant.</div><div><br></div><div>Long story short... personally I'd be very happy if this patch was going to be integrated in Java 8 :-)</div>


<div><br></div><div>Cheers</div><div>Andrea</div><div><br></div></div>-- <br><div dir="ltr"><div>==</div><div>GeoServer training in Milan, 6th & 7th June 2013!  Visit <a href="http://geoserver.geo-solutions.it/" style="color:rgb(17,85,204)" target="_blank">http://geoserver.geo-solutions.it</a> for more information.<br>


==<br></div><div><br></div><div>Ing. Andrea Aime </div><div>@geowolf</div><div>Technical Lead</div><div><br></div><div>GeoSolutions S.A.S.</div><div>Via Poggio alle Viti 1187</div><div>55054  Massarosa (LU)</div><div>Italy</div>


<div>phone: +39 0584 962313</div><div>fax: +39 0584 1660272</div><div>mob: +39  339 8844549</div><div><br></div><div><a href="http://www.geo-solutions.it" target="_blank">http://www.geo-solutions.it</a></div><div><a href="http://twitter.com/geosolutions_it" target="_blank">http://twitter.com/geosolutions_it</a></div>


<div><br></div><div>-------------------------------------------------------</div></div>
</div></div>
</blockquote></div><br>