tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jayaprakash Ramsaran <jayaprakash.ramsa...@gmail.com>
Subject Re: Error in configuring JDBC Datasource
Date Sun, 14 Nov 2010 14:56:29 GMT
I tried to debug using the below code. To obtain list of all context,
I used the below code. Please review and help

		    System.out.println("Before Context list");
			Context ctx1 = (Context) new InitialContext().lookup("java:comp/env");
			listContext(ctx1, "");
		    System.out.println("After Context list");

	/**
	* Recursively exhaust the JNDI tree
	*/
	private static final void listContext(Context ctx, String indent) {
		try {
		   NamingEnumeration list = ctx.listBindings("");
		   while (list.hasMore()) {
		       Binding item = (Binding) list.next();
		       String className = item.getClassName();
		       String name = item.getName();
		       System.out.println(indent + className + " " + name);
		       Object o = item.getObject();
		       if (o instanceof javax.naming.Context) {
		    listContext((Context) o, indent + " ");
		       }
		   }
		} catch (NamingException ex) {
		   System.out.println("JNDI failure: " + ex);
		   ex.printStackTrace();
		}
	}


I get the below error.

before initialcontext
Before Context list
org.apache.naming.NamingContext jdbc
org.apache.naming.NamingContext jdbc
JNDI failure: javax.naming.NamingException
javax.naming.NamingException
	at org.apache.naming.NamingContext.lookup(NamingContext.java:805)
	at org.apache.naming.NamingContext.lookup(NamingContext.java:140)
	at org.apache.naming.NamingContextBindingsEnumeration.nextElementInternal(NamingContextBindingsEnumeration.java:113)
	at org.apache.naming.NamingContextBindingsEnumeration.next(NamingContextBindingsEnumeration.java:71)
	at com.mybuildingspace.mybuilding.service.delivery.DeliveryServiceImpl.listContext(DeliveryServiceImpl.java:72)
	at com.mybuildingspace.mybuilding.service.delivery.DeliveryServiceImpl.listContext(DeliveryServiceImpl.java:78)
	at com.mybuildingspace.mybuilding.service.delivery.DeliveryServiceImpl.getDeliveryList(DeliveryServiceImpl.java:38)
	at com.mybuildingspace.mybuilding.web.delivery.DeliveryJqgridDataController.handleRequest(DeliveryJqgridDataController.java:27)
	at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:788)
	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:717)
	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
	at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.jav

