Я пытаюсь запустить TomEE в Docker. Он работает с tomee:8-jre-7.1.0-plume
изображением, но не с 11-jre-8.0.0-M3-plume
.
Кажется, проблема связана с JPA / PersistenceUnit. Это мой WebContent/META-INF/persistence.xml
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
<persistence-unit name="fwtool-jpa">
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<class>com.nnn.OneClass</class>
<class>com.nnn.SecondClass</class>
<class>com.nnn.AnotherClass</class>
</persistence-unit>
</persistence>
Я создаю приложение для войны с Maven, имеющее:
<source>11</source>
<target>11</target>
tomee. xml:
<?xml version="1.0" encoding="UTF-8"?>
<tomee>
<Resource id="jtaFWTool" type="DataSource">
jdbcDriver com.mysql.jdbc.Driver
jdbcUrl jdbc:mysql://localhost:3306/FWTool
connectionProperties retainStatementAfterResultSetClose=true;autoReconnectForPools=true;useSSL=false
userName xxxx
password yyyy
maxActive 500
maxIdle 50
maxWaitMillis 50000
removeAbandoned true
maxConnLifetimeMillis 6000000
maxAge 6000000
testWhileIdle true
TimeBetweenEvictionRunsMillis 20000
validationQuery SELECT 1
</Resource>
</tomee>
Dockerfile :
FROM tomee:11-jre-8.0.0-M3-plume
COPY target/fwtool.war /usr/local/tomee/webapps/
COPY tomee.xml /usr/local/tomee/conf/
COPY mysql-connector-java-5.1.40.jar /usr/local/tomee/lib/
Docker сборка и запуск
docker build -t fwtool:tomee8-java11 .
docker run --net=host -d --name fwtool fwtool:tomee8-java11
Когда TomEE запускает и развертывает войну, что-то идет не так:
15-Feb-2020 17:46:15.843 INFO [main] org.apache.openejb.config.AutoConfig.deploy Configuring PersistenceUnit(name=fwtool-jpa)
15-Feb-2020 17:46:15.844 INFO [main] org.apache.openejb.config.AutoConfig.logAutoCreateResource Auto-creating a Resource with id 'jtaFWToolNonJta' of type 'DataSource for 'fwtool-jpa'.
15-Feb-2020 17:46:15.844 INFO [main] org.apache.openejb.config.AutoConfig.deploy Configuring Service(id=jtaFWToolNonJta, type=Resource, provider-id=jtaFWTool)
15-Feb-2020 17:46:15.844 INFO [main] org.apache.openejb.assembler.classic.Assembler.createRecipe Creating Resource(id=jtaFWToolNonJta)
15-Feb-2020 17:46:16.082 WARNING [main] org.apache.openejb.assembler.classic.Assembler.unusedProperty unused property 'maxWaitMillis' for resource 'jtaFWToolNonJta'
15-Feb-2020 17:46:16.083 WARNING [main] org.apache.openejb.assembler.classic.Assembler.unusedProperty unused property 'maxConnLifetimeMillis' for resource 'jtaFWToolNonJta'
15-Feb-2020 17:46:16.089 INFO [main] org.apache.openejb.config.AutoConfig.setJtaDataSource Adjusting PersistenceUnit fwtool-jpa <jta-data-source> to Resource ID 'jtaFWTool' from 'null'
15-Feb-2020 17:46:16.089 INFO [main] org.apache.openejb.config.AutoConfig.setNonJtaDataSource Adjusting PersistenceUnit fwtool-jpa <non-jta-data-source> to Resource ID 'jtaFWToolNonJta' from 'null'
15-Feb-2020 17:46:16.160 INFO [main] org.apache.openejb.config.AppInfoBuilder.build Enterprise application "/usr/local/tomee/webapps/fwtool" loaded.
15-Feb-2020 17:46:16.172 INFO [main] org.apache.openejb.assembler.classic.Assembler.createApplication Assembling app: /usr/local/tomee/webapps/fwtool
15-Feb-2020 17:46:16.491 INFO [main] org.apache.openejb.assembler.classic.ReloadableEntityManagerFactory.createDelegate PersistenceUnit(name=fwtool-jpa, provider=org.eclipse.persistence.jpa.PersistenceProvider) - provider time 273ms
15-Feb-2020 17:46:16.491 INFO [main] org.apache.openejb.assembler.classic.Assembler.destroyApplication Undeploying app: /usr/local/tomee/webapps/fwtool
15-Feb-2020 17:46:16.493 SEVERE [main] jdk.internal.reflect.NativeMethodAccessorImpl.invoke Error destroying child
org.apache.catalina.LifecycleException: An invalid Lifecycle transition was attempted ([before_destroy]) for component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/fwtool]] in state [STARTING_PREP]
at org.apache.catalina.util.LifecycleBase.invalidTransition(LifecycleBase.java:430)
at org.apache.catalina.util.LifecycleBase.destroy(LifecycleBase.java:316)
at org.apache.catalina.core.ContainerBase.removeChild(ContainerBase.java:814)
at org.apache.tomee.catalina.TomcatWebAppBuilder.undeploy(TomcatWebAppBuilder.java:1656)
...
...
Caused by: javax.naming.NameNotFoundException: Name "openejb/PersistenceUnit/fwtool-jpa -963118576localhost" not found.
at org.apache.openejb.core.ivm.naming.IvmContext.federate(IvmContext.java:211)
at org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:159)
at org.apache.openejb.assembler.classic.Assembler.destroyApplication(Assembler.java:2508)
Любая идея, что здесь проблема с TomEE 8?