Java Spring Boot 在 JBoss 上不起作用
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/20859851/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
Spring Boot doesn't work on JBoss
提问by vegidio
I'm staring with Spring Bootand I tried to create the example available in the website (http://projects.spring.io/spring-boot/#quick-start). Everything worked fine when I ran the example as a standalone application (.jar) and also as a web application (.war) in my Tomcat server.
我正在关注Spring Boot,并尝试在网站 ( http://projects.spring.io/spring-boot/#quick-start) 中创建可用的示例。当我在 Tomcat 服务器中将示例作为独立应用程序 (.jar) 和 Web 应用程序 (.war) 运行时,一切正常。
But when I moved the same .war file that worked on Tomcat to a JBoss 7.1server it didn't work anymore. I'm getting this error:
但是当我将在 Tomcat 上运行的同一个 .war 文件移动到JBoss 7.1服务器时,它不再工作了。我收到此错误:
Error calling onStartup for servlet container initializer: org.springframework.web.SpringServletContainerInitializer: java.lang.NoSuchMethodError: org.slf4j.bridge.SLF4JBridgeHandler.removeHandlersForRootLogger()V
I have no idea why this is happening. I google'd the but couldn't find anything related to Spring Boot. Can anybody please help me? The full stack trace is below. Thanks in advance!
我不知道为什么会这样。我用谷歌搜索但找不到与 Spring Boot 相关的任何内容。有人可以帮我吗?完整的堆栈跟踪如下。提前致谢!
13:43:10,009 WARN [org.jboss.as.ee] (MSC service thread 1-3) JBAS011006: Not installing optional component org.springframework.http.server.ServletServerHttpAsyncRequestControl due to exception: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS011054: Could not find default constructor for class org.springframework.http.server.ServletServerHttpAsyncRequestControl
at org.jboss.as.ee.component.ComponentDescription$DefaultComponentConfigurator.configure(ComponentDescription.java:606)
at org.jboss.as.ee.component.deployers.EEModuleConfigurationProcessor.deploy(EEModuleConfigurationProcessor.java:81)
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [rt.jar:1.7.0_10-ea]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [rt.jar:1.7.0_10-ea]
at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_10-ea]
13:43:10,014 WARN [org.jboss.as.ee] (MSC service thread 1-3) JBAS011006: Not installing optional component org.springframework.web.context.request.async.StandardServletAsyncWebRequest due to exception: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS011054: Could not find default constructor for class org.springframework.web.context.request.async.StandardServletAsyncWebRequest
at org.jboss.as.ee.component.ComponentDescription$DefaultComponentConfigurator.configure(ComponentDescription.java:606)
at org.jboss.as.ee.component.deployers.EEModuleConfigurationProcessor.deploy(EEModuleConfigurationProcessor.java:81)
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [rt.jar:1.7.0_10-ea]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [rt.jar:1.7.0_10-ea]
at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_10-ea]
13:43:10,528 INFO [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/ScheduledTasks]] (MSC service thread 1-15) Spring WebApplicationInitializers detected on classpath: [hello.HelloWebXml@31518afb]
13:43:10,695 INFO [org.springframework.boot.autoconfigure.AutoConfigurationReportLoggingInitializer] (MSC service thread 1-15) Nothing to report: ApplicationContext not available
13:43:10,721 ERROR [org.jboss.web] (MSC service thread 1-15) JBAS018202: Error calling onStartup for servlet container initializer: org.springframework.web.SpringServletContainerInitializer: java.lang.NoSuchMethodError: org.slf4j.bridge.SLF4JBridgeHandler.removeHandlersForRootLogger()V
at org.springframework.boot.logging.logback.LogbackLoggingSystem.beforeInitialize(LogbackLoggingSystem.java:70) [spring-boot-0.5.0.BUILD-SNAPSHOT.jar:0.5.0.BUILD-SNAPSHOT]
at org.springframework.boot.context.initializer.LoggingApplicationContextInitializer.initialize(LoggingApplicationContextInitializer.java:108) [spring-boot-0.5.0.BUILD-SNAPSHOT.jar:0.5.0.BUILD-SNAPSHOT]
at org.springframework.boot.SpringApplication.callNonEnvironmentAwareSpringApplicationInitializers(SpringApplication.java:371) [spring-boot-0.5.0.BUILD-SNAPSHOT.jar:0.5.0.BUILD-SNAPSHOT]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:291) [spring-boot-0.5.0.BUILD-SNAPSHOT.jar:0.5.0.BUILD-SNAPSHOT]
at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:130) [spring-boot-0.5.0.BUILD-SNAPSHOT.jar:0.5.0.BUILD-SNAPSHOT]
at org.springframework.boot.web.SpringBootServletInitializer.createRootApplicationContext(SpringBootServletInitializer.java:90) [spring-boot-0.5.0.BUILD-SNAPSHOT.jar:0.5.0.BUILD-SNAPSHOT]
at org.springframework.boot.web.SpringBootServletInitializer.onStartup(SpringBootServletInitializer.java:53) [spring-boot-0.5.0.BUILD-SNAPSHOT.jar:0.5.0.BUILD-SNAPSHOT]
at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:181) [spring-web-4.0.0.RELEASE.jar:4.0.0.RELEASE]
at org.jboss.as.web.deployment.JBossContextConfig.lifecycleEvent(JBossContextConfig.java:148) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:115) [jbossweb-7.0.13.Final.jar:]
at org.apache.catalina.core.StandardContext.start(StandardContext.java:3845) [jbossweb-7.0.13.Final.jar:]
at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:90) [jboss-as-web-7.1.1.Final.jar:7.1.1.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [rt.jar:1.7.0_10-ea]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [rt.jar:1.7.0_10-ea]
at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_10-ea]
13:43:11,154 ERROR [org.jboss.web] (MSC service thread 1-15) JBAS018206: Webapp [/ScheduledTasks] is unavailable due to startup errors
13:43:11,155 ERROR [org.apache.catalina.core.StandardContext] (MSC service thread 1-15) Context [/ScheduledTasks] startup failed due to previous errors
13:43:11,219 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-15) MSC00001: Failed to start service jboss.web.deployment.default-host./ScheduledTasks: org.jboss.msc.service.StartException in service jboss.web.deployment.default-host./ScheduledTasks: JBAS018040: Failed to start context
at org.jboss.as.web.deployment.WebDeploymentService.start(WebDeploymentService.java:95)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) [rt.jar:1.7.0_10-ea]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) [rt.jar:1.7.0_10-ea]
at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_10-ea]
13:43:11,428 INFO [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS015870: Deploy of deployment "ScheduledTasks.war" was rolled back with failure message {"JBAS014671: Failed services" => {"jboss.web.deployment.default-host./ScheduledTasks" => "org.jboss.msc.service.StartException in service jboss.web.deployment.default-host./ScheduledTasks: JBAS018040: Failed to start context"}}
13:43:11,469 INFO [org.jboss.as.server.deployment] (MSC service thread 1-11) JBAS015877: Stopped deployment ScheduledTasks.war in 40ms
13:43:11,470 INFO [org.jboss.as.controller] (DeploymentScanner-threads - 2) JBAS014774: Service status report JBAS014777: Services which failed to start: service jboss.web.deployment.default-host./ScheduledTasks: org.jboss.msc.service.StartException in service jboss.web.deployment.default-host./ScheduledTasks: JBAS018040: Failed to start context
13:43:11,472 ERROR [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads - 1) {"JBAS014653: Composite operation failed and was rolled back. Steps that failed:" => {"Operation step-2" => {"JBAS014671: Failed services" => {"jboss.web.deployment.default-host./ScheduledTasks" => "org.jboss.msc.service.StartException in service jboss.web.deployment.default-host./ScheduledTasks: JBAS018040: Failed to start context"}}}}
采纳答案by Dinesh Arora
Well the symptom means that Jboss is using a different version of SL4J which does not have that method.
那么这个症状意味着 Jboss 正在使用一个不同版本的 SL4J,它没有那个方法。
You can do two things:
你可以做两件事:
Go to Jboss lib folder -> Open the manifest file and check the version provider etc. Then go to findjar.com and search for the package name. This will tell you that you need this jar -
jul-to-slf4j-1.5.5.jar
. Down load this jar and drop it in Jboss lib folder.If you are using maven, then add the below dependency
<dependencies> ... <dependency> <groupId>org.slf4j</groupId> <artifactId>jul-to-slf4j</artifactId> <version>1.7.5</version> </dependency> ... </dependencies>
转到 Jboss lib 文件夹 -> 打开清单文件并检查版本提供程序等。然后转到 findjar.com 并搜索包名称。这会告诉你你需要这个 jar -
jul-to-slf4j-1.5.5.jar
. 下载这个 jar 并将其放到 Jboss lib 文件夹中。如果您使用的是 maven,则添加以下依赖项
<dependencies> ... <dependency> <groupId>org.slf4j</groupId> <artifactId>jul-to-slf4j</artifactId> <version>1.7.5</version> </dependency> ... </dependencies>
回答by Dave Syer
JBoss 7 is a basket case, and I really recommend you use something else. If you really need to use it for some reason you should find the logging error goes away if you upgrade to Spring Boot 1.0.0.RC2. But there will still be other problems with JBoss. See my comment in Spring Java Config vs Jboss 7for some help limping over the next likely obstacle.
JBoss 7 是一个空壳,我真的建议您使用其他东西。如果您出于某种原因确实需要使用它,您应该会发现如果升级到 Spring Boot 1.0.0.RC2,日志错误就会消失。但是 JBoss 仍然会存在其他问题。请参阅我在Spring Java Config vs Jboss 7 中的评论,以获取一些帮助来克服下一个可能的障碍。