2015-02-12 3 views
2

Я использую Spring Boot, и на самом деле я сталкиваюсь с (небольшой) проблемой. Меня это действительно беспокоит, и я не нашел ответа об этом.Удаленная оболочка Spring Boot не работает при развертывании в Tomcat

Я включил spring-boot-starter-remote-shell в свой файл pom.xml. Все работает нормально при запуске приложения в качестве автономного приложения Spring Boot. Но это не работает вообще, когда я пытаюсь развернуть военный файл Tomcat с помощью плагина Eclipse Tomcat 8.

Вот исключение он бросает мне:

2015-02-12 11:51:13.926 ERROR 1437 --- [ost-startStop-1] org.crsh.ssh.term.SSHLifeCycle   : Could not start CRaSSHD 

java.lang.SecurityException: class "org.bouncycastle.crypto.prng.VMPCRandomGenerator"'s signer information does not match signer information of other classes in the same package 
at java.lang.ClassLoader.checkCerts(ClassLoader.java:895) 
at java.lang.ClassLoader.preDefineClass(ClassLoader.java:665) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:758) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
at org.apache.catalina.loader.WebappClassLoaderBase.findClassInternal(WebappClassLoaderBase.java:2452) 
at org.apache.catalina.loader.WebappClassLoaderBase.findClass(WebappClassLoaderBase.java:854) 
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1264) 
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1147) 
at org.apache.sshd.common.random.BouncyCastleRandom.<init>(BouncyCastleRandom.java:56) 
at org.apache.sshd.common.random.BouncyCastleRandom$Factory.create(BouncyCastleRandom.java:48) 
at org.apache.sshd.common.random.BouncyCastleRandom$Factory.create(BouncyCastleRandom.java:41) 
at org.apache.sshd.common.random.SingletonRandomFactory.<init>(SingletonRandomFactory.java:37) 
at org.apache.sshd.SshServer.setUpDefaultServer(SshServer.java:454) 
at org.crsh.ssh.term.SSHLifeCycle.init(SSHLifeCycle.java:136) 
at org.crsh.ssh.SSHPlugin.init(SSHPlugin.java:194) 
at org.crsh.plugin.PluginManager.getPlugins(PluginManager.java:83) 
at org.crsh.plugin.PluginContext.start(PluginContext.java:327) 
at org.crsh.plugin.PluginLifeCycle.start(PluginLifeCycle.java:104) 
at org.springframework.boot.actuate.autoconfigure.CrshAutoConfiguration$CrshBootstrapBean.init(CrshAutoConfiguration.java:230) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:483) 
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:349) 
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:300) 
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:133) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:408) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1560) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:540) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) 
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:302) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:229) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:298) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:762) 
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:757) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:480) 
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:109) 
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:691) 
at org.springframework.boot.SpringApplication.run(SpringApplication.java:321) 
at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:143) 
at org.springframework.boot.context.web.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:89) 
at org.springframework.boot.context.web.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:51) 
at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:175) 
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5185) 
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409) 
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1399) 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 

Есть ли способ, чтобы заставить его работать (сохраняя при этом безопасность, конечно)?

+1

У вашего контейнера Tomcat есть богатый замок в родительском загрузчике классов (кому-то пришлось бы добавить его, я думаю)? –

+0

В моей папке «WEB-INF/lib» есть файл 'bcprov-jdk14-1.38.jar'. Обратите внимание, что он работает как прелесть при использовании 'mvn spring-boot: run'. Только при развертывании того же файла войны в Tomcat, который вызывает это исключение – mrik974

+0

В 'WEB-INF/lib' отлично. Исключение указывает, что другая версия также относится к пути к классам в другом загрузчике классов. –

ответ

3

Возможно, одна из ваших других банок в WEB-INF/lib содержит классы в org.bouncycastle.crypto.prng. Не стоит задумываться, какой из них стоит, если это проблема