Web service methods are meant to be stateless (i.e. no objects are maintained in existence on the server between calls). What you want to do is maintain a collection of proprietary connection objects on the server between calls, and allocate existing connection objects from this pool to each method call (instead of creating a new connection object in each method).
A simple way to do this is to declare your collection of objects as "private static" within the scope of your web service but outside the scope of any method, like this:
public class Service1 : System.Web.Services.WebService
{
private static List<CustomConnection> _connections =
new List<CustomConnection>();
[WebMethod]
public string HelloWorld()
{
return "Hello World";
}
}
and then populate the collection from the web service's startup event (I don't remember what event that is at the moment - I'll be back with it in a second). Any method that needs to use a connection would get a connection object from this list, instead of creating a new one (you'll have to handle the method of allocating connections and marking them as "in use" and so on).
This will work fine if your web service is called frequently (web services usually shut down after 20 minutes of inactivity, which would necessitate rebuilding the connection pool for the next call). If you need to maintain your collection of connections beyond that, check out this article:
http://msdn.microsoft.com/en-us/library/system.web.httpapplicationstate.aspx