gpt4 book ai didi

java - Spring 4 - Java 配置、Tomcat 和显示名称

转载 作者:IT老高 更新时间:2023-10-28 13:49:47 25 4
gpt4 key购买 nike

我正在使用带有纯 Java Config 的 Spring 4.1.1(即,根本没有 web.xml)。 AnnotationConfigWebApplicationContext 有一个 displayName 属性,我假设它类似于 web.xml 文件中的 display-name 标记。但是,当我在 Java Config 中设置此属性时,当我部署 WAR 时,Tomcat 管理器中的“显示名称”列为空,这与我在 web.xml 中使用显示名称标记不同。

这是预期的行为还是我做错了什么。我正在使用最新版本的 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
}
}

提前感谢您的帮助。

最佳答案

正如您所见,设置的 displayName 仅适用于 Spring ApplicationContext,与 web.xml 显示名称完全无关。web.xml 显示名称与: 容器.getServletContextName();

由于该对象已通过其值集传入,并且 ServletContext 接口(interface)不允许您更改此值,因此我不确定纯 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>

关于java - Spring 4 - Java 配置、Tomcat 和显示名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27449389/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com