Esri / geoportal-server-catalog

Esri Geoportal Server is a next generation open-source metadata catalog and editor, based on elasticsearch.
https://www.esri.com/en-us/arcgis/products/geoportal-server/overview
Apache License 2.0
97 stars 60 forks source link

WARN [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] - Ignored XML validation warning org.xml.sax.SAXParseException: schema_reference.4: Failed to read schema document 'http://www.springframework.org/schema/security/spring-security.xsd', because 1) could not find the document; 2) the document could not be read; 3) the root element of the document is not xsd:schema #324

Closed shamnas8vdk closed 4 years ago

shamnas8vdk commented 4 years ago

Getting below error while deploying Geoportal catalog in an internet separated machine, kindly assist

2020-05-21 13:29:54,770 WARN [org.springframework.beans.factory.xml.XmlBeanDefinitionReader] - Ignored XML validation warning org.xml.sax.SAXParseException: schema_reference.4: Failed to read schema document 'http://www.springframework.org/schema/security/spring-security.xsd', because 1) could not find the document; 2) the document could not be read; 3) the root element of the document is not xsd:schema. at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(Unknown Source) ~[?:1.8.0_251] at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.warning(Unknown Source) [?:1.8.0_251] at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source) [?:1.8.0_251] at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(Unknown Source) [?:1.8.0_251] at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.reportSchemaErr(Unknown Source) [?:1.8.0_251] at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.reportSchemaWarning(Unknown Source) [?:1.8.0_251] at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.getSchemaDocument1(Unknown Source) [?:1.8.0_251] at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.getSchemaDocument(Unknown Source) [?:1.8.0_251] at com.sun.org.apache.xerces.internal.impl.xs.traversers.XSDHandler.parseSchema(Unknown Source) [?:1.8.0_251] at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadSchema(Unknown Source) [?:1.8.0_251] at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.findSchemaGrammar(Unknown Source) [?:1.8.0_251] at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.handleStartElement(Unknown Source) [?:1.8.0_251] at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaValidator.startElement(Unknown Source) [?:1.8.0_251] at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.scanStartElement(Unknown Source) [?:1.8.0_251] at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(Unknown Source) [?:1.8.0_251] at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(Unknown Source) [?:1.8.0_251] at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(Unknown Source) [?:1.8.0_251] at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown Source) [?:1.8.0_251] at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) [?:1.8.0_251] at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(Unknown Source) [?:1.8.0_251] at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(Unknown Source) [?:1.8.0_251] at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(Unknown Source) [?:1.8.0_251] at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(Unknown Source) [?:1.8.0_251] at org.springframework.beans.factory.xml.DefaultDocumentLoader.loadDocument(DefaultDocumentLoader.java:77) [spring-beans-5.2.3.RELEASE.jar:5.2.3.RELEASE]

mhogeweg commented 4 years ago

this happens because we reference the Spring schema files from the configuration files found in ...\WEB-INF\classes\config

you can make those local inside your network also

mhogeweg commented 4 years ago

I confirmed that you can do this with the downloaded Spring XSD:

Make sure that you also update the xsd:import occurrences in these XSD as some cross-reference others (and those are currently also pointing to XSD hosted by Spring.

dasilva95Ro commented 2 years ago

Hi @mhogeweg. I am also having the same problem mentioned above in version 2.6.4. I'm really new to this type of setup. Can you tell me how I should change the files to match my local network?

mhogeweg commented 2 years ago

hi, in XML files such as the the geoportal configuration files, metadata definitions, etc, you may see references to schemaLocation such as this:

xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"

these are pairs of namespace and location of the xsd for that namespace. In the above the namespace

http://www.springframework.org/schema/beans

is defined in XML schema:

http://www.springframework.org/schema/beans/spring-beans.xsd

If your deployment of geoportal is on a disconnected environment, the schema location cannot be resolved leading to the error. You have 2 options to handle this. One is to remove all xsi:schemaLocation attributes from the XML configuration files. An alternative is to download the schema definitions (.xsd) and all dependencies of those locally.

this also applies to metadata styles that reference the XML schema definitions (for example applies to ISO metadata).

dasilva95Ro commented 2 years ago

Hi. This worked for me. I started Geoportal after configuring .xsd locally. But I came across the message "An error occurred." In the Network console I see the message:

"Message A filter or servlet of the current chain does not support asynchronous operations."

"java.lang.IllegalStateException: A filter or servlet of the current chain does not support asynchronous operations."

"java.lang.IllegalStateException: A filter or servlet of the current chain does not support asynchronous operations."

I tried the solution below but without success: [https://github.com/Esri/geoportal-server-catalog/issues/226]

Anyone else encountering this error?

mhogeweg commented 2 years ago

Is elastic on the same machine? and is it accessible over port 9200/9300?