我的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'.)
我在某处读到我应该将对标准Tomcat的依赖替换为对TomEE的依赖,但是我找不到解决方法。我目前对Tomcat(在Gradle构建中)的依赖是:
provided "org.springframework.boot:spring-boot-starter-tomcat"
我从以下位置更改:
compile 'org.springframework.boot:spring-boot-starter-tomcat'
没有可见的效果。
我的Grails3.3。* Web应用程序可在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
答案 0 :(得分:0)
也许创建一个conf / exclusions.list包含两行,“ default-list”和“ grails”。如果还不够的话,可以添加scan.xml以确保不扫描未扫描的EE类(请参见https://tomee.apache.org/refcard/refcard.html)
答案 1 :(得分:0)
Tomitribe(TomEE支持小组)证实,Spring / Grails与TomEE之间存在太多冲突。他们的建议是不要一起使用它们。而是将标准的Tomcat与Grails结合使用。