Anyone?
Any advice would really be appreciated.

Especially on storing schemas locally as this may well avoid the contention .

Thanks

Norman

------------------------------
On Fri, Feb 3, 2012 3:26 PM GMT NORMAN MANN wrote:

>Hi All,
> 
>I am using geotools to generate images based on a remote WMS, and a local WFS.
>To increase throughput, I am attempted to make the software multithreaded (in 
>a non application server environment).
>However I think I am getting deadlock (well maybe not deadlock, but the 
>threads seem to be stuck waiting for one of the threads waiting to download 
>XML schemas over the internet).
> 
>On initial startup of WebMapServer object (each thread keeps it's own instance 
>of a WebMapServer for performance - downloading XML schemas in particularly 
>time consuming) it seems to download lots of XML schemas from the 
>getCapabilities document for the WMS.
> 
>Ideally I would like to cache these on the file system, is this possible, if 
>so how? This may alleviate the problem in terms of time (it seems to take a 
>long time) taken to download the various XML schemas. But would be 
>preferential anyway to reduce startup time.
> 
>Secondly each WebMapServer object seems to be waiting on a lock on 
>org.geotools.xml.SchemaFactory.getInstance which is locked by one of the 
>WebMapServer objects. 
>Does this have to be the case, or can I remove this area as a bottle neck? Is 
>this is a bug? I can see that SchemaFactory.getInstance seems to be intended 
>to be thread safe.
> 
>I have pasted the stack of some of the example threads below, and any 
>help/advice would be very much appreciated!!
> 
>Thanks
> 
>Norman
> 
> 
>THREAD with LOCK
> 
>"Piper Processor 3" prio=1 tid=0x0966e9d0 nid=0x3b4f runnable 
>[0xe7c8f000..0xe7c90130]
>        at java.net.SocketInputStream.socketRead0(Native Method)
>        at java.net.SocketInputStream.read(SocketInputStream.java:129)
>        at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
>        at java.io.BufferedInputStream.read1(BufferedInputStream.java:256)
>        at java.io.BufferedInputStream.read(BufferedInputStream.java:313)
>        - locked <0xeabe3e70> (a java.io.BufferedInputStream)
>        at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:606)
>        at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:554)
>        at 
>sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:936)
>        - locked <0xeabe2480> (a sun.net.www.protocol.http.HttpURLConnection)
>        at org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(Unknown 
>Source)
>        at 
>org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(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.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown 
>Source)
>        at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
>        at javax.xml.parsers.SAXParser.parse(SAXParser.java:255)
>        at 
>org.geotools.xml.SchemaFactory.getRealInstance(SchemaFactory.java:305)
>        - locked <0xeb52acf0> (a org.geotools.xml.SchemaFactory)
>        at org.geotools.xml.SchemaFactory.getInstance(SchemaFactory.java:265)
>        - locked <0xef884168> (a java.lang.Class)
>        at 
>org.geotools.xml.handlers.xsi.SchemaHandler.compress(SchemaHandler.java:430)
>        at 
>org.geotools.xml.handlers.xsi.RootHandler.getSchema(RootHandler.java:117)
>        at org.geotools.xml.XSISAXHandler.getSchema(XSISAXHandler.java:257)
>        at 
>org.geotools.xml.SchemaFactory.getRealInstance(SchemaFactory.java:310)
>        - locked <0xeb52acf0> (a org.geotools.xml.SchemaFactory)
>        at org.geotools.xml.SchemaFactory.getInstance(SchemaFactory.java:265)
>        - locked <0xef884168> (a java.lang.Class)
>        at 
>org.geotools.xml.handlers.xsi.SchemaHandler.compress(SchemaHandler.java:385)
>        at 
>org.geotools.xml.handlers.xsi.RootHandler.getSchema(RootHandler.java:117)
>        at org.geotools.xml.XSISAXHandler.getSchema(XSISAXHandler.java:257)
>        at 
>org.geotools.xml.SchemaFactory.getRealInstance(SchemaFactory.java:310)
>        - locked <0xeb52acf0> (a org.geotools.xml.SchemaFactory)
>        at org.geotools.xml.SchemaFactory.getInstance(SchemaFactory.java:265)
>        - locked <0xef884168> (a java.lang.Class)
>        at 
>org.geotools.xml.handlers.xsi.SchemaHandler.compress(SchemaHandler.java:430)
>        at 
>org.geotools.xml.handlers.xsi.RootHandler.getSchema(RootHandler.java:117)
>        at org.geotools.xml.XSISAXHandler.getSchema(XSISAXHandler.java:257)
>        at 
>org.geotools.xml.SchemaFactory.getRealInstance(SchemaFactory.java:310)
>        - locked <0xeb52acf0> (a org.geotools.xml.SchemaFactory)
>        at org.geotools.xml.SchemaFactory.getInstance(SchemaFactory.java:265)
>        - locked <0xef884168> (a java.lang.Class)
>        at 
>org.geotools.xml.handlers.ElementHandlerFactory.startPrefixMapping(ElementHandlerFactory.java:87)
>        at org.geotools.xml.XMLSAXHandler.startElement(XMLSAXHandler.java:370)
>        at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown 
>Source)
>        at 
>org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown 
>Source)
>        at 
>org.apache.xerces.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(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.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown 
>Source)
>        at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
>        at javax.xml.parsers.SAXParser.parse(SAXParser.java:176)
>        at 
>org.geotools.xml.DocumentFactory.getInstance(DocumentFactory.java:133)
>        at 
>org.geotools.data.wms.response.WMSGetCapabilitiesResponse.<init>(WMSGetCapabilitiesResponse.java:54)
>        at 
>org.geotools.data.wms.WMS1_0_0$GetCapsRequest.createResponse(WMS1_0_0.java:231)
>        at 
>org.geotools.data.ows.AbstractOpenWebService.internalIssueRequest(AbstractOpenWebService.java:440)
>        at 
>org.geotools.data.wms.WebMapServer.issueRequest(WebMapServer.java:405)
>        at 
>org.geotools.data.ows.AbstractOpenWebService.negotiateVersion(AbstractOpenWebService.java:240)
>        at 
>org.geotools.data.ows.AbstractOpenWebService.<init>(AbstractOpenWebService.java:95)
>        at 
>org.geotools.data.ows.AbstractOpenWebService.<init>(AbstractOpenWebService.java:81)
>        at org.geotools.data.wms.WebMapServer.<init>(WebMapServer.java:368)
>
> 
>THREADS without lock....
>"Piper Processor 2" prio=1 tid=0x0964bf50 nid=0x3b4e waiting for monitor entry 
>[0xe7d10000..0xe7d10fb0]
>        at org.geotools.xml.SchemaFactory.getInstance(SchemaFactory.java:265)
>        - waiting to lock <0xef884168> (a java.lang.Class)
>        at 
>org.geotools.xml.handlers.ElementHandlerFactory.startPrefixMapping(ElementHandlerFactory.java:87)
>        at org.geotools.xml.XMLSAXHandler.startElement(XMLSAXHandler.java:370)
>        at org.apache.xerces.parsers.AbstractSAXParser.startElement(Unknown 
>Source)
>        at 
>org.apache.xerces.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown 
>Source)
>        at 
>org.apache.xerces.impl.XMLNSDocumentScannerImpl$NSContentDispatcher.scanRootElementHook(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.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown 
>Source)
>        at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
>        at javax.xml.parsers.SAXParser.parse(SAXParser.java:176)
>        at 
>org.geotools.xml.DocumentFactory.getInstance(DocumentFactory.java:133)
>        at 
>org.geotools.data.wms.response.WMSGetCapabilitiesResponse.<init>(WMSGetCapabilitiesResponse.java:54)
>        at 
>org.geotools.data.wms.WMS1_0_0$GetCapsRequest.createResponse(WMS1_0_0.java:231)
>        at 
>org.geotools.data.ows.AbstractOpenWebService.internalIssueRequest(AbstractOpenWebService.java:440)
>        at 
>org.geotools.data.wms.WebMapServer.issueRequest(WebMapServer.java:405)
>        at 
>org.geotools.data.ows.AbstractOpenWebService.negotiateVersion(AbstractOpenWebService.java:240)
>        at 
>org.geotools.data.ows.AbstractOpenWebService.<init>(AbstractOpenWebService.java:95)
>        at 
>org.geotools.data.ows.AbstractOpenWebService.<init>(AbstractOpenWebService.java:81)
>        at org.geotools.data.wms.WebMapServer.<init>(WebMapServer.java:368)
>
>"Piper Processor 1" prio=1 tid=0x0964bdc8 nid=0x3b4d waiting for monitor entry 
>[0xe7d91000..0xe7d92030]
>        at org.geotools.xml.SchemaFactory.getInstance(SchemaFactory.java:208)
>        - waiting to lock <0xef884168> (a java.lang.Class)
>        at 
>org.geotools.xml.handlers.ElementHandlerFactory.startPrefixMapping(ElementHandlerFactory.java:115)
>        at org.geotools.xml.XMLSAXHandler.startElement(XMLSAXHandler.java:383)
>        at org.apache.xerces.parsers.AbstractSAXParser.startElement(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.apache.xerces.jaxp.SAXParserImpl$JAXPSAXParser.parse(Unknown 
>Source)
>        at javax.xml.parsers.SAXParser.parse(SAXParser.java:375)
>        at javax.xml.parsers.SAXParser.parse(SAXParser.java:176)
>        at 
>org.geotools.xml.DocumentFactory.getInstance(DocumentFactory.java:133)
>        at 
>org.geotools.data.wms.response.WMSGetCapabilitiesResponse.<init>(WMSGetCapabilitiesResponse.java:54)
>        at 
>org.geotools.data.wms.WMS1_0_0$GetCapsRequest.createResponse(WMS1_0_0.java:231)
>        at 
>org.geotools.data.ows.AbstractOpenWebService.internalIssueRequest(AbstractOpenWebService.java:440)
>        at 
>org.geotools.data.wms.WebMapServer.issueRequest(WebMapServer.java:405)
>        at 
>org.geotools.data.ows.AbstractOpenWebService.negotiateVersion(AbstractOpenWebService.java:240)
>        at 
>org.geotools.data.ows.AbstractOpenWebService.<init>(AbstractOpenWebService.java:95)
>        at 
>org.geotools.data.ows.AbstractOpenWebService.<init>(AbstractOpenWebService.java:81)
>        at org.geotools.data.wms.WebMapServer.<init>(WebMapServer.java:368)
>        at 
>com.bt.mbe.processing.PIPERProcessor.getWMSLayer(PIPERProcessor.java:369)
>        at 
>com.bt.mbe.processing.PIPERProcessor.processItem(PIPERProcessor.java:269)
>        at com.bt.mbe.processing.PIPERProcessor.run(PIPERProcessor.java:211)
>        at java.lang.Thread.run(Thread.java:595)

------------------------------------------------------------------------------
Try before you buy = See our experts in action!
The most comprehensive online learning library for Microsoft developers
is just $99.99! Visual Studio, SharePoint, SQL - plus HTML5, CSS3, MVC3,
Metro Style Apps, more. Free future releases when you subscribe now!
http://p.sf.net/sfu/learndevnow-dev2
_______________________________________________
GeoTools-GT2-Users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users

Reply via email to