<div>Hi,</div>
<div>&nbsp;&nbsp;&nbsp; I use JSP and MySQL to develop .FDO connects these two parts together.</div>
<div>&nbsp;&nbsp;&nbsp; In the software,i use resource service and feature service to search data stored in the MySQL database.Once i run the page for searching.</div>
<div>I will got two sleep process in MySQL.I guess the reason is i forgot to close connections.So i go back to the code to close connections and services.No use.</div>
<div>&nbsp;&nbsp;&nbsp; </div>
<div>Codes here:</div>
<div>
<p>public Vector select(String mapName,String layerName,String layerClassName,String filterString)&nbsp; throws MgException<br>{<br>&nbsp; MgResourceService resService = (MgResourceService)siteConnection.CreateService(MgServiceType.ResourceService);<br>
&nbsp;&nbsp;MgFeatureService featService = (MgFeatureService)siteConnection.CreateService(MgServiceType.FeatureService);<br>&nbsp;&nbsp;<br>&nbsp;&nbsp;MgMap map = new MgMap();<br>&nbsp;&nbsp;map.Open(resService, mapName);</p>
<p>&nbsp;&nbsp;MgLayer layer = getLayerByName(map, layerName);</p>
<p>&nbsp;&nbsp;MgFeatureQueryOptions query = new MgFeatureQueryOptions();</p>
<p>&nbsp;&nbsp;query.SetFilter(filterString);<br>&nbsp;&nbsp;&nbsp;MgResourceIdentifier resId = new MgResourceIdentifier(layer.GetFeatureSourceId());<br>&nbsp;&nbsp;MgFeatureReader featureReader =featService.SelectFeatures(resId, layerClassName, query);<br>
&nbsp;&nbsp;Vector vec=new Vector();<br>&nbsp;&nbsp;&nbsp;while (featureReader.ReadNext())<br>&nbsp;&nbsp;{<br>&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;MgAgfReaderWriter geometryReaderWriter = new MgAgfReaderWriter();<br>&nbsp;&nbsp;&nbsp;String mc = featureReader.GetString(&quot;MC&quot;);<br>&nbsp;&nbsp;&nbsp;long id=featureReader.GetInt64(&quot;FeatId&quot;);<br>
&nbsp;&nbsp;&nbsp;long id1=featureReader.GetInt64(&quot;id&quot;);<br>&nbsp;&nbsp;&nbsp;MgByteReader byteReader = featureReader.GetGeometry(&quot;GEOMETRY&quot;);</p>
<p>&nbsp;&nbsp; MgGeometry geometry = geometryReaderWriter.Read(byteReader);<br>&nbsp;&nbsp;&nbsp;MgPoint point = geometry.GetCentroid();<br>&nbsp;&nbsp;&nbsp;double x = point.GetCoordinate().GetX();<br>&nbsp;&nbsp;&nbsp;double y = point.GetCoordinate().GetY();<br>&nbsp;&nbsp;&nbsp;xy n=new&nbsp; xy(x,y,id,id1,mc);<br>
&nbsp;&nbsp;&nbsp;vec.add(n);<br>&nbsp;&nbsp;&nbsp;geometryReaderWriter.delete();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //close<br>&nbsp;&nbsp;}</p>
<p>&nbsp; resService.delete();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //close<br>&nbsp;&nbsp;featService.delete();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //close<br>&nbsp;&nbsp;map.delete();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//close<br>&nbsp;&nbsp;return vec;&nbsp;</p>
<p>}</p>
<p>out of this function,i closed the connection to the site with &quot;siteConnection.delete();&quot;</p>
<p>Once i run this function ,checking the process of MySQL with &quot;show processlist&quot; in MySQL command shell,i will got two more sleep process,which can not be closed.</p>
<p>original:</p>
<p>mysql&gt; show processlist;<br><br>| Id&nbsp;&nbsp;&nbsp; | User | Host&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | db&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;| Command | Time | State&nbsp; | Info<br>|&nbsp;&nbsp; 1&nbsp;&nbsp; | root&nbsp; | localhost:4955&nbsp; | psd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;| Sleep&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;|&nbsp;&nbsp;&nbsp; 2&nbsp; &nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; | NULL<br>| 193 | root&nbsp; &nbsp;| localhost:3941 | NULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Query&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;|&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp; | NULL&nbsp; | show processlist |<br>
| 194 | root&nbsp; &nbsp;| localhost:3963 | jsof_data | Sleep&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;|&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;| NULL<br>| 195 | root&nbsp; &nbsp;| localhost:3964 | jsof_data | Sleep&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 8&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;| NULL<br><br>2 rows in set (0.00 sec)</p>
<p>ofter used the function:</p>
<p>mysql&gt; show processlist;<br><br>| Id&nbsp;&nbsp;&nbsp; | User | Host&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | db&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;| Command | Time | State&nbsp; | Info<br>|&nbsp;&nbsp; 1&nbsp;&nbsp; | root&nbsp; | localhost:4955&nbsp; | psd&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;| Sleep&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;|&nbsp;&nbsp;&nbsp; 2&nbsp; &nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp; | NULL<br>| 193 | root&nbsp; &nbsp;| localhost:3941 | NULL&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; | Query&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;|&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp; | NULL&nbsp; | show processlist |<br>
| 194 | root&nbsp; &nbsp;| localhost:3963 | jsof_data | Sleep&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;|&nbsp;&nbsp;&nbsp; 4&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;| NULL<br>| 195 | root&nbsp; &nbsp;| localhost:3964 | jsof_data | Sleep&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp; 8&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;| NULL<br>| 196 | root&nbsp; &nbsp;| localhost:3965 | jsof_data | Sleep&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;2&nbsp;&nbsp;&nbsp;|&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;| NULL<br>
| 197 | root&nbsp; &nbsp;| localhost:3966 | jsof_data | Sleep&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;3&nbsp;&nbsp; |&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;| NULL</p>
<p>&nbsp;</p>
<p><br>6 rows in set (0.00 sec)<br><br>i tried to kill the sleep process with the ways as follow:</p>
<p>&lt;%@ page language=&quot;java&quot; import=&quot;java.util.*&quot; pageEncoding=&quot;gb2312&quot;%&gt;<br>&lt;%@ page import=&quot;java.sql.*&quot;%&gt;<br>&lt;%@ page import=&quot;java.util.*&quot;%&gt;<br>&lt;%@ page import=&quot;java.io.*&quot;%&gt;</p>

<p>&lt;%<br>&nbsp;&nbsp;&nbsp;&nbsp; String path = request.getContextPath();<br>&nbsp;&nbsp;&nbsp;&nbsp; String basePath = request.getScheme() + &quot;://&quot;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;+ request.getServerName() + &quot;:&quot; + request.getServerPort()<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; + path + &quot;/&quot;;<br>&nbsp;&nbsp;&nbsp;&nbsp; Class.forName(&quot;com.mysql.jdbc.Driver&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp; String url = &quot;jdbc:mysql://localhost/psd?characterEncoding=utf8&amp;user=root&amp;password=root&quot;;<br>
&nbsp;&nbsp;&nbsp;&nbsp; Connection conn = DriverManager.getConnection(url);<br>&nbsp;&nbsp;&nbsp;&nbsp; Statement stmt = conn.createStatement();<br>&nbsp;&nbsp;&nbsp;&nbsp; Statement stmt2 = conn.createStatement();<br>&nbsp;&nbsp;&nbsp;&nbsp; ResultSet rs = stmt.executeQuery(&quot;show processlist&quot;);<br>
&nbsp;&nbsp;&nbsp;&nbsp; while (rs.next()) {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; String Id = rs.getString(&quot;Id&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;String cmd = rs.getString(&quot;Command&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;String Time = rs.getString(&quot;Time&quot;);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;int i = Integer.parseInt(Time); <br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;if(i&gt;10&amp;&amp;cmd.equals(&quot;Sleep&quot;))&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //Kill the process which has been slept for more than 10&nbsp;seconds<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;stmt2.executeQuery(&quot;kill &quot;+Id);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;else<br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;}<br>&nbsp;&nbsp;&nbsp;&nbsp; rs.close();<br>&nbsp;&nbsp;&nbsp;&nbsp; stmt.close();<br>&nbsp;&nbsp;&nbsp;&nbsp; stmt2.close();<br>&nbsp;&nbsp;&nbsp;&nbsp; conn.close();<br>%&gt;</p>
<p>But i will get &quot;The MySQL has gone away&quot;error message.I have to restart MapGuideServer service to fix this problem.</p>
<p>Can anyhelp me on this problem?</p>
<p>Thanks for your attention:)</p>
<p>Jacky.</p></div>