我们公司有一个针对tomcat的安全策略,如果需要任何新的安全策略,我们将不得不请求。我正在使用spring-cloud-starter-hystrix-1.4.1.RELEASE,它正在使用archaius-core-0.7.4.jar。我们的服务器管理员肯定不会给出以下权限,基本上要求所有内容的读写权限
Caused by: java.lang.ExceptionInInitializerError
at com.netflix.config.DynamicPropertyFactory.getInstance(DynamicPropertyFactory.java:277)
at com.netflix.hystrix.contrib.metrics.eventstream.HystrixMetricsStreamServlet.<clinit>(HystrixMetricsStreamServlet.java:55)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at java.lang.Class.newInstance(Class.java:442)
at org.springframework.web.servlet.mvc.ServletWrappingController.afterPropertiesSet(ServletWrappingController.java:144)
at org.springframework.cloud.netflix.endpoint.ServletWrappingEndpoint.afterPropertiesSet(ServletWrappingEndpoint.java:50)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory$6.run(AbstractAutowireCapableBeanFactory.java:1677)
at java.security.AccessController.doPrivileged(Native Method)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1674)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1624)
... 107 more
Caused by: java.lang.RuntimeException: Error initializing configuration
at com.netflix.config.ConfigurationManager.<clinit>(ConfigurationManager.java:109)
... 120 more
Caused by: java.security.AccessControlException: access denied ("java.util.PropertyPermission" "*" "read,write")
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
at java.security.AccessController.checkPermission(AccessController.java:884)
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549)
at java.lang.SecurityManager.checkPropertiesAccess(SecurityManager.java:1262)
at java.lang.System.getProperties(System.java:630)
at org.apache.commons.configuration.SystemConfiguration.<init>(SystemConfiguration.java:44)
at com.netflix.config.ConfigurationManager.createDefaultConfigInstance(ConfigurationManager.java:146)
at com.netflix.config.ConfigurationManager.getConfigInstance(ConfigurationManager.java:161)
at com.netflix.config.ConfigurationManager.getConfigInstance(ConfigurationManager.java:176)
at com.netflix.config.ConfigurationBasedDeploymentContext.<init>(ConfigurationBasedDeploymentContext.java:108)
at com.netflix.config.ConfigurationManager.<clinit>(ConfigurationManager.java:104)
... 120 more
在研究了为什么ConfigurationManager中的archaius.dynamicProperty.disableSystemConfig值默认为false时,它允许archaius默认系统配置。 commons-configuration jar有一个使用System.getProperties()的代码,这就是我看到这个错误的原因。
我们没有使用archaius从Spring引导应用程序类中排除ArchaiusAutoConfiguration.class,但它似乎仍在寻找配置。
我的问题是如何禁用archaius?从春季启动应用程序类本身排除ArchaiusAutoConfiguration是不够的?如果我必须将archaius.dynamicProperty.disableSystemConfig值设置为true,我该怎么做呢?在哪里?
也在github上提出了一个问题 https://github.com/Netflix/archaius/issues/539
答案 0 :(得分:0)
必须将属性archaius.dynamicProperty.disableSystemConfig
声明为系统属性。 Archaius只尝试从System Property读取此属性的此值。
我认为禁用ArchaiusAutoConfiguration
本身并不是一个好主意。 Netflix OSS正在使用archaius,Spring Cloud将其在Spring中定义的属性提供给archaius。因此,没有它,Spring Cloud中的Netflix OSS将无法正常工作。