Hi,

I've got a servlet which uses the GeoTools library to contact a remote
server and parse the XML, it then returns the results to the browser
client.

I've got a button on the client side which initiates the call to the
servlet.  When I click this button the first time, I get an
ClassCastException. However, when I click it a second time everything
works fine!

I don't think this is a problem with GeoTools as it works perfectly
fine when I do a similar thing locally.  My first assumption was that
GWT wasn't finding the necessary classes the first time around, but
had them ready for the second time.  However I've added all the
required jars to my WEB-INF/lib folder and I still get the same
problem.

Something must be happening between the first and second server call
to make it work, but I don't know what it could be.  Maybe GWT is
loading some required class or jar and not telling me about it?

I've included my stack trace and servlet code snippet below, although
I don't know how much use they'll be...

Any help would be appreciated.

Thanks,

Jon


STACK TRACE:

Starting Jetty on port 8888
   [WARN] Exception while dispatching incoming RPC call
com.google.gwt.user.server.rpc.UnexpectedException: Service method
'public abstract java.util.ArrayList
uk.ac.glam.wps.gwtwps.client.OWSRequestService.wpsGetCapabilities(java.lang.String)'
threw an unexpected exception: java.lang.RuntimeException: Parsing
failed for ProviderSite: java.lang.RuntimeException: Unable to set
property: href for eobject: {http://www.opengis.net/ows/1.1}
OnlineResourceType
        at
com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:
378)
        at
com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:
581)
        at
com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:
188)
        at
com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:
224)
        at
com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:
62)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:713)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
        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:
396)
        at org.mortbay.thread.QueuedThreadPool
$PoolThread.run(QueuedThreadPool.java:488)
Caused by: java.lang.RuntimeException: Parsing failed for
ProviderSite: java.lang.RuntimeException: Unable to set property: href
for eobject: {http://www.opengis.net/ows/1.1}OnlineResourceType
        at org.geotools.xml.impl.ParseExecutor.visit(ParseExecutor.java:158)
        at org.geotools.xml.impl.BindingWalker
$BindingExecutionChain.execute(BindingWalker.java:212)
        at org.geotools.xml.impl.BindingWalker.walk(BindingWalker.java:178)
        at
org.geotools.xml.impl.ElementHandlerImpl.endElement(ElementHandlerImpl.java:
222)
        at org.geotools.xml.impl.ParserHandler.endElement(ParserHandler.java:
607)
        at org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown
Source)
        at
org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown
Source)
        at
org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown
Source)
        at org.apache.xerces.impl.XMLDocumentFragmentScannerImpl
$FragmentContentDispatcher.dispatch(Unknown Source)
        at
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
Source)
        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        at org.apache.xerces.parsers.XML11Configuration.parse(Unknown Source)
        at org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
        at org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown Source)
        at org.geotools.xml.Parser.parse(Parser.java:223)
        at org.geotools.xml.Parser.parse(Parser.java:151)
        at
org.geotools.data.wps.response.WPSGetCapabilitiesResponse.<init>(WPSGetCapabilitiesResponse.java:
59)
        at
org.geotools.data.wps.WPS1_0_0$GetCapsRequest.createResponse(WPS1_0_0.java:
110)
        at
org.geotools.data.ows.AbstractWPS.internalIssueRequest(AbstractWPS.java:
419)
        at
org.geotools.data.wps.WebProcessingService.issueRequest(WebProcessingService.java:
231)
        at
org.geotools.data.ows.AbstractWPS.negotiateVersion(AbstractWPS.java:
219)
        at org.geotools.data.ows.AbstractWPS.<init>(AbstractWPS.java:86)
        at
org.geotools.data.wps.WebProcessingService.<init>(WebProcessingService.java:
174)
        at
uk.ac.glam.wps.gwtwps.server.OWSRequestServiceImpl.wpsGetCapabilities(OWSRequestServiceImpl.java:
33)
        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:
562)
        ... 22 more
Caused by: java.lang.RuntimeException: Unable to set property: href
for eobject: {http://www.opengis.net/ows/1.1}OnlineResourceType
        at
org.geotools.xml.AbstractComplexEMFBinding.setProperty(AbstractComplexEMFBinding.java:
286)
        at
org.geotools.xml.AbstractComplexEMFBinding.setProperties(AbstractComplexEMFBinding.java:
211)
        at
org.geotools.xml.AbstractComplexEMFBinding.parse(AbstractComplexEMFBinding.java:
145)
        at org.geotools.xml.impl.ParseExecutor.visit(ParseExecutor.java:149)
        ... 50 more
Caused by: java.lang.ClassCastException: class
org.geotools.util.CommonsConverterFactory
        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.util.Converters.getConverterFactories(Converters.java:
86)
        at org.geotools.util.Converters.factories(Converters.java:184)
        at org.geotools.util.Converters.convert(Converters.java:154)
        at org.geotools.util.Converters.convert(Converters.java:123)
        at
org.geotools.xml.AbstractComplexEMFBinding.convert(AbstractComplexEMFBinding.java:
300)
        at
org.geotools.xml.AbstractComplexEMFBinding.setProperty(AbstractComplexEMFBinding.java:
241)
        ... 53 more
[ERROR] 500 - POST /gwtwps/ows (127.0.0.1) 57 bytes
   Request headers
      Host: 127.0.0.1:8888
      Connection: keep-alive
      User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US)
AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.8 Safari/533.2
      Referer: http://127.0.0.1:8888/gwtwps/hosted.html?gwtwps
      Accept: */*
      Accept-Encoding: gzip,deflate,sdch
      Accept-Language: en-GB,en-US;q=0.8,en;q=0.6
      Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
      Content-Length: 260
      Origin: http://127.0.0.1:8888
      X-GWT-Module-Base: http://127.0.0.1:8888/gwtwps/
      Content-Type: text/x-gwt-rpc; charset=utf-8
      X-GWT-Permutation: HostedMode
   Response headers
      Content-Type: text/plain
com.google.gwt.user.client.rpc.StatusCodeException: The call failed on
the server; see server log for details
        at
com.google.gwt.user.client.rpc.impl.RequestCallbackAdapter.onResponseReceived(RequestCallbackAdapter.java:
192)
        at
com.google.gwt.http.client.Request.fireOnResponseReceived(Request.java:
287)
        at com.google.gwt.http.client.RequestBuilder
$1.onReadyStateChange(RequestBuilder.java:393)
        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.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:
103)
        at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:
71)
        at
com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:
157)
        at
com.google.gwt.dev.shell.BrowserChannel.reactToMessagesWhileWaitingForReturn(BrowserChannel.java:
1713)
        at
com.google.gwt.dev.shell.BrowserChannelServer.invokeJavascript(BrowserChannelServer.java:
165)
        at
com.google.gwt.dev.shell.ModuleSpaceOOPHM.doInvoke(ModuleSpaceOOPHM.java:
120)
        at com.google.gwt.dev.shell.ModuleSpace.invokeNative(ModuleSpace.java:
507)
        at
com.google.gwt.dev.shell.ModuleSpace.invokeNativeObject(ModuleSpace.java:
264)
        at
com.google.gwt.dev.shell.JavaScriptHost.invokeNativeObject(JavaScriptHost.java:
91)
        at com.google.gwt.core.client.impl.Impl.apply(Impl.java)
        at com.google.gwt.core.client.impl.Impl.entry0(Impl.java:188)
        at sun.reflect.GeneratedMethodAccessor10.invoke(Unknown Source)
        at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at com.google.gwt.dev.shell.MethodAdaptor.invoke(MethodAdaptor.java:
103)
        at com.google.gwt.dev.shell.MethodDispatch.invoke(MethodDispatch.java:
71)
        at
com.google.gwt.dev.shell.OophmSessionHandler.invoke(OophmSessionHandler.java:
157)
        at
com.google.gwt.dev.shell.BrowserChannel.reactToMessages(BrowserChannel.java:
1668)
        at
com.google.gwt.dev.shell.BrowserChannelServer.processConnection(BrowserChannelServer.java:
401)
        at
com.google.gwt.dev.shell.BrowserChannelServer.run(BrowserChannelServer.java:
222)
        at java.lang.Thread.run(Thread.java:619)


SERVLET CODE:

public ArrayList<ProcessDescriptor> wpsGetCapabilities(final String
url) {
        System.out.println("In wpsGetCapabilities with url " + url);

        ArrayList<ProcessDescriptor> processDescriptors = new
ArrayList<ProcessDescriptor>();

        WebProcessingService wps;
        try {
                wps = new WebProcessingService(new 
URL("http://localhost:8080/wps/
WebProcessingService?Service=WPS&Request=GetCapabilities"));
                WPSCapabilitiesType capabilities = wps.getCapabilities();

                EList processes = 
capabilities.getProcessOfferings().getProcess();
                for (Iterator<ProcessBriefType> iterator = processes.iterator();
iterator.hasNext();) {
                        ProcessBriefType object = (ProcessBriefType) 
iterator.next();
                        
processDescriptors.add(WPSAdapter.processBriefAdapter(object));
                        System.out.println(object.getIdentifier().getValue());
                }
        } catch (ServiceException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
        } catch (MalformedURLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
        } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
        }

        return processDescriptors;
}

-- 
You received this message because you are subscribed to the Google Groups 
"Google Web Toolkit" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/google-web-toolkit?hl=en.

Reply via email to