Bri*_*ian 10 java spring tomcat tomcat7 spring-4
我正在使用Spring 4.1.1和纯Java Config(即根本没有web.xml).AnnotationConfigWebApplicationContext有一个displayName属性,我假设它类似于web.xml文件中的display-name标签.但是,当我在Java Config中设置此属性时,Tomcat管理器中的"显示名称"列在部署WAR时为空,这与我在web.xml中使用display-name标记不同.
这是预期的行为还是我做错了什么.我使用的是最新版本的Tomcat 7.0.57,Java 1.7 u51和Groovy 2.3.7.
@Slf4j
class WebAppInitializer implements WebApplicationInitializer {
{
@Override
void onStartup(ServletContext container) throws ServletException {
def rootContext = new AnnotationConfigWebApplicationContext()
rootContext.register(WebAppConfig)
rootContext.servletContext = container
rootContext.displayName = 'Description of WAR goes here!'
DispatcherServlet dispatcherServlet = new DispatcherServlet(rootContext)
dispatcherServlet.throwExceptionIfNoHandlerFound = true
def dispatcherServletReg = container.addServlet('dispatcher', dispatcherServlet)
dispatcherServletReg.addMapping('/')
dispatcherServletReg.loadOnStartup = 1
}
}
Run Code Online (Sandbox Code Playgroud)
提前感谢您的帮助.
小智 11
正如您所看到的那样,设置的displayName仅适用于Spring ApplicationContext,并且与web.xml display-name完全无关.web.xml display-name与:container.getServletContextName();
由于此对象已经使用其值集传入,并且ServletContext接口不允许您更改此值,因此我不确定它是否可以使用纯Java配置.
但是,您仍然可以通过设置metadata-complete ="false"将部分web.xml与WebApplicationInitializer结合使用:
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
metadata-complete="false" version="3.0">
<display-name>Web Application Name</display-name>
</web-app>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2494 次 |
最近记录: |