gpt4 book ai didi

java - 将 Mule Tomcat WAR 转换为 Spring Boot 时出现问题

转载 作者:行者123 更新时间:2023-12-02 04:33:35 24 4
gpt4 key购买 nike

我一直在经历将 Mule 项目转换为 Spring Boot 应用程序的过程,但遇到了一个我似乎无法弄清楚的障碍。

我对 Spring Boot 还很陌生,所以我不确定我的问题是在于它,还是在于我做 Mule 工作的方式。

这是我一直在尝试转换的示例项目:https://github.com/JustinBell/mule-webapp-example

当我将其部署到 tomcat 实例时,它运行得很好,当我尝试将其作为 Spring Boot 应用程序运行时,问题出现了,我收到此异常:

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

请注意,我将从 mule 3.6.1 迁移到 3.7.0-M1,因为这是使用 Spring Boot 所必需的(根据我的理解)。

我尝试四处寻找有关此问题的支持,这似乎很常见,但我发现的建议都没有解决该问题。

感谢您对这些问题的帮助!

最佳答案

您的代码中有一些不太正确的地方。

如果您想使用 Spring Boot 构建 Web 应用程序,您通常需要添加对 spring-boot-starter-web 的依赖项。除其他外,这还提供了嵌入式 servlet 容器:

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

您的应用对org.mule.transports:mule-transport-servlet的依赖引入 Tomcat 的 Coyote 模块的一个非常旧的版本。您需要排除它,以避免它与 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解决这个问题。

关于java - 将 Mule Tomcat WAR 转换为 Spring Boot 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31125877/

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