簡體   English   中英

部署Spring MVC應用程序以在Tomcat8的根目錄下運行

[英]Deploy Spring MVC app to run at root in Tomcat8

我正在嘗試在Tomcat8的根目錄部署Spring MVC應用程序。 目前,訪問我的應用程序的唯一方法是在my_domain_name.com/my_webapp,其中my_webapp是我的war文件的名稱; 而我只想訪問my_domain_name.com。

我知道關於此主題還有其他類似的問題,但是我已經嘗試了一切,僅將war文件重命名為ROOT.war起作用了,但這對我來說並不理想,因為我想從同一服務器上運行多個應用程序。

我的server.xml包括:

<Context path="" docBase="my_webapp" debug="0" reloadable="true">
</Context>
<Host name="my_domain_name.com"  appBase="my_webapp" 
    unpackWARs="true" autoDeploy="true">
    <Valve className="org.apache.catalina.valves.AccessLogValve" 
        directory="logs" prefix="my_webapp_access_log" suffix=".txt"  
        pattern="%h %l %u %t &quot;%r&quot; %s %b" />
</Host>

我在conf目錄中有一個ROOT.xml文件:

<Context 
  docBase="my_webapp" 
  path="" 
  reloadable="true"/>

my_webapp中META-INF下的context.xml:

<?xml version="1.0" encoding="UTF-8"?>
<Context path="/"/>

my_webapp中的配置文件AppInitializer.java:

public class AppInitializer implements WebApplicationInitializer {

    @Override
    public void onStartup(ServletContext container) throws ServletException {

        AnnotationConfigWebApplicationContext rootContext = new 
            AnnotationConfigWebApplicationContext();

        rootContext.register(AppConfig.class);

        container.addListener(new ContextLoaderListener(rootContext));

        AnnotationConfigWebApplicationContext dispatcherContext = 
            new AnnotationConfigWebApplicationContext();


        ServletRegistration.Dynamic dispatcher = 
            container.addServlet("dispatcher", new 
                DispatcherServlet(dispatcherContext));

        dispatcher.setLoadOnStartup(1);
        dispatcher.addMapping("/");
    }
}

my_webapp中的配置文件DefaultView:

public class DefaultView extends WebMvcConfigurerAdapter{

    @Override
    public void addViewControllers( ViewControllerRegistry registry ) {

        registry.addViewController( "/" ).setViewName(
            "forward:/home.html" );
        registry.setOrder( Ordered.HIGHEST_PRECEDENCE );

        super.addViewControllers( registry );
    }
}

我認為這是所有相關的文件,但是如果您認為還有其他問題,請告訴我。 我不知道我的Spring MVC配置和/或Tomcat配置是否可能有問題。 提前謝謝了。

編輯:這個問題不是重復的-我不是在問如何從不同的上下文中部署多個Web應用程序。 我希望在根目錄下正確部署我的Web應用程序,因此我應該只輸入www.myapp.com而不是www.myapp.com/myapp。 我不想在不將我的war文件命名為ROOT.war的情況下執行此操作-我嘗試添加標簽,但這似乎不起作用。 我還創建了一個ROOT.xml,這也無法正常工作。 顯然,這個問題不是重復的。

我認為您所做的是正確的。 如您所說,此選項有2個選項

1)重命名戰爭。

2)覆蓋根上下文

如何在Tomcat 7.0中設置Web應用程序的上下文路徑

在Tomcat的根目錄部署我的應用程序

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM