title: Embedded TomEE in Grails 3.3 application
body: <p>My Grails 2.4 application works fine on Tomcat and TomEE.</p>
  
  <p>Recently I upgraded it to Grails 3.3.*. Now it still works fine when deployed to standard Tomcat, but fails to start on TomEE. The first couple of error messages are:</p>
  
  <pre><code>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'.)
  </code></pre>
  
  <p>I read somewhere that I should replace dependency on standard Tomcat with one on TomEE, but I cannot find how to do that. My current dependency on Tomcat (in Gradle build) is:</p>
  
  <pre><code>provided "org.springframework.boot:spring-boot-starter-tomcat"
  </code></pre>
  
  <p>which I changed from:</p>
  
  <pre><code>compile 'org.springframework.boot:spring-boot-starter-tomcat'
  </code></pre>
  
  <p>without visible effect.</p>
  
  <p>What need to be done for my Grails3.3.* web app works on TomEE?</p>
  
  <p>TomEE info:</p>
  
  <pre><code>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
  </code></pre>