Take the 2-minute tour ×
Geographic Information Systems Stack Exchange is a question and answer site for cartographers, geographers and GIS professionals. It's 100% free, no registration required.

Anyone knows the the cause and how to resolve the "Could not obtain native oracle connection" error?

I'm using GeoTools 2.7.4, a oracle 11g DB, ojdbc14.jar, and a simple java code on a Tomcat 6 like this:

Map map = new HashMap();
map.put( "dbtype", "oracle");
map.put( "jndiReferenceName", "java:comp/env/jdbc/GisDS");

OracleNGJNDIDataStoreFactory factory = new OracleNGJNDIDataStoreFactory();
log.info("Can process? "+ factory.canProcess(map));
store = factory.createDataStore(map);

SimpleFeatureSource featureSource = store.getFeatureSource(viewName);
log.info(featureSource.getFeatures().getBounds().toString());

And my context.xml:

<Resource name="jdbc/GisDS" auth="Container" type="javax.sql.DataSource" 
    driverClassName="oracle.jdbc.driver.OracleDriver"
    accessToUnderlyingConnectionAllowed="true" 
    username="***" password="***"
    url="***"
    maxActive="25" maxIdle="8" maxWait="10000" 
    removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true" 
    poolPreparedStatements="true" maxOpenPreparedStatements="100"
    validationQuery="SELECT SYSDATE FROM DUAL"/>

And I always get the "Could not obtain native oracle connection" error:

java.lang.RuntimeException: java.io.IOException: Error occured calculating bounds
        at org.geotools.jdbc.JDBCFeatureSource.getBoundsInternal(JDBCFeatureSource.java:485)
        at org.geotools.jdbc.JDBCFeatureStore.getBoundsInternal(JDBCFeatureStore.java:179)
        at org.geotools.data.store.ContentFeatureSource.getBounds(ContentFeatureSource.java:370)
        at org.geotools.data.store.ContentFeatureCollection.getBounds(ContentFeatureCollection.java:274)
        at ***.GisServlet.doGet(GisServlet.java:82)
        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)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
        at java.lang.Thread.run(Thread.java:662)
Caused by: java.io.IOException: Error occured calculating bounds
        at org.geotools.jdbc.JDBCDataStore.getBounds(JDBCDataStore.java:1137)
        at org.geotools.jdbc.JDBCFeatureSource.getBoundsInternal(JDBCFeatureSource.java:478)
        ... 19 more
Caused by: java.sql.SQLException: Could not obtain native oracle connection for class org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper
        at org.geotools.data.oracle.OracleDialect.unwrapConnection(OracleDialect.java:490)
        at org.geotools.data.oracle.OracleDialect.readGeometry(OracleDialect.java:434)
        at org.geotools.data.oracle.OracleDialect.readGeometry(OracleDialect.java:424)
        at org.geotools.data.oracle.OracleDialect.decodeGeometryEnvelope(OracleDialect.java:371)
        at org.geotools.jdbc.JDBCDataStore.getBounds(JDBCDataStore.java:1123)
        ... 20 more

I've tried to connect to a 10g DB, I've tried using the ojdbc6, and I always end with the same result.

The strange is, If I replace the getBounds() with size() it works.

share|improve this question

closed as off topic by iant May 16 '13 at 13:52

Questions on Geographic Information Systems Stack Exchange are expected to relate to geographic information systems within the scope defined by the community. Consider editing the question or leaving comments for improvement if you believe the question can be reworded to fit within the scope. Read more about reopening questions here.If this question can be reworded to fit the rules in the help center, please edit the question.

    
Stackoverflow.com has some real Oracle boffins on it, you may wish to ask there. They're no Geo types but they know lots about Oracle. –  GIS-Jonathan Apr 16 '12 at 11:37
    
@GIS-Jonathan Thanks for the suggestion. At stackoverflow: stackoverflow.com/questions/10173658/… –  Jose Antonio Apr 16 '12 at 13:23

Browse other questions tagged or ask your own question.