Problema com WildFly(JBoss) 8.10 + JPA 2.1

Olá pessoal decidi usar o WildFly antigo JBoss AS para servidor de Aplicação.
Mas não estou conseguindo fazer ele funcionar com o JPA. Ao adicionar o arquivo persistence.xml ele retorna o seguinte erro:

[code]10:53:26,970 INFO [org.jboss.as.jpa] (MSC service thread 1-8) JBAS011401: Read persistence.xml for AbsoftPU
10:53:27,003 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-7) MSC000001: Failed to start service jboss.deployment.unit.“Quality-Web.war”.FIRST_MODULE_USE: org.jboss.msc.service.StartException in service jboss.deployment.unit.“Quality-Web.war”.FIRST_MODULE_USE: JBAS018733: Failed to process phase FIRST_MODULE_USE of deployment "Quality-Web.war"
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:166) [wildfly-server-8.1.0.Final.jar:8.1.0.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948) [jboss-msc-1.2.2.Final.jar:1.2.2.Final]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881) [jboss-msc-1.2.2.Final.jar:1.2.2.Final]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0]
at java.lang.Thread.run(Thread.java:744) [rt.jar:1.8.0]
Caused by: java.lang.IllegalArgumentException: Empty name segment is not allowed for jdbc:mysql:
at org.jboss.msc.service.ServiceName.of(ServiceName.java:90) [jboss-msc-1.2.2.Final.jar:1.2.2.Final]
at org.jboss.msc.service.ServiceName.append(ServiceName.java:117) [jboss-msc-1.2.2.Final.jar:1.2.2.Final]
at org.jboss.as.naming.deployment.ContextNames.buildServiceName(ContextNames.java:197)
at org.jboss.as.naming.deployment.ContextNames$BindInfo.<init>(ContextNames.java:209)
at org.jboss.as.naming.deployment.ContextNames$BindInfo.<init>(ContextNames.java:200)
at org.jboss.as.naming.deployment.ContextNames.bindInfoFor(ContextNames.java:138)
at org.jboss.as.naming.deployment.ContextNames.bindInfoForEnvEntry(ContextNames.java:184)
at org.jboss.as.jpa.processor.PersistenceUnitServiceHandler.deployPersistenceUnitPhaseOne(PersistenceUnitServiceHandler.java:494)
at org.jboss.as.jpa.processor.PersistenceUnitServiceHandler.addPuService(PersistenceUnitServiceHandler.java:264)
at org.jboss.as.jpa.processor.PersistenceUnitServiceHandler.handleWarDeployment(PersistenceUnitServiceHandler.java:191)
at org.jboss.as.jpa.processor.PersistenceUnitServiceHandler.deploy(PersistenceUnitServiceHandler.java:126)
at org.jboss.as.jpa.processor.PersistenceBeginInstallProcessor.deploy(PersistenceBeginInstallProcessor.java:52)
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:159) [wildfly-server-8.1.0.Final.jar:8.1.0.Final]
… 5 more

