title: JNDI/Tomcat no appropriate service handler found even the application still working
body: <p>I have a Spring application running on vFabric tc server which extended from Tomcat 7. Current application has about three data sources need to change to JNDI. I have put the connection pool in to <code>Server/context.xml</code> and call JNDI service in <code>web.xml</code> and <code>applicationContext.xml</code>. </p>
  
  <p>The problem comes when start the application, there are exceptions thrown when Spring initializing framework servlet as this:</p>
  
  <pre><code>INFO: Initializing Spring FrameworkServlet 'MyAppName'
  Feb 3, 2013 7:34:38 PM org.apache.catalina.startup.HostConfig deployDirectory
  INFO: Deploying web application directory D:\STS_3.1\vfabric-tc-server-developer-2.7.2.RELEASE\baseInstance\webapps\manager
  Feb 3, 2013 7:35:08 PM org.apache.catalina.startup.HostConfig deployDirectory
  INFO: Deploying web application directory D:\STS_3.1\vfabric-tc-server-developer-2.7.2.RELEASE\baseInstance\webapps\ROOT
  Feb 3, 2013 7:35:09 PM org.apache.naming.NamingContext lookup
  WARNING: Unexpected exception resolving reference
  java.sql.SQLException: Listener refused the connection with the following error:
  ORA-12519, TNS:no appropriate service handler found
  
  at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:412)
  at oracle.jdbc.driver.PhysicalConnection.&lt;init&gt;(PhysicalConnection.java:531)
  at oracle.jdbc.driver.T4CConnection.&lt;init&gt;(T4CConnection.java:221)
  at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:32)
  at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:503)
  at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:278)
  at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:182)
  at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:699)
  at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:631)
  at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:485)
  at org.apache.tomcat.jdbc.pool.ConnectionPool.&lt;init&gt;(ConnectionPool.java:143)
  at org.apache.tomcat.jdbc.pool.DataSourceProxy.pCreatePool(DataSourceProxy.java:116)
  at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:103)
  at org.apache.tomcat.jdbc.pool.DataSourceFactory.createDataSource(DataSourceFactory.java:539)
  at org.apache.tomcat.jdbc.pool.DataSourceFactory.getObjectInstance(DataSourceFactory.java:237)
  at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:143)
  at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)
  at org.apache.naming.NamingContext.lookup(NamingContext.java:843)
  at org.apache.naming.NamingContext.lookup(NamingContext.java:154)
  at org.apache.naming.NamingContext.lookup(NamingContext.java:831)
  at org.apache.naming.NamingContext.lookup(NamingContext.java:168)
  at org.apache.catalina.core.NamingContextListener.addResource(NamingContextListener.java:1061)
  at org.apache.catalina.core.NamingContextListener.createNamingContext(NamingContextListener.java:671)
  at org.apache.catalina.core.NamingContextListener.lifecycleEvent(NamingContextListener.java:270)
  at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
  at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
  at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5173)
  at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
  at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
  at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
  at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:618)
  at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1100)
  at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1618)
  at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
  at java.util.concurrent.FutureTask.run(FutureTask.java:138)
  at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
  at java.lang.Thread.run(Thread.java:662)
  Caused by: oracle.net.ns.NetException: Listener refused the connection with the following error:
  ORA-12519, TNS:no appropriate service handler found
  
  at oracle.net.ns.NSProtocol.connect(NSProtocol.java:385)
  at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1042)
  at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:301)
  ... 38 more
  Feb 3, 2013 7:35:09 PM org.apache.catalina.core.NamingContextListener addResource
  WARNING: Failed to register in JMX: javax.naming.NamingException: Listener refused the connection with the following error:
  ORA-12519, TNS:no appropriate service handler found
  </code></pre>
  
  <p>I have to highlight that there are three JNDI data sources but the <code>no appropriate service handler found</code> exceptions repeatingly thrown about <code>5 times</code>.</p>
  
  <p>But after that the application still runs fine without any issue. </p>
  
  <p>So how come with these exceptions and how to overcome them?</p>