|
From: Jody G. <jod...@gm...> - 2011-04-26 17:19:48
|
Stop your debugger right at the error; and look at the class of each object; go up through the hierarchy and if you have *two* DataStoreFactorySpi classes (with different pointer ids); look at those two and check which classloader they came from; and hopefully they will be from different jars or contexts or something? You may be able to force things at the start of your application by quickly creating an instance of several of these classes (while you are in one class loader). I do that at the start of uDig to ensure that things are actually loaded for speed ... Other than that talk to the geomajas guys; they are working in GWT with a great deal of success. -- Jody Garnett On Wednesday, 27 April 2011 at 1:36 AM, Jon Britton wrote: > Hi again, > > I've finally got around to debugging this, but it doesn't make a lot of sense to me. From what I can tell, it's finding the WFS plugin fine, but fails with the ShapefileDataStoreFactory. The problem seems to be the following line in FactoryRegistry: > > final Class<? extends T> factoryClass = factory.getClass().asSubclass(category); > > So, it thinks DataStoreFactorySpi is NOT a superclass of ShapefileDataStoreFactory. I assume this is a version problem as you suggested before... > > Any ideas? > > Thanks, > > Jon > > On 19 April 2011 23:20, Jody Garnett <jod...@gm...> wrote: > > Yeah; looks okay to me as well. Next step would be to step through with a debugger and watch the failure occur. > > -- > > Jody Garnett > > > > On Wednesday, 20 April 2011 at 2:07 AM, Jody Garnett wrote: > > > It still looks like you are in version hell; check out this line: > > > > Caused by: java.lang.ClassCastException: class org.geotools.data.shapefile.ShapefileDataStoreFactory > > > > at java.lang.Class.asSubclass(Class.java:3018) > > > > at org.geotools.factory.FactoryRegistry.register(FactoryRegistry.java:866) > > > > at org.geotools.factory.FactoryRegistry.scanForPlugins(FactoryRegistry.java:773) > > > > at org.geotools.factory.FactoryRegistry.scanForPluginsIfNeeded(FactoryRegistry.java:808) > > > > at org.geotools.factory.FactoryRegistry.getServiceProviders(FactoryRegistry.java:195) > > > > at org.geotools.data.DataAccessFinder.getAvailableDataStores(DataAccessFinder.java:206) > > > > at org.geotools.data.DataStoreFinder.getAvailableDataStores(DataStoreFinder.java:114) > > > > at org.geotools.data.DataStoreFinder.getDataStore(DataStoreFinder.java:85) > > > > at uk.ac.glam.smartwps.server.OWSRequestServiceImpl.wfsGetCapabilities(OWSRequestServiceImpl.java:580) > > > > > > > > > > > > > > > > > > > > > > > > > That is an error coming right out of a class loader check; as the factoryregistry is loading a class from a jar. Can you check your classpath again please? > > > > > > Jody > > > On Tuesday, 19 April 2011 at 11:32 PM, Jon Britton wrote: > > > > Hi Jody, thanks for the reply. > > > > > > > > I upgraded to 52n wps 2.0-RC7 which uses Geotools 2.6.1, and now use the same version for the WFS module. However, I'm still getting a ClassCastException (although it's slightly different). I assume this means it's not finding the WFS plugin? > > > > > > > > Cheers, > > > > > > > > Jon > > > > > > > > com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract uk.ac.glam.smartwps.client.net.WFSGetCapabilitiesResponse uk.ac.glam.smartwps.client.net.OWSRequestService.wfsGetCapabilities(java.lang.String)' threw an unexpected exception: java.lang.ClassCastException: class org.geotools.data.shapefile.ShapefileDataStoreFactory > > > > at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:385) > > > > at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:588) > > > > at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208) > > > > at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248) > > > > at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62) > > > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) > > > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) > > > > at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) > > > > at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362) > > > > at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) > > > > at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) > > > > at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729) > > > > at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) > > > > at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) > > > > at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49) > > > > at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) > > > > at org.mortbay.jetty.Server.handle(Server.java:324) > > > > at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) > > > > at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843) > > > > at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647) > > > > at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) > > > > at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) > > > > at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) > > > > at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488) > > > > Caused by: java.lang.ClassCastException: class org.geotools.data.shapefile.ShapefileDataStoreFactory > > > > at java.lang.Class.asSubclass(Class.java:3018) > > > > at org.geotools.factory.FactoryRegistry.register(FactoryRegistry.java:866) > > > > at org.geotools.factory.FactoryRegistry.scanForPlugins(FactoryRegistry.java:773) > > > > at org.geotools.factory.FactoryRegistry.scanForPluginsIfNeeded(FactoryRegistry.java:808) > > > > at org.geotools.factory.FactoryRegistry.getServiceProviders(FactoryRegistry.java:195) > > > > at org.geotools.data.DataAccessFinder.getAvailableDataStores(DataAccessFinder.java:206) > > > > at org.geotools.data.DataStoreFinder.getAvailableDataStores(DataStoreFinder.java:114) > > > > at org.geotools.data.DataStoreFinder.getDataStore(DataStoreFinder.java:85) > > > > at uk.ac.glam.smartwps.server.OWSRequestServiceImpl.wfsGetCapabilities(OWSRequestServiceImpl.java:580) > > > > 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 com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:569) > > > > ... 22 more > > > > > > > > On 19 April 2011 12:43, Jody Garnett <jod...@gm...> wrote: > > > > > The two will conflict; GeoTools tries to find its plugins on the CLASSPATH; so if GeoTools 2.4.2 is around it will serve to confuse things for 2.7.0. > > > > > > > > > > There is a copy of 52N that uses a modern version of GeoTools; I recommend you upgrade! > > > > > > > > > > Jody > > > > > > > > > > On Tue, Apr 19, 2011 at 9:28 PM, Jon Britton <jon...@go...> wrote: > > > > > Hi, > > > > > > > > > > > > I'm trying to use the Geotools WFS module in my Google Web Toolkit project. Unfortunately, when I try and create my WFSDataStore I get a ClassCastException. Any idea what might cause this? > > > > > > > > > > > > My project uses Maven and Geotools 2.7.0. However, another of my dependencies (52 North WPS client) uses Geotools 2.4.2 so there are some of those jars there too... could this cause problems? > > > > > > > > > > > > My code and the exception are show below. Any help would be greatly appreciated. > > > > > > > > > > > > Thanks! > > > > > > > > > > > > Jon > > > > > > > > > > > > CODE: > > > > > > > > > > > > String url1 = "http://li199-25.members.linode.com:8080/geoserver/ows?service=wfs&version=1.1.0&request=GetCapabilities"; > > > > > > Map<String, String> connectionParameters = new HashMap<String, String>(); > > > > > > connectionParameters.put("WFSDataStoreFactory:GET_CAPABILITIES_URL", url1); > > > > > > > > > > > > try { > > > > > > //WFSDataStoreFactory fact; > > > > > > WFSDataStore data = (WFSDataStore) DataStoreFinder.getDataStore(connectionParameters); > > > > > > String[] typeNames = data.getTypeNames(); > > > > > > ArrayList<WFSFeatureType> wfsLayers = new ArrayList<WFSFeatureType>(); > > > > > > for (int i = 0; i < typeNames.length; i++) { > > > > > > String typeName = typeNames[i]; > > > > > > > > > > > > WFSFeatureType newLayer = new WFSFeatureType(); > > > > > > newLayer.setName(typeName); > > > > > > newLayer.setTitle(data.getFeatureTypeTitle(typeName)); > > > > > > newLayer.setAbstract(data.getFeatureTypeAbstract(typeName)); > > > > > > > > > > > > wfsLayers.add(newLayer); > > > > > > } > > > > > > response.setWFSLayers(wfsLayers); > > > > > > } catch (IOException e) { > > > > > > // TODO Auto-generated catch block > > > > > > e.printStackTrace(); > > > > > > } > > > > > > > > > > > > > > > > > > > > > > > > EXCEPTION: > > > > > > > > > > > > [WARN] Exception while dispatching incoming RPC call > > > > > > com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract uk.ac.glam.smartwps.client.net.WFSGetCapabilitiesResponse uk.ac.glam.smartwps.client.net.OWSRequestService.wfsGetCapabilities(java.lang.String)' threw an unexpected exception: java.lang.ClassCastException > > > > > > at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:385) > > > > > > at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:588) > > > > > > at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208) > > > > > > at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248) > > > > > > at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62) > > > > > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) > > > > > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) > > > > > > at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) > > > > > > at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362) > > > > > > at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) > > > > > > at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) > > > > > > at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729) > > > > > > at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405) > > > > > > at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) > > > > > > at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49) > > > > > > at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) > > > > > > at org.mortbay.jetty.Server.handle(Server.java:324) > > > > > > at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) > > > > > > at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843) > > > > > > at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647) > > > > > > at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) > > > > > > at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) > > > > > > at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) > > > > > > at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488) > > > > > > Caused by: java.lang.ClassCastException > > > > > > at javax.imageio.spi.ServiceRegistry.registerServiceProvider(ServiceRegistry.java:254) > > > > > > at org.geotools.factory.FactoryRegistry.register(FactoryRegistry.java:876) > > > > > > at org.geotools.factory.FactoryRegistry.scanForPlugins(FactoryRegistry.java:786) > > > > > > at org.geotools.factory.FactoryRegistry.getServiceProviders(FactoryRegistry.java:196) > > > > > > at org.geotools.factory.FactoryRegistry.getServiceProviders(FactoryRegistry.java:160) > > > > > > at org.geotools.data.DataStoreFinder.getAvailableDataStores(DataStoreFinder.java:115) > > > > > > at org.geotools.data.DataStoreFinder.getDataStore(DataStoreFinder.java:84) > > > > > > at uk.ac.glam.smartwps.server.OWSRequestServiceImpl.wfsGetCapabilities(OWSRequestServiceImpl.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 com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:569) > > > > > > ... 22 more > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------------------ > > > > > > Benefiting from Server Virtualization: Beyond Initial Workload > > > > > > Consolidation -- Increasing the use of server virtualization is a top > > > > > > priority.Virtualization can reduce costs, simplify management, and improve > > > > > > application availability and disaster protection. Learn more about boosting > > > > > > the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev > > > > > > _______________________________________________ > > > > > > Geotools-gt2-users mailing list > > > > > > Geo...@li... > > > > > > https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------------------ > > > > > Benefiting from Server Virtualization: Beyond Initial Workload > > > > > Consolidation -- Increasing the use of server virtualization is a top > > > > > priority.Virtualization can reduce costs, simplify management, and improve > > > > > application availability and disaster protection. Learn more about boosting > > > > > the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev > > > > > _______________________________________________ > > > > > Geotools-gt2-users mailing list > > > > > Geo...@li... > > > > > https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------------------ > > Benefiting from Server Virtualization: Beyond Initial Workload > > Consolidation -- Increasing the use of server virtualization is a top > > priority.Virtualization can reduce costs, simplify management, and improve > > application availability and disaster protection. Learn more about boosting > > the value of server virtualization. http://p.sf.net/sfu/vmware-sfdev2dev > > _______________________________________________ > > Geotools-gt2-users mailing list > > Geo...@li... > > https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users > > > > |