My Grails 2.4 应用程序在 Tomcat 和 TomEE 上运行良好。
最近我把它升级到了Grails 3.3.*。现在,当部署到标准Tomcat时,它仍然可以正常工作,但无法在TomEE上启动。前几条错误消息是:
05-Aug-2019 16:03:00.588 SEVERE [localhost-startStop-1] org.apache.openejb.config.AnnotationDeployer$ProcessAnnotatedBeans.deploy servlet XXXXXXX has no servlet-class defined and is not a subclass of Application
05-Aug-2019 16:03:00.660 SEVERE [localhost-startStop-1] org.apache.tomee.catalina.TomcatWebAppBuilder.startInternal Unable to deploy collapsed ear in war StandardEngine[Catalina].StandardHost[localhost].StandardContext[/XXXXXXX]
org.apache.openejb.OpenEJBException: Can't find resource for class asset.pipeline.grails.AssetProcessorService#grailsLinkGenerator. (No provider available for resource-ref 'null' of type 'grails.web.mapping.LinkGenerator' for 'XXXXXXX.Comp1855693364'.)
我在某处读到我应该用TomEE上的依赖来代替对标准Tomcat的依赖,但我找不到如何做到这一点。我目前对Tomcat(在Gradle版本中(的依赖是:
provided "org.springframework.boot:spring-boot-starter-tomcat"
我从:
compile 'org.springframework.boot:spring-boot-starter-tomcat'
没有可见的效果。
我的Grails3.3.*网络应用程序在TomEE上运行需要做什么?
TomEE信息:
05-Aug-2019 16:02:47.201 INFO [main] sun.reflect.NativeMethodAccessorImpl.invoke Server version: Apache Tomcat (TomEE)/8.5.41 (7.0.6)
05-Aug-2019 16:02:47.201 INFO [main] sun.reflect.NativeMethodAccessorImpl.invoke Server built: May 4 2019 09:17:16 UTC
05-Aug-2019 16:02:47.201 INFO [main] sun.reflect.NativeMethodAccessorImpl.invoke Server number: 8.5.41.0
05-Aug-2019 16:02:47.201 INFO [main] sun.reflect.NativeMethodAccessorImpl.invoke OS Name: Linux
05-Aug-2019 16:02:47.202 INFO [main] sun.reflect.NativeMethodAccessorImpl.invoke OS Version: 3.10.0-862.11.6.el7.x86_64
05-Aug-2019 16:02:47.202 INFO [main] sun.reflect.NativeMethodAccessorImpl.invoke Architecture: amd64
05-Aug-2019 16:02:47.202 INFO [main] sun.reflect.NativeMethodAccessorImpl.invoke Java Home: /usr/local/jdk/jre
05-Aug-2019 16:02:47.202 INFO [main] sun.reflect.NativeMethodAccessorImpl.invoke JVM Version: 1.8.0_212-b03
05-Aug-2019 16:02:47.202 INFO [main] sun.reflect.NativeMethodAccessorImpl.invoke JVM Vendor: Eclipse OpenJ9
也许创建一个包含两行的conf/exclusions.list,"default-list"和"grails"。如果还不够,可以添加扫描.xml以确保不扫描EE类(请参阅 https://tomee.apache.org/refcard/refcard.html(
Tomitribe(TomEE支持小组(证实Spring/Grails和TomEE之间存在太多冲突。他们的建议是不要将它们一起使用。相反,使用带有圣杯的标准Tomcat。