首页 > 解决方案 > micronaut 已经与在独立 tomcat 8.5 上运行 grails 4 应用程序的父 beanfactory 错误相关联

问题描述

Tomcat 8.5.71 Grails 4.0.11 RHEL 7.8

该应用程序在嵌入式 tomcat 上运行良好,但无法独立加载。堆栈跟踪是:

无法在 org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440) 在 org.apache.catalina.util.LifecycleBase 中启动组件 [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/gdbxt]] .start(LifecycleBase.java:198) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:753) ... 9 更多原因:java.lang.IllegalStateException: 已经与父 BeanFactory:io 关联。 micronaut.spring.context.factory.MicronautBeanFactory@347aa4db:定义bean [];org.springframework.context.support.GenericApplicationContext.setParent(GenericApplicationContext.java:158) org.springframework.boot org.springframework.context.support.AbstractBeanFactory.setParentBeanFactory(AbstractBeanFactory.java:718) 的工厂层次结构的根.builder。

为独立tomcat构建的war文件具有build.gradle

provided "org.springframework.boot:spring-boot-starter-tomcat"

我有

服务器:端口:8091

在 application.yml 中,并且在 tomcat server.xml 中将连接器设置为 8091

这个应用程序是从 grails 2.5.5 移植的。并且非常大,有许多额外的依赖项。它有石英作业,我在 application.yml 中使用quartz.pluginEnabled: false 禁用了这些作业。

它确实可以运行 bootstrap.groovy,因为它会从该代码中打印出一些日志记录。

有人可以指出这种错误的可能原因吗?

标签: grailstomcat8micronaut

解决方案


原来,通过创建新的 grails 4 项目并从 grails2 项目中复制文件进行迁移时,我在 grails-app/init 文件夹中创建了一个额外的包。该错误是由于尝试从第二个 init 文件夹中的 Application.groovy 实例化第二个应用程序。令人惊讶的是,它可以与内置的 tomcat 和 run-app 一起使用。


推荐阅读