Apologies guys but my xml skills are not that hot . The parsr being used is out
of the box or being picked up explicitly by the environment.
I just thought i would make it clear that i don't think its deadlock. I think
its just bad convention being caused by a slow download of one of the w3 xml
schemas. As far as i can tell from my little understanding of the code is that
the only schemas it will load from the environment seem to be some jaxb ?
Classes in meta inf services ?
But that doesn't explain how the standard maven dependencies that i explained
earlier are supposed to be picked up ? I did manage to register the
particularly problematic schema using one of the overloaded methods on schema
factory i think. But its a disgusting hack and i had to change something in the
schema itself which is even more disgusting ! It did work though but i would
much prefer a better method if anyone can point me in the direction. I do
remember trying a cascaded wms in geoserver and i am reasonably sure that
downloaded the same documents. Apologies for the lack of detail but doing this
on my phone.
Thanks again
------------------------------
On Thu, Feb 9, 2012 6:27 PM GMT Justin Deoliveira wrote:
>Hmmm... not too sure, if i understand correctly from the stack traces in
>the original post the original version of the xsd parser (the "dzwiers"
>parser) is being used?
>
>I did just recently fix an issue with deadlocks with the new parser... but
>that was geoserver specific.
>
>On Wed, Feb 8, 2012 at 8:39 PM, Ben Caradoc-Davies
><[email protected]> wrote:
>
>> Norman,
>>
>> app-schema-resolver is meant to be used with AppSchemaConfiguration for
>> schemas that are not known at compile time. Most XML Configuration
>> instances (those with compiled Java bindings) are meant to use internal
>> means to resolve dependencies from jar files. I do not know why this is not
>> happening in your case.
>>
>> Justin is our resident XML guru (and module maintainer); Justin, can you
>> suggest why Norman is seeing network requests for schemas? I do not think
>> he has any app-schema dependencies.
>>
>> Could a missing schema cause the EMF to seek it on the network?
>>
>> Kind regards,
>> Ben.
>>
>>
>> On 07/02/12 17:26, NORMAN MANN wrote:
>>
>> Hi Ben,
>> I really appreciate your repsonse.
>>
>> I have been looking into app-schema-resolver quite a bit yesterday.
>> However , I couldn't understand what I need to do with the Configuration
>> object? Do I need to set it somewhere, for it to be picked up?
>>
>> I kind of came to the conclusion yesterday, that it's only designed to be
>> used "internally" when you have access to the Parser?
>>
>> For my usage, I am using a WebMapServer object which makes the getCaps
>> request etc. However, this depends on other scheams (inspire, XML) and will
>> download those.
>> This isn't a huge problem per say, but the W3.org schema sometimes takes
>> a very long time to download and causes the contention issue I demonstrated
>> below.
>> I would much prefer to load them locally from the disk. To the W3 end, I
>> did notice that you may have packaged up that schema already ?
>>
>> <dependency>
>> <groupId>org.geotools.schemas<**/groupId>
>> <artifactId>xml-1.0</**artifactId>
>> <version>1.0.0-3</version>
>> </dependency>
>>
>> I did add that to my Pom, but I don't think it made any difference. But,
>> I guess that's back to my Configuration object question, what do I need to
>> do with it for it to be picked up?
>> I did also take a look at the AppSchemaResolver tests, but that uses
>> Schemas.findSchemas(**configuration) to check the configuration works,
>> as opposed to setting it in a context or whatever, Unless that's enough? I
>> was looking in the Schema/DocumentFactory source code and couldn't see
>> where they would pick up a Configuration object.
>>
>> Anymore help very much appreciated.
>>
>> Thanks
>>
>> Norman
>>
>> From: Ben Caradoc-Davies<Ben.Caradoc-**[email protected]>
>> To: NORMAN MANN<[email protected]**>
>>
>> Cc: Jody Garnett<[email protected]**>; "geotools-gt2-users@lists.**
>> sourceforge.net <[email protected]>"<geotools-gt2-
>> **[email protected] <[email protected]>
>> Sent: Tuesday, 7 February 2012, 4:51
>> Subject: Re: [Geotools-gt2-users] Dead lock? Or caching XMLs chemas?
>>
>> Norman,
>>
>> app-schema-resolver is designed to download and cache external published
>> application schemas and their dependencies. It will only download the
>> schemas that the XML infrastructure needs (on demand). See the javadocs
>> and also:
>> http://docs.geotools.org/**latest/userguide/extension/**
>> app-schema.html#application-**schema-resolver<http://docs.geotools.org/latest/userguide/extension/app-schema.html#application-schema-resolver>
>>
>> The app-schema-packages module shows how to bundle published schemas
>> into maven artifacts (jar files) suitable for use with
>> app-schema-resolver.
>>
>> Kind regards,
>> Ben.
>>
>>
>> On 06/02/12 16:57, NORMAN MANN wrote:
>>
>>> Thanks Jody, appreciate your help.
>>> Could you point me in the direction of which part of the source code?
>>> I have been looking at SchemaFactory.loadSchemas which I don't think is
>>> what I need.
>>> I have also been looking at app-schema-resolver which looks like more
>>> what I need, however, I am not sure how to set this globally (if possible?).
>>>
>>> Thanks in advance,
>>>
>>> Norman
>>>
>>>
>>> From: Jody Garnett<[email protected]**<mailto:
>>> [email protected]**>
>>> To: NORMAN MANN<[email protected]**<mailto:
>>> normanmann@btinternet.**com <[email protected]>>
>>> Cc:
>>> "geotools-gt2-users@lists.**sourceforge.net<[email protected]>
>>> <mailto:geotool**[email protected].**net<[email protected]>
>>> >"<geotools-gt2-users@**lists.sourceforge.net<[email protected]>
>>> <mailto:g**eotools-gt2-users@lists.**sourceforge.net<[email protected]>
>>> >
>>>
>>> Sent: Sunday, 5 February 2012, 10:23
>>> Subject: Re: [Geotools-gt2-users] Dead lock? Or caching XMLs chemas?
>>>
>>> You should package well known schemas as jars and contribute them into
>>> the mix. This is used when the source of the Schema is unavailable; or
>>> if your app is behind a fire wall. See the source code for examples of
>>> the OGC schemas handled this way.
>>>
>>> --
>>> Jody Garnett
>>>
>>> On 05/02/2012, at 5:52 PM, NORMAN MANN<[email protected]**
>>> <mailto:normanmann@btinternet.**com <[email protected]><mailto:
>>> normanmann@**btinternet.com <[email protected]><mailto:normanma*
>>> *[email protected] <[email protected]>> wrote:
>>>
>>>
>>>
>>> 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<http://p.sf.net/sfu/learndevnow-dev2>
>>> ______________________________**_________________
>>> GeoTools-GT2-Users mailing list
>>> GeoTools-GT2-Users@lists.**sourceforge.net<[email protected]>
>>> <mailto:GeoTool**[email protected].**net<[email protected]>
>>> ><mailto:GeoTools-GT2-**[email protected]<[email protected]>
>>> <**mailto:GeoTools-GT2-Users@**lists.sourceforge.net<[email protected]>
>>> >
>>> https://lists.sourceforge.net/**lists/listinfo/geotools-gt2-**users<https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users>
>>>
>>>
>>>
>>>
>>>
>> --
>> Ben Caradoc-Davies<Ben.Caradoc-**[email protected]<mailto:Ben.**
>> [email protected] <[email protected]>>
>>
>> Software Engineer
>> CSIRO Earth Science and Resource Engineering
>> Australian Resources Research Centre
>>
>>
>>
>>
>> --
>> Ben Caradoc-Davies <[email protected]>
>> Software Engineer
>> CSIRO Earth Science and Resource Engineering
>> Australian Resources Research Centre
>>
>
>
>
>--
>Justin Deoliveira
>OpenGeo - http://opengeo.org
>Enterprise support for open source geospatial.
------------------------------------------------------------------------------
Virtualization & Cloud Management Using Capacity Planning
Cloud computing makes use of virtualization - but cloud computing
also focuses on allowing computing to be delivered as a service.
http://www.accelacomm.com/jaw/sfnl/114/51521223/
_______________________________________________
GeoTools-GT2-Users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-gt2-users