On Sun, Nov 14, 2010 at 8:54 AM, Jayaprakash Ramsaran
<jayaprakash.ramsaran@gmail.com> wrote:
> Sever: Springsource tc server-developer-2.1.0/ tomcat-6.0.29.B
> O/S: Windows Vista
> I am using Springsource Tool Suite 2.5.1 and tc server 2.1. I am
> trying to configure a data source to PostgresSql. I followed the steps
> outlined in http://tomcat.apache.org/tomcat-6.0-...tml#PostgreSQL.
>
> 1. I tried to add data source resource in
> $CATALINA_BASE/conf/Catalina/localhost/<myappcontextfilename>.xml file
> similar to the one below. Unfortunately, Springtool suite keeps
> overwriting this file and the <Resource name...> definition is lost.
> Springsuite overwrites it with <Context docBase.... source=..../>
> without resource name definition.
>
>            <Context
> docBase="C:\springsource\tc-server-developer-2.0.4.RELEASE\spring-insight-instance\wtpwebapps\myapp"
> path="/myapp" reloadable="true"
> source="org.eclipse.jst.jee.server:myapp">
>                <Resource name="jdbc/postgres" auth="Container"
> type="javax.sql.DataSource" driverClassName="org.postgresql.Driver"
>                    url="jdbc:postgresql://localhost:5432/myapp"
> username="postgres" password="password" maxActive="20"
>                    maxIdle="10" maxWait="-1"/>
>            </Context>
>
> 2. Then I attempted to define it as a global resource though the
> Apache link warns that it some time does not work. The definition is
> given below.
>
>    <GlobalNamingResources>
>        <Resource auth="Container"
> driverClassName="org.postgresql.Driver" maxActive="20" maxIdle="10"
> maxWait="-1" name="jdbc/postgres" password="password"
> type="javax.sql.DataSource"
> url="jdbc:postgresql://localhost:5432/myapp" username="postgres"/>
>    </GlobalNamingResources>
>
> 3. Then I add the resource reference in web.xml as below.
>
>  <resource-ref>
>    <description>postgreSQL Datasource example</description>
>    <res-ref-name>jdbc/postgres</res-ref-name>
>    <res-type>javax.sql.DataSource</res-type>
>    <res-auth>Container</res-auth>
>  </resource-ref>
>
> 4. But when the spring tc server comes up, it gives the below error.
>
> Nov 13, 2010 10:42:09 PM org.apache.naming.NamingContext lookup
> WARNING: Unexpected exception resolving reference
> java.sql.SQLException
>        at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:201)
>        at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:150)
>        at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:619)
>        at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:562)
>        at org.apache.tomcat.jdbc.pool.ConnectionPool.init(ConnectionPool.java:425)
>        at org.apache.tomcat.jdbc.pool.ConnectionPool.<init>(ConnectionPool.java:130)
>        at org.apache.tomcat.jdbc.pool.DataSourceProxy.createPool(DataSourceProxy.java:93)
>        at org.apache.tomcat.jdbc.pool.DataSourceFactory.createDataSource(DataSourceFactory.java:490)
>        at org.apache.tomcat.jdbc.pool.DataSourceFactory.getObjectInstance(DataSourceFactory.java:219)
>        at org.apache.naming.factory.ResourceFactory.getObjectInstance(ResourceFactory.java:140)
>        at javax.naming.spi.NamingManager.getObjectInstance(NamingManager.java:304)
>        at org.apache.naming.NamingContext.lookup(NamingContext.java:793)
>        at org.apache.naming.NamingContext.lookup(NamingContext.java:140)
>        at org.apache.naming.NamingContext.lookup(NamingContext.java:781)
>        at org.apache.naming.NamingContext.lookup(NamingContext.java:153)
>        at org.apache.catalina.core.NamingContextListener.addResource(NamingContextListener.java:1020)
>        at org.apache.catalina.core.NamingContextListener.createNamingContext(NamingContextListener.java:629)
>        at org.apache.catalina.core.NamingContextListener.lifecycleEvent(NamingContextListener.java:237)
>        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
>        at org.apache.catalina.core.StandardContext.start(StandardContext.java:4540)
>        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
>        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
>        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:568)
>        at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:637)
>        at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:563)
>        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:498)
>        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1282)
>        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
>        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:142)
>        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
>        at org.apache.catalina.core.StandardHost.start(StandardHost.java:807)
>        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
>        at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:445)
>        at org.apache.catalina.core.StandardService.start(StandardService.java:519)
>        at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
>        at org.apache.catalina.startup.Catalina.start(Catalina.java:581)
>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>        at java.lang.reflect.Method.invoke(Method.java:597)
>        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
>        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
> Caused by: java.lang.NullPointerException
>        at java.lang.Class.forName0(Native Method)
>        at java.lang.Class.forName(Class.java:247)
>        at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:195)
>        ... 41 more
> Nov 13, 2010 10:42:09 PM
> org.apache.catalina.core.NamingContextListener addResource
> WARNING: Failed to register in JMX: javax.naming.NamingException
> Nov 13, 2010 10:42:11 PM org.apache.catalina.core.ApplicationContext log
>
> 5. Finally I configured the data source using Data Source Explorer. I
> set-up with the same parameters as given above in
> <GlobalNamingResources>. When I click on Test Connection, I get Ping
> Successful message. When I expand the 'jdbc/postgres' connection in
> Data Source Explorer, I am able to see myapp database.
>
> 6. But when I use the below code snippet to obtain data source, I
> still get the error.
>
>                System.out.println("before initialcontext");
>                InitialContext ctx = null;
>                DataSource ds = null;
>                try {
>                        ctx = new InitialContext();
>                        System.out.println("after initialcontext");
>                        if ( ctx == null ) {
>                                   System.out.println("Uh oh -- no context!");
>                        } else {
>                                        System.out.println("Context
not null");
>                        }
>
>                        ds = (DataSource) ctx.lookup( "java:/comp/env/jdbc/postgres"
);
>                } catch (NamingException nae) {
>                        System.out.println("NAE Message = " + nae.getMessage());
>                        nae.printStackTrace();
>                }
>
>                if ( ds == null ) {
>                   System.out.println("Data source not found!");
>                } else {
>                        System.out.println("Data source found!");
>                }
>
> I get the below error.
>
> before initialcontext
> after initialcontext
> Context not null
> NAE Message = null
> javax.naming.NamingException
>        at org.apache.naming.NamingContext.lookup(NamingContext.java:805)
>        at org.apache.naming.NamingContext.lookup(NamingContext.java:140)
>        at org.apache.naming.NamingContext.lookup(NamingContext.java:781)
>        at org.apache.naming.NamingContext.lookup(NamingContext.java:140)
>        at org.apache.naming.NamingContext.lookup(NamingContext.java:781)
>        at org.apache.naming.NamingContext.lookup(NamingContext.java:140)
>        at org.apache.naming.NamingContext.lookup(NamingContext.java:781)
>        at org.apache.naming.NamingContext.lookup(NamingContext.java:153)
>        at org.apache.naming.SelectorContext.lookup(SelectorContext.java:152)
>        at javax.naming.InitialContext.lookup(InitialContext.java:392)
>        at com.mybuildingspace.mybuilding.service.delivery.DeliveryServiceImpl.getDeliveryList(DeliveryServiceImpl.java:40)
>        at com.mybuildingspace.mybuilding.web.delivery.DeliveryJqgridDataController.handleRequest(DeliveryJqgridDataController.java:27)
>        at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
>        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:788)
>        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:717)
>        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
>        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:549)
>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
>        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
>        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
>        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
>        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
>        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>
> ......
> Data source not found!
>
> 7. Please Help! I have been struggling with this for almost 3 days .
> Thanks in advance for all your help
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org


Mime
View raw message