Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

ERRO no Deploy do Wildfly

ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "agendamentoemail-0.0.1-SNAPSHOT.war")]) - failure description: {
    "WFLYCTL0412: Required services that are not installed:" => ["jboss.naming.context.java.jboss.Datasources.AgendamentoDS"],
    "WFLYCTL0180: Services with missing/unavailable dependencies" => [
        "jboss.persistenceunit.\"agendamentoemail-0.0.1-SNAPSHOT.war#agendamento\" is missing [jboss.naming.context.java.jboss.Datasources.AgendamentoDS]",
        "jboss.persistenceunit.\"agendamentoemail-0.0.1-SNAPSHOT.war#agendamento\".__FIRST_PHASE__ is missing [jboss.naming.context.java.jboss.Datasources.AgendamentoDS]"
    ]

Alguma solução para o erro acima?

6 respostas

esse AgendamentoDS já foi criado no arquivo de configuração do wildfly?

Já foi criado sim, segui os passos da vídeo aula, criando por linha de comando.

O curso deste professor é basicamente o que mais falha em tudo. Não parece que foi realmente bem pensado.

Também tive o mesmo erro. Fora os outros milhões de erros e milhões de dificuldade no andar do curso. É de entristecer demais, passar por uma coisa dessa em uma plataforma que você defende e indica pros amigos.

solução!

Pois é, não passei por um vídeo deste professor que tudo rolou perfeitamente. Vou avaliar como 1 a nota com a esperança que alguem se retrate, porque esse curso esta ridículo.

tentar dar meus 2 centavos aqui: 1 - primeiro é preciso criar o módulo do banco de dados no wildfly, não assisti o curso não sei qual banco que ele tá utilizando, vamos supor que seja o postgres, no sistema de arquivos diretorio_do_wildfly/modules/system/layers/base/org

2 criar as pastas postgresql/main

3 na pasta main colar o arquivo do driver do banco e criar um arquivo chamado module.xml, com o conteúdo:

<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.1" name="org.postgresql">
     <resources>
         <resource-root path="postgresql-9.4-1201.jdbc41.jar"/>
     </resources>
     <dependencies>
         <module name="javax.api"/>
         <module name="javax.transaction.api"/>
     </dependencies>
 </module>

O resource-root é o nome do arquivo do driver e o name vai ser referenciado no datasource posteriormente.

3- hora de configurar o datasource em wildfly-sua_instalação_wildfly/standalone/configuration/standalone.xml

4- é preciso referenciar o módulo do postgres criado anteriormente,para isso localize a seção drivers e adione o seguinte conteúdo é só jogar o seguinte código abaixo das configurações do driver do h2

 <driver name="postgresql" module="org.postgresql">
                        <xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
                    </driver>

reparar que em "module" colocamos o memo nome do módulo definido anteriormente no arquivo module.xml

5 - criar o datasource, localize a seção datasource e dicione o cógigo abaixo

  <datasource jta="true" jndi-name="java:/nomedatasourceDS" pool-name="nomedatasourceDS" enabled="true" use-java-context="true">
                    <connection-url>jdbc:postgresql://localhost:5432/meubanco</connection-url>
                    <driver>postgresql</driver>
                    <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation>
                    <pool>
                        <min-pool-size>10</min-pool-size>
                        <max-pool-size>100</max-pool-size>
                        <prefill>true</prefill>
                    </pool>
                    <security>
                        <user-name>postgres</user-name>
                        <password>postgres</password>
                    </security>
                    <statement>
                        <prepared-statement-cache-size>32</prepared-statement-cache-size>
                        <share-prepared-statements>true</share-prepared-statements>
                    </statement>
                </datasource>

O importante nesse arquivo é onde tem postgresql, note que corresponde ao nome do driver criado anteiormente e o jndiName é o nome que vai ser referenciado pelo seu persistence-unit

6 -criacao do persistence.xml : se estiver utilizando maven criar o arquivo META-INF/persistence.xml em src.main.resources, se o projeto não for maven o META-INF/persistence.xml deve ficar no src, se for um projeto ejb deve ficar dentro de ejbModule

7 - conteudo do persistence.xml

<?xml version="1.0" encoding="UTF-8"?> 
<persistence xmlns="http://java.sun.com/xml/ns/persistence" version="1.0">
    <persistence-unit name="nomepersistencePU">
        <provider>org.hibernate.ejb.HibernatePersistence</provider>        
 <jta-data-source>java:/nomedatasourceDS</jta-data-source>
 <shared-cache-mode>NONE</shared-cache-mode>
        <properties>
            <property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect" />
            <property name="hibernate.connerction.driver_class" value="org.postgresql.Driver" />
            <property name="hibernate.show_sql" value="false" />
               <property name="hibernate.format_sql" value="false" />
        </properties>
    </persistence-unit>
</persistence>

como as transações vão ser gerenciadas pelo conteainer, então ela é do tipo JTA, e basta referenciar o datasource criado nos passos anteriores

8- criação do facade bean

@Stateless
public class MeuFacade{

    @PersistenceContext(unitName="nomepersistencePU")
    public EntityManager entityManager;


public void salvar(MeuObjeto objeto){

entityManger.persist(objeto);
}

}

A atenção aqui é para o unitName, que deve corresponder ao nome definido no seu persistence.xml

com isso o projeto deve rodar