Java 无法获取本机oracle连接
在gis.stackexchange中询问: 有人知道原因以及如何解决“无法获取本机oracle连接”错误吗 我在Tomcat 6上使用GeoTools 2.7.4、oracle 11g DB、ojdbc14.jar和一个简单的java代码,如下所示:Java 无法获取本机oracle连接,java,oracle,tomcat,geotools,Java,Oracle,Tomcat,Geotools,在gis.stackexchange中询问: 有人知道原因以及如何解决“无法获取本机oracle连接”错误吗 我在Tomcat 6上使用GeoTools 2.7.4、oracle 11g DB、ojdbc14.jar和一个简单的java代码,如下所示: Map map = new HashMap(); map.put( "dbtype", "oracle"); map.put( "jndiReferenceName", "java:comp/env/jdbc/GisDS"); OracleNG
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());
和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"/>
我尝试连接到10g DB,我尝试使用ojdbc6,结果总是一样的
奇怪的是,如果我用
size()
替换getBounds()
,它会工作。不熟悉Geotools,但是有什么原因不能使用精简驱动程序吗?我使用精简驱动程序(至少我想我是这样)。上面的context.xml缺少url=“jdbc:oracle:thin:@***”。您有什么收获吗?我发现使用GeoServer连接到Oracle数据存储时也存在同样的问题。它列出了可用的表/视图没有问题,但当我试图计算层的bounds@tomfumb没有,我哪儿也没去。。。我已经在geotools jira()中填写了一个问题,但也没有很好的响应。同时,我正在代码()中创建连接。如果以这种方式创建连接。。。这不是我期望的解决方案,但总比没有好。Oracle JDBC包名称引用的是Java版本,而不是驱动程序版本。获取您正在使用的Oracle数据库和Java版本的最新驱动程序。
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