我的应用程序在开发过程中工作得很好。但是当它部署在没有internet的环境中时,它开始抱怨spring-security-oauth2模式的位置问题。下面是我完整的模式声明。
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:oauth="http://www.springframework.org/schema/security/oauth2"
xmlns:sec="http://www.springframework.org/schema/security"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-4.2.xsd
http://www.springframework.org/schema/security/oauth2
http://www.springframework.org/schema/security/spring-security-oauth2-1.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-4.3.xsd">
当互联网可用时,它工作得很好。但是没有互联网,它就无法解决分配问题。错误是:
2021-01-20 10:25:31,784 ERROR [org.springframework.web.context.ContextLoader] - <Context initialization failed>
org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 124 in XML document from class path resource [-----.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineNumber: ---; columnNumber: --; cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'oauth:resource-server'.
原因是,如果您检查spring-security-oauth2的“spring.schema”,它只引用“https”url。而另一个spring项目的spring.schema大多引用“http”url(这是一个单独的问题,为什么会这样!)用https替换http url修复了我的问题。
其他一些人也面临着这个问题,因为spring从internet上解析schemalocation例如:spring schemalocation在没有internet连接时失败
问:有没有办法限制spring从internet上解析schemalocation,如果类路径中的jar没有解析它,就会出错?因为这会导致在开发过程中无法识别问题,但在生产过程中会出现问题。
暂无答案!
目前还没有任何答案,快来回答吧!