1

gis.stackexchange で質問: https://gis.stackexchange.com/questions/23412/could-not-obtain-native-oracle-connection

「ネイティブOracle接続を取得できませんでした」というエラーの原因と解決方法を知っている人はいますか?

私はGeoTools 2.7.4、Oracle 11g DB、ojdbc14.jar、およびTomcat 6で次のような単純なJavaコードを使用しています:

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());

そして私の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"/>

そして、私は常に「ネイティブOracle接続を取得できませんでした」というエラーを受け取ります:

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

10g DB に接続しようとしましたが、ojdbc6 を使用してみましたが、常に同じ結果で終了します。

奇妙なことに、を置き換えるgetBounds()size()機能します。

4

0 に答える 0