我已經搜索了這個問題,但是我沒有找到任何關於這種情況的信息。我發現了很多「如何將Spring Boot WAR部署到Tomcat」,但沒有涉及使用Spring Boot來包裝現有的Tomcat WAR。將現有WAR添加到嵌入式tomcat中
我想用Spring Boot「包裝器」包裝現有的WAR,以便現有的代碼庫不必重新配置。 This solution不起作用,因爲它取決於WAR在絕對位置可用,而我們正試圖將「應用程序」WAR打包到Spring Boot WAR中。然後,我們可以像這樣添加WAR的上下文:
Context context = tomcat.addWebapp("myapp", Thread.currentThread().getContextClassLoader().getResource("myapp.war").getPath());
這幾乎可以工作。我遇到了一個特定問題。當現有的WAR文件被放入Spring Boot項目時,它將被放入/WEB-INF/lib-provided
而不是/WEB-INF/classes
。我找不到一種方法讓嵌入式Tomcat從此位置添加WAR文件。 ClassLoader不會加載它,因爲它不在WEB-INF/classes
之下。
從/WEB-INF/lib-provided
有抓住這個戰爭的方式(或任何方式)嗎?
您的目標是讓WAR成爲一個嵌入式Tomcat應用程序,並且您正在使用Spring Boot實現它,或者您是否想要充分利用Spring Boot?我不確定您是否可以利用Spring Boot的優勢,而無需重新配置應用程序以使用Spring Boot。 – qtips
我們的簡介是將現有應用程序變爲Spring Boot應用程序,並儘可能地進行更改。理想情況下,我們根本不會觸及現有的應用程序,只需將其包裝在Spring Boot Shell中,並使其可執行而無需單獨的Tomcat實例。我確信Spring Boot可以做得更多,但我們沒有被分配任務。 – user1071914
在你的情況下使用Spring Boot的目的是什麼?我明白你的任務就是儘可能快地開始使用Spring Boot。如果您的目的可以通過其他一些簡單的方法實現,我會問。創建一個將您的應用程序嵌入到tomcat獨立服務器中的Main類。另外,開始使用Spring Boot可能也很簡單,有時你只需要改變你的POM並創建一個Main類。 – qtips