2015-06-29 32 views
0

我一直在經歷將我的Mule項目轉換爲Spring Boot應用程序的過程,並且遇到了一個我似乎無法弄清的障礙。將Mule Tomcat WAR轉換爲Spring Boot的問題

我對Spring Boot很新,所以我不確定我的問題是否與它存在一致,或者與我做我的騾子的方式有關。

這裏是我的樣本項目,我一直在試圖轉換:https://github.com/JustinBell/mule-webapp-example

當我這個部署到它的偉大工程,一個Tomcat實例,問題是當我嘗試運行它作爲一個春天啓動應用程序我m如果此異常:

ApplicationContextException: Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletContainerFactory bean. 

正如一個音符,我從騾子3.6.1轉移到3.7.0-M1作爲的需要的(從我的理解)使用Spring引導。

我試過在這個問題上尋找支持,這似乎很常見,但我沒有發現任何建議都解決了這個問題。

感謝您對這些問題的任何幫助!

+0

我注意到https://github.com/JustinBell/mule-webapp-example/blob/master/src/main/resources/mule-webapp-demo.xml中的'servlet:inbound-endpoint':什麼是Servlet容器你會用嗎? Spring引導是否在Servlet容器中加載'web.xml'? –

+1

我的理解是有一個嵌入式的Tomcat實例可以使用Spring Boot,但是你的問題使我倍加擔心,所以我正在研究嵌入式實例如何工作以確保它能夠按照我期望的那樣工作。 –

回答

1

在您的代碼中有幾件事情並不完全正確。

如果要使用Spring Boot構建Web應用程序,通常需要在spring-boot-starter-web上添加依賴項。這提供,除其他事項外,嵌入式servlet容器:在一個很舊的版本Tomcat的狼模塊的上拉org.mule.transports:mule-transport-servlet

<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-web</artifactId> 
    <version>${spring-boot.version}</version> 
</dependency> 

您的應用程序的依賴。你需要排除是爲了避免它與同時由spring-boot-starter-web提供的高達最新的依賴衝突:

<dependency> 
    <groupId>org.mule.transports</groupId> 
    <artifactId>mule-transport-servlet</artifactId> 
    <version>${mule.version}</version> 
    <exclusions> 
     <exclusion> 
      <groupId>org.apache.tomcat</groupId> 
      <artifactId>coyote</artifactId> 
     </exclusion> 
    </exclusions> 
</dependency> 

Application類是試圖運行MuleContextInitializer它也宣稱作爲一個bean。它應該運行Application.class

@SpringBootApplication 
public class Application { 

    public static void main(String[] args) { 
     SpringApplication.run(Application.class); 
    } 

    // ... 
} 

Application類也是默認的包中。您應該避免使用默認包,因爲它會導致Spring Boot掃描整個類路徑,尋找您的應用程序的類和配置。把它變成一個自己的軟件包來阻止這種情況的發生。

最後,該應用無法啓動,因爲它正在查找名爲mule-config.xml的文件。重命名mule-webapp-demo.xmlmule-config.xml解決了這個問題。

+0

感謝您的深入探索!這似乎已經解決了所有問題,並且非常具有信息性。 –

1

我相信autodelete是一個企業功能,也許你使用的是ftp而不是ftp-ee。

+1

有趣的是,我會剝去那部分的問題,所以我可以做一些研究。 –