[ 
https://issues.apache.org/jira/browse/GEODE-6540?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Owen Nichols closed GEODE-6540.
-------------------------------

> Allow the cache XSD to be resolvable through HTTPS
> --------------------------------------------------
>
>                 Key: GEODE-6540
>                 URL: https://issues.apache.org/jira/browse/GEODE-6540
>             Project: Geode
>          Issue Type: Improvement
>          Components: configuration
>    Affects Versions: 1.8.0
>            Reporter: John Blum
>            Assignee: Jacob S. Barrett
>            Priority: Critical
>              Labels: CacheXML, HTTP, HTTPS, XSD
>             Fix For: 1.9.0
>
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> Currently, when configuring Apache Geode with {{cache.xml}}, the {{cache}} 
> declaration can be specified using...
> {code:xml}
> <?xml version="1.0" encoding="UTF-8"?>
> <cache xmlns="http://geode.apache.org/schema/cache";
>          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>          xsi:schemaLocation="http://geode.apache.org/schema/cache 
> https://geode.apache.org/schema/cache/cache-1.0.xsd";
>          version="1.0">
> ...
> {code}
> Notice the use of the HTTPS protocol to resolve the XSD for the namespace 
> (URI) {{"http://geode.apache.org/schema/cache"}}.
> However, when starting a Geode node (e.g. server) with this {{cache.xml}}, 
> the following Exception is thrown...
> {code:java}
> ...
> Caused by: org.apache.geode.cache.CacheXmlException: Error while parsing XML, 
> caused by org.xml.sax.SAXParseException; lineNumber: 5; columnNumber: 19; 
> cvc-elt.1: Cannot find the declaration of element 'cache'.
>       at 
> org.apache.geode.internal.cache.xmlcache.CacheXml.error(CacheXml.java:896)
>       at 
> org.apache.geode.internal.cache.xmlcache.CacheXmlParser$DefaultHandlerDelegate.error(CacheXmlParser.java:3454)
>       at 
> com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:137)
>       at 
> com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:396)
>       at 
> com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327)
>       at 
> com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:284)
>       at 
> com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(XMLSchemaValidator.java:1901)
>       at 
> com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(XMLSchemaValidator.java:741)
>       at 
> com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(XMLNSDocumentScannerImpl.java:374)
>       at 
> com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl$NSContentDriver.scanRootElementHook(XMLNSDocumentScannerImpl.java:613)
>       at 
> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:3132)
>       at 
> com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl$PrologDriver.next(XMLDocumentScannerImpl.java:852)
>       at 
> com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)
>       at 
> com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:112)
>       at 
> com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)
>       at 
> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:842)
>       at 
> com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:771)
>       at 
> com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
>       at 
> com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1213)
>       at 
> com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:643)
>       at 
> com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl.parse(SAXParserImpl.java:327)
>       at javax.xml.parsers.SAXParser.parse(SAXParser.java:195)
>       at 
> org.apache.geode.internal.cache.xmlcache.CacheXmlParser.parse(CacheXmlParser.java:223)
>       at 
> org.apache.geode.internal.cache.GemFireCacheImpl.loadCacheXml(GemFireCacheImpl.java:4273)
>       at 
> org.springframework.data.gemfire.CacheFactoryBean.lambda$loadCacheXml$10(CacheFactoryBean.java:518)
>       at java.util.Optional.ifPresent(Optional.java:159)
>       at 
> org.springframework.data.gemfire.CacheFactoryBean.loadCacheXml(CacheFactoryBean.java:515)
>       at 
> org.springframework.data.gemfire.CacheFactoryBean.postProcess(CacheFactoryBean.java:491)
>       at 
> org.springframework.data.gemfire.CacheFactoryBean.init(CacheFactoryBean.java:269)
>       ... 55 more
> Caused by: org.xml.sax.SAXParseException; lineNumber: 5; columnNumber: 19; 
> cvc-elt.1: Cannot find the declaration of element 'cache'.
>       at 
> com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)
>       at 
> com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:134)
>       ... 81 more
> {code}
> While the XSD should resolve locally, this seems to be thwarted by the fact 
> that Geode is incorrectly passing the URL as the {{systemId}} rather than the 
> URI/URN, as can be seen here...
> https://github.com/apache/geode/blob/rel/v1.8.0/geode-core/src/main/java/org/apache/geode/internal/cache/xmlcache/GeodeEntityResolver.java#L48



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to