10:53:27,006 ERROR [org.jboss.as.controller.management-operation] (DeploymentScanner-threads - 1) JBAS014613: Operation ("deploy") failed - address: ([("deployment" => "Quality-Web.war")]) - failure description: {"JBAS014671: Failed services" => {"jboss.deployment.unit.&quot;Quality-Web.war&quot;.FIRST_MODULE_USE" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.&quot;Quality-Web.war&quot;.FIRST_MODULE_USE: JBAS018733: Failed to process phase FIRST_MODULE_USE of deployment &quot;Quality-Web.war&quot;
Caused by: java.lang.IllegalArgumentException: Empty name segment is not allowed for jdbc:mysql:"}}
10:53:27,166 INFO [org.jboss.as.server] (DeploymentScanner-threads - 1) JBAS018559: Deployed "Quality-Web.war" (runtime-name : "Quality-Web.war")
10:53:27,166 INFO [org.jboss.as.controller] (DeploymentScanner-threads - 1) JBAS014774: Service status report
JBAS014777: Services which failed to start: service jboss.deployment.unit."Quality-Web.war".FIRST_MODULE_USE: org.jboss.msc.service.StartException in service jboss.deployment.unit."Quality-Web.war".FIRST_MODULE_USE: JBAS018733: Failed to process phase FIRST_MODULE_USE of deployment "Quality-Web.war"

[/code]

Procurei em forums do JBoss mais não consegui achar uma resposta para isto.

Posta o seu persistence.xml também.

Persistence.xml

&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"&gt; &lt;persistence-unit name="AbqualityPU" transaction-type="RESOURCE_LOCAL"&gt; &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/provider&gt; &lt;class&gt;br.com.abquality.entities.Veiculo&lt;/class&gt; &lt;properties&gt; &lt;property name="hibernate.connection.username" value="root"/&gt; &lt;property name="hibernate.connection.driver_class" value="com.mysql.jdbc.Driver"/&gt; &lt;property name="hibernate.connection.password" value=""/&gt; &lt;property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/teste"/&gt; &lt;property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/&gt; &lt;property name="hibernate.hbm2ddl.auto" value="update"/&gt; &lt;property name="javax.persistence.schema-generation.database.action" value="create"/&gt; &lt;/properties&gt; &lt;/persistence-unit&gt; &lt;/persistence&gt;

Esse persistence não tá errado não? Lembre-se que o WildFly é Java EE 7 e portanto adere a especificação JPA 2.1. Parece que o seu persistence é do JPA 1.0. Da uma investigada nisso.

Consegui resolver meu problema :slight_smile:
Realmente o rodrigo.uchoa tinha razão meu persistence.xml estava para a versão interior.
Para resolver o problema primeiramente tive de criar um módulo no Jboss com o driver do Mysql

Criei uma pasta /com/mysql/main dentro da pasta de módulos do Jboss copiei o driver e criei um arquivo:
module.xml

&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;module xmlns="urn:jboss:module:1.3" name="com.mysql"&gt; &lt;resources&gt; &lt;resource-root path="mysql-connector-java-5.1.32-bin.jar"/&gt; &lt;/resources&gt; &lt;dependencies&gt; &lt;module name="javax.api"/&gt; &lt;/dependencies&gt; &lt;/module&gt;

depois dentro do standalone.xml do Jboss criei um datasorce adicionando as linhas abaixo:

&lt;datasources&gt; &lt;datasource jndi-name="java:jboss/datasources/dbLocal" pool-name="dbLocal" enabled="true" use-java-context="true"&gt; &lt;connection-url&gt;jdbc:mysql://localhost:3306/teste&lt;/connection-url&gt; &lt;driver&gt;mysql.com&lt;/driver&gt; &lt;security&gt; &lt;user-name&gt;root&lt;/user-name&gt; &lt;/security&gt; &lt;/datasource&gt; &lt;drivers&gt; &lt;driver name="mysql.com" module="com.mysql"&gt; &lt;xa-datasource-class&gt;com.mysql.jdbc.jdbc2.optional.MysqlXADataSource&lt;/xa-datasource-class&gt; &lt;/driver&gt; &lt;/drivers&gt; &lt;/datasources&gt;

E meu persistence.xml ficou assim:

&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;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"&gt; &lt;persistence-unit name="Quality-WebPU" transaction-type="JTA"&gt; &lt;jta-data-source&gt;java:/jboss/datasources/dbLocal&lt;/jta-data-source&gt; &lt;exclude-unlisted-classes&gt;false&lt;/exclude-unlisted-classes&gt; &lt;properties&gt; &lt;property name="javax.persistence.schema-generation.database.action" value="create"/&gt; &lt;/properties&gt; &lt;/persistence-unit&gt; &lt;/persistence&gt;

Resolveu meu problema obrigado pessoal.

Agora estou com outro problema, ao executar a aplicação ele me retorna o seguinte erro:

Caused by: javax.persistence.PersistenceException: Unable to execute JPA schema generation create command [create table Pessoa (id integer not null, cpf varchar(255), nome varchar(255), primary key (id))] Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Table 'pessoa' already exists\"}}"

Pelo que eu vi ele diz que a tabela já existe !
Ele cria a tabela no banco atualiza normalmente se eu mudar algo nas entidades, mas sempre retorna este erro ao executar a aplicação.

Bom, o erro é claro. Você ta usando schema generation pra re-criar o banco quando o contexto sobe, mas aparentemente ta dando erro pois as tabelas já existem. Apagar antes ou simplesmente desistir do schema generation não te atende?

Eu sinceramente não lembro se o próprio persistence provider (hibernate) deveria apagar antes de re-criar.

O interessante é que eu tenho uma outra aplicação que roda em uma versão mais antiga do JPA (2.0) e JBoss 7 … e o Schema é atualizado automaticamente.

Não seria o caso de usar update no lugar de create?

Então eu estava usando o seguinte no meu persistence.xml

Mesmo assim me retornava o erro.

Fiz um downgrade na versão do JPA para a 2.0 e funcionou perfeitamente.
Meu persistence ficou assim :

&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt; &lt;persistence version="2.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd"&gt; &lt;persistence-unit name="TesteJBossPU" transaction-type="JTA"&gt; &lt;provider&gt;org.hibernate.ejb.HibernatePersistence&lt;/provider&gt; &lt;jta-data-source&gt;java:/jboss/datasources/Teste&lt;/jta-data-source&gt; &lt;exclude-unlisted-classes&gt;false&lt;/exclude-unlisted-classes&gt; &lt;properties&gt; &lt;property name="hibernate.hbm2ddl.auto" value="update"/&gt; &lt;/properties&gt; &lt;/persistence-unit&gt; &lt;/persistence&gt;

Desde já agradeço á atenção de todos :slight_smile: