我是新来的Spring MVC和我跟着入门指南导入hello web
应用程序(Service Web Content
在春季工具套件).它作为使用嵌入式Tomcat servlet的独立应用程序非常有用.
然后我继续将应用程序打包为战争.采取的实际步骤如下:
Make Application类扩展SpringBootServletInitializer
并添加SpringApplicationBuilder配置方法.
将嵌入式tomcat设置为provided
.
将Maven包装设置为war
.
出口和部署GS-服务,网络化内容initial.war到JBoss AS 7后,但是我无法找到一种方法来访问应用程序!
双方http://localhost:8080/greeting
并http://localhost:8080/gs-serving-web-content-initial/greeting
给出了同样的404 The requested resource (/greeting) is not available.
.(之前使用结构构建的另一场战争经过测试可以在同一个jboss上正常工作)
添加jboss-web.xml也不起作用.那我错过了什么?
更新20151217:
相关的JBoss日志如下所示.警告(JBAS011006)在部署战争时显示,但春季战争似乎正常?
09:06:06,107 INFO [org.jboss.as.server.deployment] (MSC service thread 1-2) JBAS015876: Starting deployment of "gs-serving-web-content-initial.war" 09:06:06,970 WARN [org.jboss.as.ee] (MSC service thread 1-2) 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:1145) [rt.jar:1.7.0_91] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_91] at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_91] 09:06:06,971 WARN [org.jboss.as.ee] (MSC service thread 1-2) 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:1145) [rt.jar:1.7.0_91] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_91] at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_91] 09:06:07,142 INFO [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/gs-serving-web-content-initial]] (MSC service thread 1-2) Spring WebApplicationInitializers detected on classpath: [org.springframework.boot.autoconfigure.jersey.JerseyAutoConfiguration@52fd8833, hello.Application@2f8f6d6] 09:06:08,149 INFO [stdout] (MSC service thread 1-2) 09:06:08,149 INFO [stdout] (MSC service thread 1-2) . ____ _ __ _ _ 09:06:08,149 INFO [stdout] (MSC service thread 1-2) /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ 09:06:08,149 INFO [stdout] (MSC service thread 1-2) ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ 09:06:08,149 INFO [stdout] (MSC service thread 1-2) \\/ ___)| |_)| | | | | || (_| | ) ) ) ) 09:06:08,149 INFO [stdout] (MSC service thread 1-2) ' |____| .__|_| |_|_| |_\__, | / / / / 09:06:08,149 INFO [stdout] (MSC service thread 1-2) =========|_|==============|___/=/_/_/_/ 09:06:08,150 INFO [stdout] (MSC service thread 1-2) :: Spring Boot :: (v1.3.0.RELEASE) 09:06:08,150 INFO [stdout] (MSC service thread 1-2) 09:06:08,241 INFO [hello.Application] (MSC service thread 1-2) Starting Application on localhost.localdomain with PID 16909 (started by jboss in /usr/share/jboss-as-7.1.1.Final) 09:06:08,242 INFO [hello.Application] (MSC service thread 1-2) No profiles are active 09:06:08,456 INFO [org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext] (MSC service thread 1-2) Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@116d77df: startup date [Thu Dec 17 09:06:08 HKT 2015]; root of context hierarchy 09:06:09,278 INFO [org.springframework.beans.factory.support.DefaultListableBeanFactory] (MSC service thread 1-2) Overriding bean definition for bean 'beanNameViewResolver' with a different definition: replacing [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.boot.autoconfigure.web.ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration; factoryMethodName=beanNameViewResolver; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/boot/autoconfigure/web/ErrorMvcAutoConfiguration$WhitelabelErrorViewConfiguration.class]] with [Root bean: class [null]; scope=; abstract=false; lazyInit=false; autowireMode=3; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter; factoryMethodName=beanNameViewResolver; initMethodName=null; destroyMethodName=(inferred); defined in class path resource [org/springframework/boot/autoconfigure/web/WebMvcAutoConfiguration$WebMvcAutoConfigurationAdapter.class]] 09:06:09,537 INFO [org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor] (MSC service thread 1-2) JSR-330 'javax.inject.Inject' annotation found and supported for autowiring 09:06:09,580 INFO [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/gs-serving-web-content-initial]] (MSC service thread 1-2) Initializing Spring embedded WebApplicationContext 09:06:09,581 INFO [org.springframework.web.context.ContextLoader] (MSC service thread 1-2) Root WebApplicationContext: initialization completed in 1126 ms 09:06:10,062 INFO [org.springframework.boot.context.embedded.ServletRegistrationBean] (MSC service thread 1-2) Mapping servlet: 'dispatcherServlet' to [/] 09:06:10,063 INFO [org.springframework.boot.context.embedded.FilterRegistrationBean] (MSC service thread 1-2) Mapping filter: 'errorPageFilter' to: [/*] 09:06:10,063 INFO [org.springframework.boot.context.embedded.FilterRegistrationBean] (MSC service thread 1-2) Mapping filter: 'characterEncodingFilter' to: [/*] 09:06:10,063 INFO [org.springframework.boot.context.embedded.FilterRegistrationBean] (MSC service thread 1-2) Mapping filter: 'hiddenHttpMethodFilter' to: [/*] 09:06:10,063 INFO [org.springframework.boot.context.embedded.FilterRegistrationBean] (MSC service thread 1-2) Mapping filter: 'httpPutFormContentFilter' to: [/*] 09:06:10,063 INFO [org.springframework.boot.context.embedded.FilterRegistrationBean] (MSC service thread 1-2) Mapping filter: 'requestContextFilter' to: [/*] 09:06:10,208 INFO [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter] (MSC service thread 1-2) Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@116d77df: startup date [Thu Dec 17 09:06:08 HKT 2015]; root of context hierarchy 09:06:10,347 INFO [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping] (MSC service thread 1-2) Mapped "{[/greeting]}" onto public java.lang.String hello.GreetingController.greeting(java.lang.String,org.springframework.ui.Model) 09:06:10,349 INFO [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping] (MSC service thread 1-2) Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest) 09:06:10,349 INFO [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping] (MSC service thread 1-2) Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest) 09:06:10,374 INFO [org.springframework.web.servlet.handler.SimpleUrlHandlerMapping] (MSC service thread 1-2) Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 09:06:10,375 INFO [org.springframework.web.servlet.handler.SimpleUrlHandlerMapping] (MSC service thread 1-2) Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 09:06:10,451 INFO [org.springframework.web.servlet.handler.SimpleUrlHandlerMapping] (MSC service thread 1-2) Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler] 09:06:10,896 INFO [org.springframework.jmx.export.annotation.AnnotationMBeanExporter] (MSC service thread 1-2) Registering beans for JMX exposure on startup 09:06:11,231 INFO [hello.Application] (MSC service thread 1-2) Started Application in 3.996 seconds (JVM running for 78143.668) 09:06:11,235 INFO [org.jboss.web] (MSC service thread 1-2) JBAS018210: Registering web context: /gs-serving-web-content-initial 09:06:11,269 INFO [org.jboss.as.server] (HttpManagementService-threads - 4) JBAS018559: Deployed "gs-serving-web-content-initial.war"
小智.. 5
我在spring boot 1.3.3 app和jboss eap 6.4.x中遇到了同样的问题.
Spring引导使用'/'作为主调度程序servlet的默认路径jboss无法正确理解(或"太正确")并将servlet调度程序映射到'/'而不是'/*',如日志中所述:
09:06:10,062 INFO [org.springframework.boot.context.embedded.ServletRegistrationBean](MSC服务线程1-2)映射servlet:'dispatcherServlet'到[/] ...
尝试使用spring boot app的application.properties更改为其他内容,例如/ xxx或/*:
server.servlet-path=/*
现在,jboss正确地将调度程序servlet映射到'/ xxx/*',resp.'/*'.
我在spring boot 1.3.3 app和jboss eap 6.4.x中遇到了同样的问题.
Spring引导使用'/'作为主调度程序servlet的默认路径jboss无法正确理解(或"太正确")并将servlet调度程序映射到'/'而不是'/*',如日志中所述:
09:06:10,062 INFO [org.springframework.boot.context.embedded.ServletRegistrationBean](MSC服务线程1-2)映射servlet:'dispatcherServlet'到[/] ...
尝试使用spring boot app的application.properties更改为其他内容,例如/ xxx或/*:
server.servlet-path=/*
现在,jboss正确地将调度程序servlet映射到'/ xxx/*',resp.'/*'.