You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-user@axis.apache.org by Ron Reynolds <Ro...@RonReynolds.com> on 2005/12/09 16:06:29 UTC

Re: How to get database connection in my service via connection pool

this code won't work:

> 	private static ThreadLocal tm_app = new ThreadLocal() {
>         protected synchronized Object getTMApp() {
>             return _app ;
>         }
>     };

because ThreadLocal doesn't define a getTMApp() method (the only way you could
invoke this method through the tm_app ref is through reflection).  my guess is
that you meant for this to be initialValue() (which is defined in
ThreadLocal), tho i think that might not be a good idea either...

if you're storing the app in a static within your CtuAxisServlet (i.e., if all
threads are using the same instance of Application) then why have a
ThreadLocal at all?  why not just have

public class CtuAxisServlet ... {
  ...
  public static Application getApplication() { return _app; }
  ...
}
?

and this raises the question - will there really be more than 1 Application
instance at a time (within the same JVM)?  if not it makes sense that it would
be a singelton which greatly simplifies this problem.



>>  use a static ThreadLocal (singleton) to hold the
>> connection and thus associate a Connection with the thread - the same thread
>> will be used to call the service handler at which point it can call
>> MyThreadSpecificConnectionHolder.get() to get the connection assigned to the
>> thread back out
>>
>
> Thanks for your suggestion.
> My servlet is like the following:
> -----------------------------------------------------------------------------------------------------------
> public class CtuAxisServlet extends AxisServlet {
> 	private static Application _app = null;
>
> 	public CtuAxisServlet() {
> 		super();
>     }
>
> 	public void init() throws javax.servlet.ServletException {
> 		super.init();
> 		ServletContext sContext = this.getServletContext();
>         	_app = (Application) sContext.getAttribute("Application");
> 	}
>
>
> 	private static ThreadLocal tm_app = new ThreadLocal() {
>         protected synchronized Object getTMApp() {
>             return _app ;
>         }
>     };
> }
> -----------------------------------------------------------------------------------------------------------
> A method name getConnection is encapsulated in _app object which is used
> to get a data connection from my connection pool.
>
> Right now , I still don't know how to get this _app object in my service
> class(A java class which is deployed onto axis as my web service).
> Could you please explain more to me ? Thanks !
>
> Ken
> --
> ¬ãµo³¡             ­J­««Â             Ken Hu          ken@mmti.com.tw
>
> ©sµØ¬ì§ÞªÑ¥÷¦³­­¤½¥q
> http://www.mmti.com.tw
>
> °ª¶¯É]804¹ª¤s°Ï½¬®ü¸ô70¸¹
> °ê¥ß¤¤¤s¤j¾Ç³Ð·s¨|¦¨¤¤¤ß511«Ç
>
> ¹q¸Ü      07-5253020
> ¶Ç¯u      07-5252165
> ¦æ°Ê      0937083880
>
>