Hi Rob,
I can at least confirm this change has made its way into the current trunk. I didn’t have the 2.0.1 source so couldn’t check that version.
The only thing you need to check is if the SpringUnwrapper class has a catch (Throwable) in the public Connection unwrapInternal(Connection conn) method
Cheers Kris
From: Rob [mailto:gis@anonymised.com]
Sent: Friday, March 19, 2010 5:34 PM
To: Kris Geusebroek
Cc: Andrea Aime; geoserver-users@lists.sourceforge.net
Subject: Re: [Geoserver-users] JNDI configuration of datastores in Websphere
Apologies for resurrecting this old thread, but I am seeing this issue, and wondered whether this dirty workaround had made its way into Geoserver 2.0.0 or whether it was fixed as a one off?
I am trying to get Geoserver to reuse existing (hence, proven to work) Data Sources in WAS, but I am seeing the following error messages
[19/03/10 16:25:13:298 GMT] 0000001d SystemOut O 19 Mar 16:25:13 WARN [org.geotools.data.jdbc] - Could not test org.geoserver.data.jdbc.
SpringUnWrapper@anonymised.com for unwrapping abilities agaist com.ibm.ws.rsadapter.jdbc.WSJdbcConnection@anonymised.com
java.lang.NoSuchMethodError: java/sql/Connection.unwrap(Ljava/lang/Class;)Ljava/lang/Object;
at org.springframework.jdbc.support.nativejdbc.Jdbc4NativeJdbcExtractor.doGetNativeConnection(Jdbc4NativeJdbcExtractor.java:44)
at org.springframework.jdbc.support.nativejdbc.NativeJdbcExtractorAdapter.getNativeConnection(NativeJdbcExtractorAdapter.java:99)
at org.geoserver.data.jdbc.SpringUnWrapper.unwrapInternal(SpringUnWrapper.java:95)
at org.geoserver.data.jdbc.SpringUnWrapper.canUnwrap(SpringUnWrapper.java:76)
at org.geotools.data.jdbc.datasource.DataSourceFinder.getUnWrapper(DataSourceFinder.java:125)
at org.geotools.data.oracle.OracleDialect.unwrapConnection(OracleDialect.java:446)
at org.geotools.data.oracle.OracleDialect.setGeometryValue(OracleDialect.java:421)
at org.geotools.jdbc.JDBCDataStore.setPreparedFilterValues(JDBCDataStore.java:2780)
at org.geotools.jdbc.JDBCDataStore.selectSQLPS(JDBCDataStore.java:2758)
at org.geotools.jdbc.JDBCFeatureSource.getReaderInternal(JDBCFeatureSource.java:555)
at org.geotools.jdbc.JDBCFeatureStore.getReaderInternal(JDBCFeatureStore.java:209)
at org.geotools.data.store.ContentFeatureSource.getReader(ContentFeatureSource.java:481)
at org.geotools.data.store.ContentFeatureCollection.iterator(ContentFeatureCollection.java:253)
at org.geoserver.feature.RetypingFeatureCollection.iterator(RetypingFeatureCollection.java:47)
at org.geotools.renderer.lite.StreamingRenderer.drawOptimized(StreamingRenderer.java:1796)
at org.geotools.renderer.lite.StreamingRenderer.processStylers(StreamingRenderer.java:1730)
at org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:675)
at org.geotools.renderer.shape.ShapefileRenderer.renderWithStreamingRenderer(ShapefileRenderer.java:1519)
at org.geotools.renderer.shape.ShapefileRenderer.paint(ShapefileRenderer.java:1367)
at org.geotools.renderer.shape.ShapefileRenderer.paint(ShapefileRenderer.java:270)
at org.vfny.geoserver.wms.responses.DefaultRasterMapProducer.produceMap(DefaultRasterMapProducer.java:385)
at org.vfny.geoserver.wms.responses.GetMapResponse.execute(GetMapResponse.java:421)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1473)
[19/03/10 16:25:13:298 GMT] 0000001d SystemOut O 19 Mar 16:25:13 DEBUG [org.geotools.jdbc] - CLOSE CONNECTION
[19/03/10 16:25:13:301 GMT] 0000001d SystemOut O 19 Mar 16:25:13 ERROR [org.geotools.rendering] - java.io.IOException
java.lang.RuntimeException: java.io.IOException
at org.geotools.data.store.ContentFeatureCollection.iterator(ContentFeatureCollection.java:256)
at org.geoserver.feature.RetypingFeatureCollection.iterator(RetypingFeatureCollection.java:47)
at org.geotools.renderer.lite.StreamingRenderer.drawOptimized(StreamingRenderer.java:1796)
at org.geotools.renderer.lite.StreamingRenderer.processStylers(StreamingRenderer.java:1730)
at org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:675)
at org.geotools.renderer.shape.ShapefileRenderer.renderWithStreamingRenderer(ShapefileRenderer.java:1519)
at org.geotools.renderer.shape.ShapefileRenderer.paint(ShapefileRenderer.java:1367)
at org.geotools.renderer.shape.ShapefileRenderer.paint(ShapefileRenderer.java:270)
at org.vfny.geoserver.wms.responses.DefaultRasterMapProducer.produceMap(DefaultRasterMapProducer.java:385)
at org.vfny.geoserver.wms.responses.GetMapResponse.execute(GetMapResponse.java:421)
at org.geoserver.ows.adapters.ResponseAdapter.getMimeType(ResponseAdapter.java:48)
at org.geoserver.ows.Dispatcher.response(Dispatcher.java:692)
Caused by: java.io.IOException
at org.geotools.jdbc.JDBCFeatureSource.getReaderInternal(JDBCFeatureSource.java:568)
at org.geotools.jdbc.JDBCFeatureStore.getReaderInternal(JDBCFeatureStore.java:209)
at org.geotools.data.store.ContentFeatureSource.getReader(ContentFeatureSource.java:481)
at org.geotools.data.store.ContentFeatureCollection.iterator(ContentFeatureCollection.java:253)
… 71 more
Caused by: java.sql.SQLException: Could not obtain native oracle connection for class com.ibm.ws.rsadapter.jdbc.WSJdbcConnection
at org.geotools.data.oracle.OracleDialect.unwrapConnection(OracleDialect.java:458)
at org.geotools.data.oracle.OracleDialect.setGeometryValue(OracleDialect.java:421)
at org.geotools.jdbc.JDBCDataStore.setPreparedFilterValues(JDBCDataStore.java:2780)
at org.geotools.jdbc.JDBCDataStore.selectSQLPS(JDBCDataStore.java:2758)
at org.geotools.jdbc.JDBCFeatureSource.getReaderInternal(JDBCFeatureSource.java:555)
… 74 more
[19/03/10 16:25:13:301 GMT] 0000001d SystemOut O 19 Mar 16:25:13 DEBUG [org.geotools.rendering] - Style cache hit ratio: NaN , hits 0, requests 0
[19/03/10 16:25:13:301 GMT] 0000001d SystemOut O 19 Mar 16:25:13 DEBUG [org.geotools.renderer.shape] - Style cache hit ratio: NaN , hits 0, requests 0
[19/03/10 16:25:13:304 GMT] 0000001d SystemOut O 19 Mar 16:25:13 ERROR [org.geoserver.ows] -
org.vfny.geoserver.wms.WmsException: org.vfny.geoserver.wms.WmsException: Rendering process failed
at org.vfny.geoserver.wms.responses.GetMapResponse.execute(GetMapResponse.java:442)
at org.geoserver.ows.adapters.ResponseAdapter.getMimeType(ResponseAdapter.java:48)
at org.geoserver.ows.Dispatcher.response(Dispatcher.java:692)
at org.geoserver.ows.Dispatcher.handleRequestInternal(Dispatcher.java:213)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:45)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:820)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:755)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:396)
at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:350)
Caused by: org.vfny.geoserver.wms.WmsException: Rendering process failed
at org.vfny.geoserver.wms.responses.DefaultRasterMapProducer.produceMap(DefaultRasterMapProducer.java:409)
at org.vfny.geoserver.wms.responses.GetMapResponse.execute(GetMapResponse.java:421)
… 62 more
Caused by: java.lang.Exception: Exception rendering layer FeatureCollectionMapLayer[ roadds, VISIBLE, UNSELECTED, style=StyleImpl[ name=roadareas], data=org.vfny.geoserver.global.GeoServerFeatureLocking@anonymised.com, query=Query:
feature type: roadds
filter: [Filter.INCLUDE AND Filter.INCLUDE]
[properties: ALL ]]
at org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:679)
at org.geotools.renderer.shape.ShapefileRenderer.renderWithStreamingRenderer(ShapefileRenderer.java:1519)
at org.geotools.renderer.shape.ShapefileRenderer.paint(ShapefileRenderer.java:1367)
at org.geotools.renderer.shape.ShapefileRenderer.paint(ShapefileRenderer.java:270)
at org.vfny.geoserver.wms.responses.DefaultRasterMapProducer.produceMap(DefaultRasterMapProducer.java:385)
… 63 more
Caused by: java.lang.RuntimeException: java.io.IOException
at org.geotools.data.store.ContentFeatureCollection.iterator(ContentFeatureCollection.java:256)
at org.geoserver.feature.RetypingFeatureCollection.iterator(RetypingFeatureCollection.java:47)
at org.geotools.renderer.lite.StreamingRenderer.drawOptimized(StreamingRenderer.java:1796)
at org.geotools.renderer.lite.StreamingRenderer.processStylers(StreamingRenderer.java:1730)
at org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:675)
… 67 more
Caused by: java.io.IOException
at org.geotools.jdbc.JDBCFeatureSource.getReaderInternal(JDBCFeatureSource.java:568)
at org.geotools.jdbc.JDBCFeatureStore.getReaderInternal(JDBCFeatureStore.java:209)
at org.geotools.data.store.ContentFeatureSource.getReader(ContentFeatureSource.java:481)
at org.geotools.data.store.ContentFeatureCollection.iterator(ContentFeatureCollection.java:253)
… 71 more
Caused by: java.sql.SQLException: Could not obtain native oracle connection for class com.ibm.ws.rsadapter.jdbc.WSJdbcConnection
at org.geotools.data.oracle.OracleDialect.unwrapConnection(OracleDialect.java:458)
at org.geotools.data.oracle.OracleDialect.setGeometryValue(OracleDialect.java:421)
at org.geotools.jdbc.JDBCDataStore.setPreparedFilterValues(JDBCDataStore.java:2780)
at org.geotools.jdbc.JDBCDataStore.selectSQLPS(JDBCDataStore.java:2758)
at org.geotools.jdbc.JDBCFeatureSource.getReaderInternal(JDBCFeatureSource.java:555)
… 74 more
[19/03/10 16:25:13:509 GMT] 0000001d LocalTranCoor W WLTC0033W: Resource jdbc/OSM01DS rolled back in cleanup of LocalTransactionContainment.
[19/03/10 16:25:13:517 GMT] 0000001d LocalTranCoor W WLTC0032W: One or more local transaction resources were rolled back during the cleanup of a LocalTransactionContainment.
Any advice gratefully accepted!
Rob
On 16 July 2009 10:59, Kris Geusebroek <kgeusebroek@anonymised.com> wrote:
Problem Solved!!
Reason for this strange behaviour was not that the websphere specific classes were not found on the classpath eventually.
Problem was that in the SpringUnWrapper class all extractors were tried and the Jdbc4NativeJdbcExtractor was throwing a NoSuchMethodError (it tries to unwrap the connection using a jdk6 specific method called ‘unwrap’ on the connection class.)
This prevents the SpringUnwrapper class to try the other configured extractors.
So my dirty workaround solution for now is I changed the SpringUnwrapper class to catch a Throwable instead of the Exception so the unwrapper can continue it’s work.
Cheers Kris
-----Original Message-----
From: Andrea Aime [mailto:aaime@anonymised.com…]
Sent: Friday, July 10, 2009 1:12 PM
To: Kris Geusebroek
Cc: Christian Müller; geoserver-users@anonymised.com.sourceforge.net
Subject: Re: [Geoserver-users] JNDI configuration of datastores in Websphere
Kris Geusebroek ha scritto:
Hi Andrea,
I had a look in the classloader view of the websphere console and could not find this class.
So I think that’s the cause.
I’m using websphere 6.1.
I did a bit of searching and I think the class must be available in rsadaptersspi.jar. Can you confirm that?
And is it possible to just add it to the websphere lib directory?
I have no idea in either case, never used WebSphere
Cheers
Andrea
–
Andrea Aime
OpenGeo - http://opengeo.org
Expert service straight from the developers.
Enter the BlackBerry Developer Challenge
This is your chance to win up to $100,000 in prizes! For a limited time,
vendors submitting new applications to BlackBerry App World™ will have
the opportunity to enter the BlackBerry Developer Challenge. See full prize
details at: http://p.sf.net/sfu/Challenge
Geoserver-users mailing list
Geoserver-users@anonymised.comsts.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-users