Aplicação Web Completa JSF EJB JPA JAAS

Olá pessoal, bom dia.

Hoje vai ser o maior post que eu já fiz! Vamos ver uma aplicação completa. Ela será feita com tecnologias mais novas, mas darei dicas de como adaptar algumas partes para alguma tecnologia mais antiga assim que possível.

Ao final desse post você irá encontrar o código fonte para download. Pode utilizar como quiser. Basta ir para a última página e fazer o download. o/

Caso você baixe o código e não entenda alguma parte do código, eu expliquei tudo pelo decorrer desse post. Basta você ler a parte que te interessa e tirar suas dúvidas.

A aplicação será feita das seguintes tecnologias:

  • JSF 2.0 Mojarra – Utilizando Managed Beans de Request e Session.
  • Internacionalização das mensagens – Arquivo onde são definidas todas as mensagens do sistema, com isso você poderá facilmente traduzir seu programa.
  • Arquivo CSS padrão sendo utilizado como biblioteca.
  • EJB 3 – Utilizando DAO e Facades como @Stateless.
  • Generic DAO – Um DAO Genérico que terá as funções básicas de um cadastro facilitando assim a criação de entidades.
  • JPA 2 – Para mapear nossas classes no DB.
  • JAAS – Para controlar o login e nível de acesso do usuário.
  • MVC – Utilizarei o padrão MVC com pequenas alterações.
  • Postgres como banco de dados, mas vou mostrar como configurar para o MySQL também.

Não irei aplicar JUnit para teste dos métodos da View/Façade/Model, mas no link a seguir você poderá ver a técnica utilizar para usar o JUnit para testar os ManagedBeans do JSF: JUnit com HSQLDB, JPA e Hibernate.

Ferramentas para o post de hoje:

Este post será feito em várias páginas. Essa primeira página consta apenas os detalhes técnicos que serão utilizados na aplicação.

Não irei programar o meu modelo/DAO para interface, apenas para poupar espaço. Lembre de sempre programar para interface (Design Pattern – Strategy).

Antes de avançar, tenha certeza de que você instalou o JBoss Tools e depois o JBoss 7 (nessa ordem).

383 thoughts on “Aplicação Web Completa JSF EJB JPA JAAS

    • Olá Marcio, boa noite.

      Como se trata de uma aplicação completa abri mão de fazer um post pequeno, como nos outros encontrados aqui. [=

      JBoss 7 está realmente muito rápido. Gostei até agora do que vi.

      Obrigado pela visita. [=

  1. Olá, parabéns pelo ótimo material divulgado :)

    Já vou baixar e testar!

    Uma dúvida. Utilizo vários bancos de dados e várias IDEs (MySQL, Firebird, Eclipse, Netbeans). Terá algum problema ao rodar? por exemplo, se em meu eclipse costumo utilizar o tomcat, tudo bem utilizar o JBoss para esse projeto ou poderá ocorrer erros por conta de tecnologias “cruzadas” ?

    • Olá Bruno, bom dia.

      Esse projeto não iria rodar no Tomcat ou Jetty pois ele utiliza EJB e esses dois servidores não iriam suportar.

      O código irá rodar no Netbeans mas você não terá a facilidade de apenas importar para seu workspace como faria com o Eclipse.

      Esse código iria rodar em outros servidores como Glassfish, Websphere.

      Obrigado por passar. [=

  2. Olá,

    O método isDogWithAllData escrito na página 4 não está servindo para nada, somente para lançar uma exceção. Não baixei o código para ver se exite utilidade no código final ou se ele foi “refactorado”. Fica a dica.

    Abrs

    • Leonardo, bom dia.

      Essa validação é uma validação bem sutil, no if em que algum dado inválido existir o atributo hasError receberá true e ao final no método a exception será disparada. Esse método ele é invocado nos métodos save e update.

      É apenas uma proteção para que não exista dados inválidos.

      Caso você baixe o código, ao tentar cadastrar/alterar um cachorro sem nome ou com o peso <= 0 você verá que a exception acontecerá. Obrigado pela visita, volte sempre. [=

    • Luciano, bom dia.

      Você seguiu todos os passos? Quanto ao DB tanto quanto ao instalar JBoss Tools e o JBoss 7? Alterou os arquivos de configurações do JBoss 7?

      Quando você subiu o servidor, apareceu alguma mensagem de erro?

      Caso tenha aparecido, te aconselho a postar no fórum do GUJ sua pergunta pois outros profissionais poderão te ajudar mais prontamente, pois lá você poderá postar seu código e será de mais fácil entendimento.

      Geralmente, erro 404 acontece quando sua aplicação não subiu ou então quando você está tentando acessar por um link errado. No exemplo desse post, o link correto é: http://localhost:8080/CrudJSF

      Obrigado pela visita.

  3. @uaihebert: Hebert o q faltou e eu refiz era criar o CrudEJB.jar e só dps chamar o JBoss, feito isso td funcionou perfeitamente, me indique um bom livro de EJB+JBoss gostei muito desses caras, como simplifica as coisas…vlw!

    • Olá Luciano, boa tarde.

      Gosto muito do EJB, realmente facilita e muito a vida.

      Infelizmente não tenho como te indicar um livro que junte os dois.

      Posso te indicar dois bons livros sobre EJB: Enterprise JavaBeans 3.0 – Richard Monson-Haefel, Bill Burke // Pro EJB 3: Java Persistence API – Michael Keith, Merrick Schincariol.

      Estou gostando muito do segundo, mas ele é menos técnico que o primeiro.

      Que bom que funcionou, qualquer outra dúvida basta falar.

  4. Belo trabalho.

    Estou com problemas ao seguir este artigo.
    Na página 6, quando manda startar o Jboss pela primeira vez, deveria estar gerando as tabelas automaticamente, mas não estão sendo geradas, e olhando o log tenho esta mensagem:

    16:43:55,054 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-3) MSC00001: Failed to start service jboss.deployment.unit.”CrudEJB.war”.INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.unit.”CrudEJB.war”.INSTALL: Failed to process phase INSTALL of deployment “CrudEJB.war”
    Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: No component found for type ‘com.dao.UserDAO’ with name null
    16:43:55,273 INFO [org.jboss.as.server.controller] (DeploymentScanner-threads – 2) Deployment of “CrudEJB.war” was rolled back with failure message {“Failed services” => {“jboss.deployment.unit.”CrudEJB.war”.INSTALL” => “org.jboss.msc.service.StartException in service jboss.deployment.unit.”CrudEJB.war”.INSTALL: Failed to process phase INSTALL of deployment “CrudEJB.war””},”Services with missing/unavailable dependencies” => [“jboss.naming.context.java.module.CrudEJB.CrudEJB.ValidatorFactory missing [ jboss.naming.context.java.module.CrudEJB.CrudEJB ]”,”jboss.naming.context.java.module.CrudEJB.CrudEJB.Validator missing [ jboss.naming.context.java.module.CrudEJB.CrudEJB ]”]}
    16:43:55,273 INFO [org.jboss.as.server.deployment] (MSC service thread 1-2) Stopped deployment CrudEJB.war in 4ms
    16:43:55,273 ERROR [org.jboss.as.deployment] (DeploymentScanner-threads – 1) {“Composite operation failed and was rolled back. Steps that failed:” => {“Operation step-2″ => {“Failed services” => {“jboss.deployment.unit.”CrudEJB.war”.INSTALL” => “org.jboss.msc.service.StartException in service jboss.deployment.unit.”CrudEJB.war”.INSTALL: Failed to process phase INSTALL of deployment “CrudEJB.war””},”Services with missing/unavailable dependencies” => [“jboss.naming.context.java.module.CrudEJB.CrudEJB.ValidatorFactory missing [ jboss.naming.context.java.module.CrudEJB.CrudEJB ]”,”jboss.naming.context.java.module.CrudEJB.CrudEJB.Validator missing [ jboss.naming.context.java.module.CrudEJB.CrudEJB ]”]}}}

    Sabe o que posso estar fazendo errado? Desde já agradeço.

  5. Bom, agora que terminei meus testes posso dizer com propriedade.

    Um ótimo material de estudos.

    Para quem já tem uma noção básica de Java Web esta muito simples, eu que não trabalho com java no dia-a-dia consegui implementar, tendo alguns pequenos problemas durante o passo a passo, grande maioria por desatenção minha.

    Parabens, e aguardo o próximo.

  6. Parabéns pelo post.

    Acho que ficou faltando falar mais sobre o passo “Adicione o projeto EJB ao JBoss.”

    Eu segui todos os passos, iniciei o JBoss, mas as tabelas não foram criadas. Parece que a aplicação não rodou.

    Não é preciso gerar o jar e fazer o deploy?

    • Olá Thiago, boa tarde.

      Desculpe por não ter falado, acabei por achar que seria um passo fácil.

      Mas, eu acabo por descrever esse passo na página 11 quando a aplicação está completa. http://uaihebert.com/?p=836&page=11

      Os passos feitos com o EAR, basta fazer com o projeto EJB apenas.

      Obrigado pela dica, vou ficar mais atento no próximo post. [=

    • Olá Luciano, boa tarde.

      Não sei te falar também pq não gerou o auto-incremento uma vez que está configurado como AUTO.

      Uma teoria que tenho é que como o usuário foi inserido manualmente, realmente o auto-incremento na tabela User não funcionaria no primeiro registro. Mas para dados da tabela Dog deveria ter funcionado, ou então, você teria erro na hora de inserir novos valores.

      Caso seu código apresente algum erro, poste no GUJ seu código que outras pessoas poderão te ajudar, pois minha resposta pode demorar. E aqui não é um bom lugar para se analisar código.

      Att,

  7. Olá!
    Parabéns pelo post!

    Eu tive este problema:
    ————————————————————————————————————–
    javax.servlet.ServletException: Can’t find bundle for base name messages, locale pt_BR
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)
    root cause

    java.util.MissingResourceException: Can’t find bundle for base name messages, locale pt_BR
    java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1499)
    java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1322)
    java.util.ResourceBundle.getBundle(ResourceBundle.java:1028)
    com.sun.faces.application.ApplicationResourceBundle.getResourceBundle(ApplicationResourceBundle.java:124)
    com.sun.faces.application.ApplicationAssociate.getResourceBundle(ApplicationAssociate.java:608)
    com.sun.faces.application.ApplicationImpl.getResourceBundle(ApplicationImpl.java:698)
    com.sun.faces.el.FacesResourceBundleELResolver.getValue(FacesResourceBundleELResolver.java:83)
    com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
    com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
    org.apache.el.parser.AstIdentifier.getValue(AstIdentifier.java:67)
    org.apache.el.parser.AstValue.getValue(AstValue.java:115)
    org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:187)
    com.sun.faces.facelets.el.ELText$ELTextVariable.writeText(ELText.java:224)
    com.sun.faces.facelets.el.ELText$ELTextComposite.writeText(ELText.java:148)
    com.sun.faces.facelets.compiler.TextInstruction.write(TextInstruction.java:85)
    com.sun.faces.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:82)
    com.sun.faces.facelets.compiler.UILeaf.encodeAll(UILeaf.java:183)
    javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
    javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1756)
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
    javax.faces.component.UIComponent.encodeAll(UIComponent.java:1759)
    com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:401)
    com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
    com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
    com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
    javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
    —————————————————————————————————————-
    Tens idéia do que pode estar acontecendo?

    Deus te abençoe

  8. Ola!
    Primeiro parabéns pela post.
    mas tive um pequeno erro.
    Quando não aparece nada na tela so o erro de servido
    HTTP Status 404 – /CrudJSF/

    o que pode ser fiz igual ao seu revisei e nada!
    onde pode tar o erro?
    desde já agradeço.Obrigado

    • Olá Leo, obrigado pela visita.

      Parece que ficou faltando adicionar o EAR no servidor JBoss.

      Se não foi isso, verifique no console se alguma outra mensagem de erro apareceu ao realizar o start do servidor.

      Att,

  9. No Eclipse, eu atualizei o Jboss Tools para eu ter o Jboss 7 disponível… eu configuro o Jboss na aba Server, new Server JBoss 7, aponto para a pasta que ele está.

    Dou o Start e ele roda sem problemas. Mas quando eu paro o JBoss e tento Iniciar novamente ele dá erro.

    Eu até criei uma pergunta no GUJ sobre isso do JBoss: http://www.guj.com.br/java/265172-erro-ao-iniciar-o-jboss-pela-segunda-vez-no-eclipse#1387906

    Poderia me dar um help nisso? (:

    Obrigado

    • Olá Edson, boa tarde.

      Pelo que vi você está utilizando o JBoss no Linux correto?

      Eu não sei como funciona muito o ambiente Linux com JBoss, será que ao parar o JBoss pela primeira vez algum servidor do JBoss está ficando ativo?

      Pela mensagem de erro parecia isso.

      Desculpe não poder ajudar mais, caso algum parceiro de trabalho meu saiba o que é vou pedir para ajudar lá no GUJ.

      Obrigado pela visita.

  10. Primeiro parabéns pelo post muito bacana vai me ajudar muito no meus estudos

    mas quando crio o CrudEAR ele deixa todos com erro o CrudEJB quanto o CrudJSF

    e quando dou start no servido aparece esse erro

    O que pode ser?

    22:28:48,446 INFO [org.jboss.modules] JBoss Modules version 1.0.1.GA
    22:28:48,738 INFO [org.jboss.msc] JBoss MSC version 1.0.0.GA
    22:28:48,791 INFO [org.jboss.as] JBoss AS 7.0.0.Final “Lightning” starting
    22:28:49,205 ERROR [stderr] Exception in thread “Controller Boot Thread” java.lang.RuntimeException: org.jboss.as.controller.persistence.ConfigurationPersistenceException: Failed to parse configuration
    22:28:49,205 ERROR [stderr] at org.jboss.as.controller.AbstractControllerService$1.run(AbstractControllerService.java:89)
    22:28:49,206 ERROR [stderr] at java.lang.Thread.run(Thread.java:636)
    22:28:49,206 ERROR [stderr] Caused by: org.jboss.as.controller.persistence.ConfigurationPersistenceException: Failed to parse configuration
    22:28:49,206 ERROR [stderr] at org.jboss.as.controller.persistence.XmlConfigurationPersister.load(XmlConfigurationPersister.java:115)
    22:28:49,206 ERROR [stderr] at org.jboss.as.controller.AbstractControllerService.boot(AbstractControllerService.java:104)
    22:28:49,206 ERROR [stderr] at org.jboss.as.server.ServerService.boot(ServerService.java:193)
    22:28:49,206 ERROR [stderr] at org.jboss.as.controller.AbstractControllerService$1.run(AbstractControllerService.java:83)
    22:28:49,206 ERROR [stderr] … 1 more
    22:28:49,207 ERROR [stderr] Caused by: javax.xml.stream.XMLStreamException: Failed to load module
    22:28:49,207 ERROR [stderr] at org.jboss.as.controller.parsing.CommonXml.parseExtensions(CommonXml.java:333)
    22:28:49,207 ERROR [stderr] at org.jboss.as.controller.parsing.StandaloneXml.readServerElement(StandaloneXml.java:145)
    22:28:49,207 ERROR [stderr] at org.jboss.as.controller.parsing.StandaloneXml.readElement(StandaloneXml.java:91)
    22:28:49,207 ERROR [stderr] at org.jboss.as.controller.parsing.StandaloneXml.readElement(StandaloneXml.java:79)
    22:28:49,208 ERROR [stderr] at org.jboss.staxmapper.XMLMapperImpl.processNested(XMLMapperImpl.java:100)
    22:28:49,208 ERROR [stderr] at org.jboss.staxmapper.XMLMapperImpl.parseDocument(XMLMapperImpl.java:59)
    22:28:49,208 ERROR [stderr] at org.jboss.as.controller.persistence.XmlConfigurationPersister.load(XmlConfigurationPersister.java:107)
    22:28:49,208 ERROR [stderr] … 4 more
    22:28:49,208 ERROR [stderr] Caused by: org.jboss.modules.ModuleNotFoundException: Module org.jboss.as.pojo:main is not found
    22:28:49,209 ERROR [stderr] at org.jboss.modules.LocalModuleLoader.findModule(LocalModuleLoader.java:121)
    22:28:49,209 ERROR [stderr] at org.jboss.modules.ModuleLoader.loadModuleLocal(ModuleLoader.java:245)
    22:28:49,209 ERROR [stderr] at org.jboss.modules.ModuleLoader.preloadModule(ModuleLoader.java:194)
    22:28:49,209 ERROR [stderr] at org.jboss.modules.LocalModuleLoader.preloadModule(LocalModuleLoader.java:97)
    22:28:49,209 ERROR [stderr] at org.jboss.modules.ModuleLoader.loadModule(ModuleLoader.java:176)
    22:28:49,209 ERROR [stderr] at org.jboss.modules.ModuleLoader.loadModule(ModuleLoader.java:172)
    22:28:49,210 ERROR [stderr] at org.jboss.as.controller.parsing.CommonXml.parseExtensions(CommonXml.java:317)
    22:28:49,210 ERROR [stderr] … 10 more

    • Olá João, boa tarde.

      Realmente um erro muito estranho.

      Me vem duas soluções a mente, uma seria conferir o arquivo standalone.xml e verifique se você não deixou alguma tag aberta.

      Outra solução seria baixar novamente o JBoss pois sua versão pode estar com algum arquivo corrompido.

      Obrigado pela visita.

      Att,

  11. cara
    parabéns pelo teu artigo;
    mas tenho algumas dúvidas.
    1) por que tanta anotação de EJB (desculpe a ignorância, mas para que serve, ele é uma API, ou um padrão tipo DAO)

    2)por que colocou tanta coisa no faces conf afinal na versão do JSF 2.1 não é necessário esse arquivo, ele é mais usado para navegações mais dramáticas digamos assim, pois tu pode por essas navegações no próprio managed beans

    mas o que realmente importa é o EJB

    • Olá Jaisson, bom dia.

      1) O EJB é um framework próprio para controlar as transações da aplicação. Com isso você não vai precisar ficar abrindo conexão com o Banco de Dados (BD) e fechar toda hora, fazer commit/rollback de modo manual, etc. As anotações que pertencem ao EJB não são muitas, são basicamente @Stateless, @EJB, @Local (que é opcional). Cada uma tem seu significado e sua função, mas para um CRUD simples igual ao criado, essas anotações são suficientes.

      2) Realmente a navegação direta do MB é uma vantagem, mas eu gosto de pensar do seguinte modo. Imagine que na hora de subir a aplicação, você teve um problema na página a.xhtml, e que você não consegue localizar o problema. Para solucionar o problema você poderia criar uma página chamada b.xhtml onde você deixaria o código da versão antiga. Se sua navegação estiver descrita no código fonte, você precisaria de gerar um novo arquivo war/ear e realizar o deploy novamente. Um deploy de uma aplicação grande, é custoso e geralmente envolve muitas pessoas. Caso sua navegação esteja no faces-config, basta você editar esse arquivo que você conseguirá alterar sua aplicação. Outro fator é que caso você altere sua página de diretório você precisará ter certeza de que todo o código java (dentro dos seus MBs) que aponta para essa página esteja direcionado para a página nova. Lógico que isso é escolha pessoal, pois no seu MB você poderia ter constantes públicas. Eu penso que essa alteração teria menos impacto em um arquivo xml do que em uma classe java.

      Espero ter sido claro, obrigado pela visita.

      Se não ficou claro algo, pode perguntar novamente. [=

  12. e ai cara
    parabéns pelo tutorial
    mas como eu já percebi seguindo outros tutorias nenhum mostra como fazer um pesquisa nem que seja simples, apenas adicionar, alterar e excluir, obvio listar,

    mas imagine que tenha uns 450 cachorros cadastrados e eu queria pesquisar apenas o cachorro K-9 como ficaria os métodos. tipo como seria o método de pesquisa e o que mostra a lista de resultados.
    Agradeceria muito se me mostrar como fazer isso.
    Boa noite

  13. Hebert,

    Parece q o post tá bem interessante :)
    Vou dar uma futucada nele, pois estou apanhando do merge (EJB 3.1), no meu caso n tá atualizando, vou tentar seguir mais ou menos o modelo q vc criou. Eu estava fazendo mais ou menos com a mesma arquitetura, mas sem as interfaces e a camada Facade.

  14. Artigo muito bom.
    Tenho uma dúvida, eu preciso logar as atividades dos usuários no banco de dados, qualquer mudança no banco deverá ser auditada, a dúvida é: como eu consigo pegar o usuário que está logado na aplicação e o IP de onde veio a requisição do lado do EJB? Não estou conseguindo obter essas informações.

    Valeu

    • Olá Geraldo, boa tarde.

      Desculpe a demora em responder, estou ocupado finalizando minha pós em Java. [=

      O IP você pode conseguir através do HTTPRequest da sua aplicação e enviar para o EJB.

      Quanto à quem está chamando você poderia fazer conforme está nesse post: http://www.packtpub.com/article/ejb-3-security.
      Declarar private @Resource SessionContext ctx; e com ele você pode invocar ctx.getCallerPrincipal();

      Com isso você irá ter quem está invocando seu método.

  15. Eu estou preso no passo 6! O jBoss server não inicia, tanto no postgres como no mysql.
    O servidor só inicia quando eu retiro a configuração do standalone.
    As linha iniciais do erro. Do Mysql e depois do Postgres.(tentei colocar o trecho do standalone, mas não saiu no comentário)

    ERROR [org.jboss.as.controller] JBAS014601: Error booting the container: java.lang.RuntimeException: org.jboss.as.controller.persistence.ConfigurationPersistenceException: JBAS014676: Failed to parse configuration
    at org.jboss.as.controller.AbstractControllerService$1.run(AbstractControllerService.java:161) [jboss-as-controller-7.1.0.Final.jar:7.1.0.Final]
    at java.lang.Thread.run(Unknown Source) [rt.jar:1.7.0_02]
    Caused by: org.jboss.as.controller.persistence.ConfigurationPersistenceException: JBAS014676: Failed to parse configuration
    at org.jboss.as.controller.persistence.XmlConfigurationPersister.load(XmlConfigurationPersister.java:125) [jboss-as-controller-7.1.0.Final.jar:7.1.0.Final]
    at org.jboss.as.controller.AbstractControllerService.boot(AbstractControllerService.java:187) [jboss-as-controller-7.1.0.Final.jar:7.1.0.Final]
    at org.jboss.as.server.ServerService.boot(ServerService.java:261) [jboss-as-server-7.1.0.Final.jar:7.1.0.Final]
    at org.jboss.as.controller.AbstractControllerService$1.run(AbstractControllerService.java:155) [jboss-as-controller-7.1.0.Final.jar:7.1.0.Final]
    … 1 more
    —————————————————————————————————-

    ERROR [org.jboss.as.controller] JBAS014601: Error booting the container: java.lang.RuntimeException: org.jboss.as.controller.persistence.ConfigurationPersistenceException: JBAS014676: Failed to parse configuration
    at org.jboss.as.controller.AbstractControllerService$1.run(AbstractControllerService.java:161) [jboss-as-controller-7.1.0.Final.jar:7.1.0.Final]
    at java.lang.Thread.run(Unknown Source) [rt.jar:1.7.0_02]
    Caused by: org.jboss.as.controller.persistence.ConfigurationPersistenceException: JBAS014676: Failed to parse configuration
    at org.jboss.as.controller.persistence.XmlConfigurationPersister.load(XmlConfigurationPersister.java:125) [jboss-as-controller-7.1.0.Final.jar:7.1.0.Final]

    • Pinheiro, boa tarde.

      Verifique então se ao colocar o código do stand-alone se alguma tag não está ficando incompleta.

      O que você pode fazer é baixar do post e utilizar o stand-alone em questão.

      Irá facilitar, e tenho certeza de que está funcionando.

      Até a próxima.

  16. Obrigado pela ajuda.
    Se você poder tentar esclarecer essa duvida minha:
    Eu já tinha copiado o código do post e do projeto pronto, mas fiz mais uma vez. Dessa vez copiei o datasources inteiro (pelo que eu entendi a primeira parte não influencia nesse projeto). A única coisa que eu mudei foi a senha que está ‘root’ ao invés de ‘postgres’. Meu servidor postgres está com porta 5432 em localhost, criei uma database chamada CrudDB
    CREATE DATABASE "CrudDB"
    WITH OWNER = postgres
    ENCODING = 'UTF8'
    TABLESPACE = pg_default
    LC_COLLATE = 'Portuguese_Brazil.1252'
    LC_CTYPE = 'Portuguese_Brazil.1252'
    CONNECTION LIMIT = -1;

    Tem mais alguma outra informação que eu possa estar passando para você?
    Uma outra pergunta: Eu tenho feito algumas vídeo aulas de hibernate+jpa e jsf, então já tenho as bibliotecas deles. Quais bibliotecas eu poderia estar baixando para igualar as libs do jboss nesse projeto?

    De qualquer forma obrigado pela ajuda novamente e (acho que não consegui transparecer no ultimo comentário) excelente tutorial, eu já consegui achar muitos, mas nenhum foi tão completo em quesito de pacote e login! =)

    • Ola Pinheiro, boa tarde.
      Você já fez todas configurações necessárias ao meu ver.
      Não tenho como te falar todas bibliotecas de bate e pronto.

      Esse post mostra como montar uma aplicação desktop com hibernate, e nele lista todas as bibliotecas necessárias: [url=http://uaihebert.com/?p=27]Hibernate 3 com JPA 2[/url]. Basta você colocar as bibliotecas do post dentro da pasta WEB-INF/lib.

      Obrigado pela visita e pelo apoio
      Até a próxima.

  17. Boa tarde, inicialmente parabéns e obrigado pelo excelente post.

    Segui passo a passo somente fazendo as adaptações para utilizar MySql.
    Aparentemente tudo esta correto, as tabelas foram criadas conforme previsto.
    No entanto ao tentar acessar a app no browser estou recebendo o seguinte erro:
    HTTP Status 404 – /CrudJSF/
    ——————————————————————————-
    type Status report
    message /CrudJSF/
    description The requested resource (/CrudJSF/) is not available.
    ——————————————————————————–
    JBoss Web/7.0.1.Final

    Alguma idéia do que possa estar ocorrendo ?

    Obrigado.

    • Olá Edmilson, boa tarde.

      Verifique o log e veja se não aconteceu um erro na hora que você “startou” o servidor.

      Pode ter acontecido algum erro e a aplicação não ficou disponível.

      Obrigado pela visita.

  18. UaiHebert, estou brincando aqui com a aplicação e a única parte que não gostei foi a dos Facades. Não seria melhor dar um jeito de usar a Validation API (anotações)?

    • Olá Thiago, boa noite.

      No caso dessa aplicação os Facades têm apenas pouca utilização, mais como validador mesmo.

      Mas eu gosto de utilizar Facades pelas seguintes características:

      • Ajuda a desacoplar o código: caso seja necessário alterar alguma coisa no DAO, a VIEW continuará intacta. Imagine se precisássemos arrancar o DAO fora ou então renomear. Apenas o Façade sofrerá alteração.
      • Agrupa as regras de negócio: Imagine que precisaremos fazer um processamento de dados onde vários “ifs” serão criados. O melhor lugar para se colocar seria em um Façade. Um Façade não irá contem regra de view e nem regra de DAO. Com isso aumentamos a coesão da classe, e iríamos precisar mesclar regra de negócio com regras de consultas (presentes nos DAOs).
      • Session Bean: Repare que todos os Façades estão como Stateless com isso caso você queria criar outro projeto e utilizar o EJB ficará muito simples. Com ele você não precisa fazer controle de transação de modo manual.

      Realmente o código desse projeto é bem simples, e se o Façade que criei fosse apenas para Validação, realmente a API de validações seria bem mais prático. Mas minha intenção era criar uma aplicação já com todas as camadas necessárias para serem utilizadas, pensei em criar um código para uma futura aplicação “parruda”. =D

      Espero ter respondido sua pergunta.
      Obrigado pela visita.

  19. Entendi e concordo com você. Fiquei com uma birra desses Facades mas são realmente necessários para sistemas maiores pois pode conter lógica de negócio. Baixei o seu projeto e começei a fazer modificações para meu próprio gosto. Adicionei mais métodos na GenericDAO e ao invés de usar um parametro (a entidade, usei dois (a entidade e a chave da entidade, exemplo: Dog, Integer), assim mudei o método delete e find para usar a chave genérica. Criei uma classe abstrata EntityBase que é estendida pelas entidades e tem alguns métodos como getId, hashCode, equals. Criei uma classe JsfUtil para mexer com as mensagens e outros coisas (request, session, etc) do FacesContext, ela é usada nos MB’s. E criei uma classe abstrata MB chamada Controller, ela é estendida pelos MB ( DogMB, UserMB…). O Controller tem a entidade genérica (Dog por exemplo), uma lista de entidade genérica e os métodos CRUD prontos, mas que podem ser sobreescritos. Quando falo “genérica” to dizendo que usa Generics. Ta ficando legal… o objetivo e´fazer uma base para ser usado/estendido e levemente modificado quando eu precisar… O que acha?

    • Tá legal sim.

      Eu também sempre crio uma classe tipo seu JsfUtil. Economiza bastante código e aumenta a coesão dos beans.

      O GenericDAO realmente necessita de mais métodos, mas lembre-se de colocar nele apenas os métodos que serão utilizados por todas as classes. [=

      Legal sua arquitetura.

      Obrigado pela visita.

  20. Muito obrigado pela ajuda e, novamente, pelo otimo tutorial. Eu não consegui rodar ele e não tive mais oportunidades de tentar com o postgres. Assim que sobrar um tempo eu vou tentar implementar o projeto e ver o que rola =)

    A proposito, li bastante coisa de outros posts e me ajudaram muito com o que venho estudando =)
    Muito Obrigado!

    • Rodrigo boa tarde.

      Fico feliz de ter escrito posts que puderam te ajudar cara.

      Obrigado pela visita e volte sempre.
      [=

  21. Olá muito bom seu post!

    Por acaso, ao se utilizar JAAS, existe a possibilidade de se trabalhar renderização condicional?

    Certamente já deve ter utilizado o SpringSecurity (que inclusive estou confeccionando um post e um artigo), e neste, há as tags que proveem renderizar partes de um tela a partir das expressions com os ROLES.

    Aproveitando, tenho um modesto blog, dá um look quanto tiver um time: http://www.serjava.blogspot.com, de repente, se se interessar podemos trocar referências em ambos os blogs.

    []s

    • Olá Fábio, boa tarde.

      Geralmente esse tipo de ação condicional é feita como demonstrado aqui pelo UserMB. Você consulta ao JAAS se o usuário tem o papel necessário e ele envia a resposta. E para definir o que pode ou não ser exibido, basta colocar utilizar o rendered no componente.

      Na página 8, UserMB você poderá ver como essa pergunta é feita e na 9 como é utilizada.

      Blog modesto o seu? Rapaz, se eu souber 5% de tudo que tem lá eu estarei muito feliz! [=

      Quanto à trocar referências a gente pode pensar nisso depois, no momento estou pensando em como deixar o layout do blog mais leve, e para isso, eu necessitaria arrancar/trocar/remodelar o layout.

      Até mais! o_

  22. Ao tentar instalar o JBoss Tools fica dando o seguinte erro:
    Cannot complete the install because of a conflicting dependency.
    Software being installed: JBoss JAX-RS Tools 1.2.2.v20120323-1522-H83-Beta2 (org.jboss.tools.ws.jaxrs.feature.feature.group 1.2.2.v20120323-1522-H83-Beta2)
    Software currently installed: Eclipse IDE for Java EE Developers 1.4.0.20110615-0550 (epp.package.jee 1.4.0.20110615-0550)
    Only one of the following can be installed at once:
    Debug UI 3.7.102.v20111129-1423_r372 (org.eclipse.debug.ui 3.7.102.v20111129-1423_r372)
    Debug UI 3.7.0.v20110518 (org.eclipse.debug.ui 3.7.0.v20110518)
    Debug UI 3.6.0.v20100601-1530 (org.eclipse.debug.ui 3.6.0.v20100601-1530)
    Debug UI 3.6.3.v20101201_r362 (org.eclipse.debug.ui 3.6.3.v20101201_r362)
    Debug UI 3.6.1.v20100901_r361 (org.eclipse.debug.ui 3.6.1.v20100901_r361)
    Debug UI 3.7.101.v20110817_r371 (org.eclipse.debug.ui 3.7.101.v20110817_r371)
    Cannot satisfy dependency:
    From: Eclipse IDE for Java EE Developers 1.4.0.20110615-0550 (epp.package.jee 1.4.0.20110615-0550)
    To: org.eclipse.epp.package.jee.feature.feature.group [1.4.0.20110615-0550]
    Cannot satisfy dependency:
    From: Java EE IDE Feature 1.4.0.20110615-0550 (org.eclipse.epp.package.jee.feature.feature.group 1.4.0.20110615-0550)
    To: org.eclipse.platform.feature.group [3.7.0.v20110530-9gF7UHNFFt4cwE-pkZDJ7oz-mj4OSEIlu9SEv0f]
    Cannot satisfy dependency:
    From: Eclipse Platform 3.7.0.v20110530-9gF7UHNFFt4cwE-pkZDJ7oz-mj4OSEIlu9SEv0f (org.eclipse.platform.feature.group 3.7.0.v20110530-9gF7UHNFFt4cwE-pkZDJ7oz-mj4OSEIlu9SEv0f)
    To: org.eclipse.debug.ui [3.7.0.v20110518]
    Cannot satisfy dependency:
    From: JBoss JAX-RS Tools 1.2.2.v20120323-1522-H83-Beta2 (org.jboss.tools.ws.jaxrs.feature.feature.group 1.2.2.v20120323-1522-H83-Beta2)
    To: org.jboss.tools.ws.jaxrs.ui [1.2.2.v20120323-1522-H83-Beta2]
    Cannot satisfy dependency:
    From: JBoss JAX-RS Tooling (UI) 1.2.2.v20120323-1522-H83-Beta2 (org.jboss.tools.ws.jaxrs.ui 1.2.2.v20120323-1522-H83-Beta2)
    To: bundle org.eclipse.debug.ui [3.7.101,3.8.0)

    O que pode ser?

    • Olá Raimundo, boa tarde.

      Pode ser que o seu download do JBoss 7 se corrompeu.

      Tente fazer o download novamente.

      Obrigado pela visita.

  23. Olá boa dia, eu segui o tutorial até a pagina 6, mas ao executar o JBoss não cria as tabelas no banco. O que pode ser?
    Obs.: Eu comparei o código com o seu e está exatamente igual.

    Desde já muito obrigado!

    • Raimundo, bom dia.

      Verifique no console do JBoss se aparece alguma mensagem de erro.

      Veja também usuário/senha de conexão no banco de dados. [=

      • Não dá erro, acho q não…rsrs… aparece isso:
        11:47:49,786 Informações [org.jboss.modules] JBoss Modules version 1.0.2.GA
        11:47:50,086 INFO [org.jboss.msc] JBoss MSC version 1.0.1.GA
        11:47:50,135 INFO [org.jboss.as] JBoss AS 7.0.2.Final “Arc” starting
        11:47:51,086 WARN [org.jboss.as] No security realm defined for native management service, all access will be unrestricted.
        11:47:51,095 INFO [org.jboss.as] creating http management service using network interface (management) port (9990)
        11:47:51,097 WARN [org.jboss.as] No security realm defined for http management service, all access will be unrestricted.
        11:47:51,109 INFO [org.jboss.as.logging] Removing bootstrap log handlers
        11:47:51,125 INFO [org.jboss.as.connector.subsystems.datasources] (Controller Boot Thread) Deploying non-JDBC-compliant driver class org.postgresql.Driver (version 9.1)
        11:47:51,131 INFO [org.jboss.as.connector.subsystems.datasources] (Controller Boot Thread) Deploying JDBC-compliant driver class org.h2.Driver (version 1.2)
        11:47:51,149 INFO [org.jboss.as.clustering.infinispan.subsystem] (Controller Boot Thread) Activating Infinispan subsystem.
        11:47:51,257 INFO [org.jboss.as.naming] (Controller Boot Thread) JBAS011800: Activating Naming Subsystem
        11:47:51,269 INFO [org.jboss.as.naming] (MSC service thread 1-4) JBAS011802: Starting Naming Service
        11:47:51,277 INFO [org.jboss.as.osgi] (Controller Boot Thread) JBAS011910: Activating OSGi Subsystem
        11:47:51,297 INFO [org.jboss.as.security] (Controller Boot Thread) Activating Security Subsystem
        11:47:51,304 INFO [org.jboss.remoting] (MSC service thread 1-3) JBoss Remoting version 3.2.0.Beta2
        11:47:51,316 INFO [org.xnio] (MSC service thread 1-3) XNIO Version 3.0.0.Beta3
        11:47:51,354 INFO [org.xnio.nio] (MSC service thread 1-3) XNIO NIO Implementation Version 3.0.0.Beta3
        11:47:51,602 INFO [org.apache.catalina.core.AprLifecycleListener] (MSC service thread 1-6) The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:javajre7bin;C:WindowsSunJavabin;C:Windowssystem32;C:Windows;native;C:Program FilesCommon FilesMicrosoft SharedWindows Live;C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;C:Program FilesWIDCOMMBluetooth Software;C:Program FilesWIDCOMMBluetooth Softwaresyswow64;C:Program FilesIntelWiFibin;C:Program FilesCommon FilesIntelWirelessCommon;C:Program FilesBroadcomBroadcom 802.11 Network AdapterDriver;C:Program FilesCommon FilesMicrosoft SharedWindows Live;C:Program FilesIntelWiFibin;C:Program FilesCommon FilesIntelWirelessCommon;.
        11:47:51,628 INFO [org.jboss.as.ee] (Controller Boot Thread) Activating EE subsystem
        11:47:51,807 INFO [org.jboss.as.jmx.JMXConnectorService] (MSC service thread 1-2) Starting remote JMX connector
        11:47:51,841 INFO [org.apache.coyote.http11.Http11Protocol] (MSC service thread 1-3) Starting Coyote HTTP/1.1 on http-localhost-127.0.0.1-8080
        11:47:51,965 INFO [org.jboss.as.remoting] (MSC service thread 1-8) Listening on /127.0.0.1:9999
        11:47:52,248 INFO [org.jboss.as.connector] (MSC service thread 1-5) Starting JCA Subsystem (JBoss IronJacamar 1.0.3.Final)
        11:47:52,354 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-4) Bound data source
        11:47:52,511 INFO [org.jboss.as.deployment] (MSC service thread 1-3) Started FileSystemDeploymentService for directory C:javajboss-as-7.0.2.Finalstandalonedeployments
        11:47:52,539 INFO [org.jboss.as] (Controller Boot Thread) JBoss AS 7.0.2.Final “Arc” started in 3093ms – Started 95 of 150 services (55 services are passive or on-demand)

        • Raimundo, bom dia.

          Realmente não dá erro, mas você adicionou o projeto EJB ao JBoss?

          Eu vi que você declarou o DS mas ele não exibiu mensagem alguma de deploy do projeto EJB. [=

          Att,

  24. Olá boa tarde, ao tentar logar, depois de tudo pronto, está dando o seguinte erro:
    14:54:53,087 ERROR [org.jboss.security.auth.spi.DisabledLoginModule] (http-localhost-127.0.0.1-8080-1) The security domain other has been disabled. All authentication will fail. Please check your configuration to make sure this is expected
    14:54:53,094 ERROR [org.jboss.security.authentication.JBossCachedAuthenticationManager] (http-localhost-127.0.0.1-8080-1) Login failure: javax.security.auth.login.LoginException: Falha de Log-in: todos os módulos ignorados

    • Alan, boa noite.

      Você pode usar a abordagem que você achar melhor.

      Eu pessoalmente prefiro a abordagem demonstrada nesse post.

      Até a próxima. [=

  25. Olá Hébert, primeiramente gostaria de parabeniza-ló pelo post, apenas li o mesmo mas não coloquei a mão na massa. Quando tiver um tempinho no final de semana vou seguir passo a passo do seu material. Até porque não tenho experiência nenhuma em começar um projeto desde o inicio.

  26. sou estudante de informatica, é um trabalho para faculdade em java web.
    o programa está quase pronto, mas tenho alguns problemas que não consigo resolver, com 2 telas (pode ser também nas class ou interface) onde tem relacionamento nas tabelas do banco de dados (Mysql).
    poderia dar uma olhada e dizer quanto seria o trabalho?
    Obrigado.

    • Boa tarde.

      Agradeço o contato, mas não faço esse tipo de trabalho.

      Eu acredito que você tem potencial para finalizar o trabalho sem precisar pagar alguém por isso.

      Por que você não posta seu código no GUJ e espera alguém te ajudar?

      Att,

  27. Os daos são necessários ter a anotação @Stateless ?

    Não poderiam ser somente injetados pelo facade não, o qual é um ejb stateless ?

    • Olá, tudo bem?

      Sem problemas quanto a enviar esse tipo de MP. [=

      Eu optei por transformar os dois como EJB apenas por comodidade. Caso você não utilizasse o DAO como EJB você teria que injetar o EntityManager no Facade e passar para o DAO.

      Eu vejo vantagem nessa abordagem de todos serem EJB caso você precise injetar um DAO dentro de outro. Assim você não teria problema algum relacionado a dependência. Caso o DAO não fosse EJB você teria que passar o EntityManager para o DAO e para todos os outros DAOs internos. [=

      Outra vantagem é que dá para fazer um controle mais fino de transação ao ter os dois como EJB.

      Mas isso é minha visão sobre o assunto.

      Espero ter ajudado. [=

      • Bom Dia,

        com relação a transformar as DAO em EJB, ja que você desenhou este código para ser “parudo” que nem vc fala em outro comentário ele não iria pesar muito quero dizer a cada nova transação você criaria um novo ejb para o facade e mais um para a dao e isso para cada usuário e quando você cria uma EJB ele sobe muita coisa com uma classe apanas de DAO você usaria menos recursos, esta certo minha teoria andei pesquisando e achei informações que se confrontam neste assunto…
        Outro caso estranho que você comentou também é de utilizar o faces config mas devido ao fato de ele ser anotado na hora que você iria subir o jboss você perde performace? Ja se coloca-se o caminho direto nos jsf e so fosse chamando os mb nao ficaria mais rapido ?

        Abracos

        • Lucas, bom dia.

          1) Toda vez que a aplicação for iniciada, um pool de EJBs é alocado na memória. Desse modo o seu servidor não ficará criando/destruindo recurso a todo momento, mas irá apenas alocar determinado recurso para a tarefa. Com isso não haveria uma degradação de performance. Repare que quando o Facade chama um DAO não é criada uma nova transação no DB, mas sim é utilizada a mesma transação iniciada no Facade.

          2) O livro que eu li não mencionou sobre queda de performance ao utilizar o faces-config.xml para navegação. Para falar a verdade, eu nunca ouvi algo desse tipo. Eu tenho em mente que esse xml é carregado para a memória do servidor uma vez que a aplicação iniciar.

          Agradeço muito a visita e aos bons questionamentos. [=

  28. Bom dia. Ao criar um “dog”, quando volta para tela do grid, caso se dê um F5 fica criando o mesmo “dog” varias vezes. Acredito que deva precisar de algum tipo de controle entre as camadas ou configuração do tipo de transação, não sei exatamente. Poderia verificar, muito obrigado.

    • Olá Epitacio, boa tarde.

      Você deveria implementar alguma trava de segurança para isso.

      Uma outra alternativa é realizar o cadastro via Ajax.

      Até o final dessa semana, um post será lançado aqui no blog demonstrando isso.

      Obrigado pela visita.

  29. Ola! Ótimo material, parabéns! O melhor que encontrei sobre JAAS. A única coisa que não consegui foi alterar a página login.xhtml para funcionar com o primefaces.. Se você puder colocar algum exemplo depois.

    Obrigada!

    • Julia, boa tarde.

      Para o Primefaces funcionar na página de login você precisa realizar o import do primefaces dentro da página do login.xhtml.
      Esse import tem que ser realizado e a página tem que ser xhtml ou jsp utilizando as tags e .

      Esse post utiliza do Primefaces, talvez possa te ajudar: http://uaihebert.com/?p=1440

      Caso você tenha outras dúvidas um bom lugar para resolver é no GUJ. As vezes acabo por demorar a responder. [=

      O pessoal lá é gente boa.

      Obrigado pelo apoio.

  30. Olá, você tem essa aplicação para glashfish? se não, tem alguma ou algum exemplo semelhante para que eu possa estudar seu código e entender como você fez, acima de tudo, o logout?
    Desde já agradeço pela atenção!

    • Olá Carlos, bom dia.

      Não tenho exemplo semelhante em Glassfish.

      A questão do código do logout funciona em qualquer servidor, JBoss ou Glassfish o código do ManagedBean permanecerá o mesmo.

      Obrigado pela visita.

  31. ok, consegui criar um jar do EJB, coloquei no WEB-INF/lib do projeto JSF, mas agora está dando outro erro, mas acredito que relacionado ao JBoss 7.1:

    11:36:46,447 ERROR [org.jboss.as] (MSC service thread 1-1) JBAS015875: JBoss AS 7.1.1.Final “Brontes” started (with errors) in 4054ms – Started 230 of 316 services (8 services failed or missing dependencies, 76 services are passive or on-demand)
    11:36:46,547 INFO [org.jboss.as.server] (DeploymentScanner-threads – 2) JBAS015870: Deploy of deployment “CrudEJB.jar” was rolled back with failure message {“JBAS014771: Services with missing/unavailable dependencies” => [“jboss.persistenceunit.”CrudEJB.jar#CrudPU”jboss.naming.context.java.CrudDSMissing[jboss.persistenceunit.”CrudEJB.jar#CrudPU”jboss.naming.context.java.CrudDS]”]}
    11:36:46,584 INFO [org.jboss.as.server.deployment] (MSC service thread 1-4) JBAS015877: Stopped deployment CrudEJB.jar in 36ms
    11:36:46,586 INFO [org.jboss.as.controller] (DeploymentScanner-threads – 2) JBAS014774: Service status report
    JBAS014775: New missing/unsatisfied dependencies:
    service jboss.naming.context.java.CrudDS (missing) dependents: [service jboss.persistenceunit.”CrudEJB.jar#CrudPU”]

    11:36:46,589 ERROR [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads – 1) {“JBAS014653: Composite operation failed and was rolled back. Steps that failed:” => {“Operation step-2″ => {“JBAS014771: Services with missing/unavailable dependencies” => [“jboss.persistenceunit.”CrudEJB.jar#CrudPU”jboss.naming.context.java.CrudDSMissing[jboss.persistenceunit.”CrudEJB.jar#CrudPU”jboss.naming.context.java.CrudDS]”]}}}

    Será que no JBoss 7.1 tem alguma diferença de configuração??

    • Olá Jefferson, boa tarde.

      Parece que está faltando você declarar o datasource:

      New missing/unsatisfied dependencies:
      service jboss.naming.context.java.CrudDS (missing) dependents: [service jboss.persistenceunit.”CrudEJB.jar#CrudPU”]

      Qualquer dúvida, você pode postar no http://www.guj.com.br que o pessoal é gente boa. ;)

      Obrigado pela visita.

      • Valeu pelo post! Só queria acrescentar um problema que estava dando com o JBoss AS 7.1. Tive que mudar a JNDI para java:jboss/datasources/CrudDS pois esta versão do Jboss exige que a JNDI começe com java:/ ou java:jboss/. O restou deu tudo certinho!

  32. Olá, boa tarde!
    Primeiramente, parabéns pelo tutorial!

    Estou seguindo o tutorial e tive o seguinte problema na página 6:

    15:02:19,060 INFO  [org.jboss.as.controller] (DeploymentScanner-threads - 2) JBAS014774: Service status report
    JBAS014775:    New missing/unsatisfied dependencies:
          service jboss.naming.context.java.comp.CrudEJB.CrudEJB.DogDAO (missing) dependents: [service jboss.naming.context.java.comp.CrudEJB.CrudEJB.DogDAO.Validator, service jboss.naming.context.java.comp.CrudEJB.CrudEJB.DogDAO.ValidatorFactory] 
          service jboss.naming.context.java.comp.CrudEJB.CrudEJB.DogFacade (missing) dependents: [service jboss.naming.context.java.comp.CrudEJB.CrudEJB.DogFacade.Validator, service jboss.naming.context.java.comp.CrudEJB.CrudEJB.DogFacade.ValidatorFactory] 
          service jboss.naming.context.java.comp.CrudEJB.CrudEJB.UserDAO (missing) dependents: [service jboss.naming.context.java.comp.CrudEJB.CrudEJB.UserDAO.ValidatorFactory, service jboss.naming.context.java.comp.CrudEJB.CrudEJB.UserDAO.Validator] 
          service jboss.naming.context.java.comp.CrudEJB.CrudEJB.UserFacade (missing) dependents: [service jboss.naming.context.java.comp.CrudEJB.CrudEJB.UserFacade.Validator, service jboss.naming.context.java.comp.CrudEJB.CrudEJB.UserFacade.ValidatorFactory] 
    JBAS014777:   Services which failed to start:      service jboss.deployment.unit."CrudEJB.jar".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.unit."CrudEJB.jar".INSTALL: Failed to process phase INSTALL of deployment "CrudEJB.jar"
    
    • Olá Willian, boa tarde.

      Verifique se todos os EJBs foram declarados corretamente.

      Se estão todos no mesmo EAR, por exemplo.

      Obrigado pelo apoio e pela visita.

  33. Adorei!!! Muito Obrigado pelo Trabalho!!!

    Como sugestão do próximo trabalho sugiro fazer uma pequena aplicação envolvendo o maven, spring, jsf2,hibernate e jboss 7.

    Como exemplo cito a java Magazine 101, mas esta nao utiliza o jboss e sim o tomcat. Integrar com o jboss é mais complicado…

    • Olá Igor, boa noite.

      Muito obrigado pela dica.

      Ainda preciso estudar o Spring para montar essa aplicação, mas pretendo fazer isso até o meio do ano que vem. =D

      Obrigado pelo apoio.

  34. Show!!!

    Dúvida: o que basicamente mudaria conceitualmente entre a arquitetura utilizada neste post e um projeto Java EE 6 Web Profile.

    Grato!

    • Abelito, boa tarde.

      No caso de um WebProfile o EJB 3.1 não é suportado Full mas sim o Lite.
      Aparentemente tudo funcionaria pois o EJB Lite dá suporte ao EJB Local com controle de transação.

      Obrigado pela visita e pelo apoio. [=

  35. BOm Dia.. Hebert, Descobri meu problema… ao invés de criar um outro security-domain, eu coloquei as configurações dentro de OTHERS…. E funcionou minha aplicação..

    Vlw pelo excelente post!

    • Olá Fernanda, bom dia.

      Que bom que você conseguiu achar o problema.

      Desculpe a demora, estava muito atarefado esses dias.

      Obrigado pelo apoio.

  36. Oi…
    Cara muito bom o seu tutorial.
    Eu fiquei com uma duvida em ponto…
    O método isDogWithAllDAta tem um exceção que é lançada quando tem um erro…

    Qual a forma mais sensata para isso, pois esse throw tem que ser tratado no método que chama ele…
    Você faz isso na própria classe ou posso fazer essa tratativa mais para frente?

    Vlw!

    • Bruno, bom dia.

      Eu vejo tratar na view como melhor solução. Lá você poderá fazer catch e no caso de exception e mostrar a mensagem de erro diretamente para o usuário.

      Eu creio que o controle de fluxo fica mais fácil. [=

      Obrigado pela visita.

  37. Gostei muito do tutorial mas gostaria de saber se eu posso criar “os projetos” ejb e jsf no mesmo projeto sem o uso do EAR?

    Estou num processo de refatoração e queria aproveitar as funcionalidades do JBOSS que estão subutilizadas.

    • Olá Diego. Poderá sim.

      Só que seus EJBs terão que ser Remote ao invés de Local, e você terá que fazer pequenos ajustes na hora da injeção.

      Obrigado pela visita e pelo apoio.

      • Entendi, em partes… eu sou muito novo nessa de java, minha praia era mesmo PHP porem o trabalho me “obriga” o java (o projeto ja esta em andamento e coisas do tipo)

        quando você diz que os EJB devem ser remote ou locais o que quer dizer?

        e quais seriam os ajustes na injeção pq isso foi justamente uma tentativa minha que deu muito errado rsrs

        Se você tiver dicas ou locais onde eu possa aprender mais pq a documentação é sofrível.

        Só pra ter uma ideia meu projeto roda num jboss mas usa spring, jsf, primefaces, hibernate, spring-security ou seja nada se aproveita do jboss e talvez seja uma boa tentar mudar.

        no mais obrigado pela atenção.

        • Olá Diego, boa noite.

          Nesse caso é melhor você ler um livro para entender melhor o funcionamento do EJB.

          A escolha do tipo do EJB pode afetar diretamente no desempenho da aplicação.

          Esse livro aqui é muito bom: Enterprise JavaBeans 3.0 – Richard Monson-Haefel, Bill Burke. Não indico o 3.1 mas o 3.0.

          Obrigado pela visita.

  38. Olá, muito obrigada, adorei o post. Aqui está funcionando perfeitamente, porém há como após o login voltar para a página que o usuário estava tentando acessar antes de ser redirecionado para o login? Não encontrei nenhuma solução que se integre com o redirecionamento automático do jboss…

    • Camilla, boa noite.

      Eu nunca tive problemas com o redirecionamento.

      Toda vez que o endereço completo era digitado a próprio JBoss já redirecionava para a página solicitada.

      Obrigado pela visita

  39. Cara, é possível fazer essa aplicação no windows 7 x64?
    Ou então eu posso criar um VM com Ubuntu, mas faz tanto tempo que eu não uso Linux que nem sei qual versão usar.

    • Tarcisio

      Se tiver a versão do JBoss para o Windows 7 x64 é sim.

      Se não me engano eu já fiz isso em um PC com essa configuração.

      Atualmente eu rodo no Ubuntu sem problemas. [=

      Obrigado pela visita.

  40. Olá! Parece-me um excelente tutorial para começar com EJB. Mas estou com problemas em instalar o Jboss tools no eclipse. Já tentei de todas as formas e não dá. Até já reinstalei o windows, SDK e JRE, mas o problema persiste. Qdo chega no content.jar pará e dá erro. Podes me ajudar? Gostaria imenso de seguir o teu tutorial.

    Obrigada.

  41. Tive o mesmo problema… Tive que trocar a versao do eclipse… Tem um tempinho isso entao nao lembro.. :( Mas deu uma trabalheira..

    • Oi Camilla.

      O erro que tinhas era do tipo :

      “An error occurred while collecting items to be installed
      session context was:(profile=epp.package.jee, phase=org.eclipse.equinox.internal.p2.engine.phases.Collect, operand=, actio…”

      Para qual versão do Eclipse mudaste? lembraste ainda?

      Obrigado.

  42. Na configuração do jboss, no arquivo standalone, o nome do jni ser alterado, onde está:

    datasource jndi-name=”CrudDS” pool-name=”CrudDS_Pool” enabled=”true” jta=”true” use-java-context=”true” use-ccm=”true”>

    fica:
    datasource jndi-name=”java:/CrudDS” pool-name=”CrudDS_Pool” enabled=”true” jta=”true” use-java-context=”true” use-ccm=”true”>

    Tutorial excelente!!! parabéns pelo trabalho.

    • Rogério, boa noite.

      Essa alteração aconteceu com as versões mais novas.

      Obrigado pela dica, ficará registrado aqui para quem tiver mais dúvidas. [=

  43. Mestre, funfou quase tudo, só um obstáculo.

    Na classe UserMB, na linha abaixo, getName() sempre está voltando null, mesmo quando o usuário está logado. O curioso que todo o resto está ok, mesmo as permissões
    String userEmail = context.getUserPrincipal().getName();

    Alguma pista? ou algo que eu possa verificar?

    complementando… Se eu logo… deslogo… logo de novo… ai funfa…

    Obrigado!

  44. Bah gostei muito do post com ele consegui aprender a trabalhar com o Jboss 7 funciono direitinho,
    1) so queria saber se voce ja conseguiu utilizar o novo eclipse o juno pq o plugin jboss para ele nao funciono comigo dai tenho que usar o indigo…
    2) nas suas classes User.java e Dog.java nao estava conseguindo adicionar dados, ele tava dando a mensagem que tava dando problema com o Serializable so queria saber se isto provem do fato de eu ter trocado a anotation de @local para @remote ?
    Muito Obrigado.
    Lucas Ranzi

    • Lucas, bom dia.

      1) Consegui usar o Juno sim. Instalei o JBoss tools do Eclipse Indigo nele. O problema é que ele está com BUG com relação aos atalhos. =/
      2) Vou fazer com você o mesmo que faço com meus alunos: Você trocou para @Local e testou? O que aconteceu? ;)

      Obrigado pela visita e pelo apoio. [=

  45. UaiHebert dessa vez resolvi retomar com calma o tutorial, consegui rodar o aplicativo, criou até o banco de dados porem estou com um problema no login ele simplesmente não loga… dando esse erro Could not login. Check you UserName/Password (mas o email e senha estão certos cadastrei até o seu exemplo rsrs

    exceto por alguns nomes de banco e outras coisas ta tudo ok, ja conferi nome no Realm, DS, PU, e todos os outros lugares em XML pra apontar na direção certa

    da uma exception: Login failure: javax.security.auth.login.FailedLoginException:

    não sei mais onde procurar pra resolver…

    • Diego, bom dia.

      Verifique a consulta realizada no banco se está igual à consulta do post.

      Verifique nome das tabelas, dos campos de login/senha.

      Esse SQL está descrito dentro do xml do JBoss, mostrado aqui no post. [=

      Obrigado pela visita.

      • Já tentei quase tudo, menos rodar a aplicação q esta disponivel no post, porem ja li e reli todas as configurações… seria uma diferença no jboss? aqui estou a usar o 7.1.1 que pede algumas mudanças como o nome jndi tem q conter java:/ ou java:jboss/ para os datasources … alguma luz ?

        segue umas colas do erro, do xml do jboss trechos importantes (ds e realm security)
        http://pastebin.com/rQXn5wAm

  46. Hebert, mto obrigado pelo post!

    Fiz um sistema completo seguindo o seu tutorial!

    Agora estou com um problema e gostaria de saber se o que eu quero fazer é possível, vamos lá:

    Eu tenho a página de login que redireciona pra uma página de erro, quando o usuário ou senha estão incorretos. Eu observei, que no console do eclipse, são exibidos as exceptions de validação. Dúvida: seria possível eu tratar essas exceptions na minha aplicação e jogar isso na própria tela de login, em um facesmessage?

    Abraços

    • Olá Eder, boa tarde.

      Nesses casos você teria que criar um próprio módulo do JAAS para exibidas essas mensagens.

      Caso existam outros modos para se fazer isso, eu desconheço até então.

      Obrigado pela visita.

  47. Eu até encontrei um esquema, onde vc recupera a exception de retorno, utilizando a seguinte notação #{j_exception.class.name}, mas fica feio tratar isso apenas em tela, não achei mto legal.

    Abraços

  48. Parabens pelo turorial.

    Estou criando uma aplicação e gostaria de tirar umas duvidas, você teria um email ou skype para que pudessemos nos comunicar com mais rapidez e eficiência?

  49. Olá Hebert,

    Parabéns pelo post.
    Estou estudando para a certificação EJB, e algumas outras coisas em paralelo, e esse post me ajudou muito! Me economizou tempo e esforço hehe

    Li os comentários e um deles (do dia 24/02) tocou em um ponto que tenho dúvida: a navegação. Eu não gosto de usar o faces-config para navegação, mas ao mesmo tempo não consigo discordar do seu argumento quanto ao custo de deixar isso por conta do MB. Como faz tempo que você fez aquele comentário, gostaria de saber se nesse meio tempo você viu alguma alternativa para essa questão e mudou a sua opinião. Ou então se você sugere alguma outra solução.

    Só para informação, uso JSF e Primefaces normalmente.

    Btw, muito bons seus posts, estou acompanhando os mais novos.

    • Renan, boa tarde.

      Eu ainda não achei uma melhor prática ou pensei em alguma outra abordagem.

      Eu já trabalhei em sistemas que retornavam a página diretamente do MB ou que utilizava o faces-config.

      Use a que você se sentir mais confortável. [=

      Obrigado pelo apoio.

  50. Olá Hebert,
    Estou desenvolvendo uma aplicação utilizando como base este belo exemplo, e até então tudo funcionando muito bem. A minha única dúvida é sobre i18n. Para os labels, algumas validações e textos fixos nas páginas *.jsf tudo muito fácil, mas como faço para aplicar i18n nas regras de negócio? Tem como eu criar exceções que geram mensagens pegando de um resourceBundle, como por exemplo “Usuário {0} já existe na base de dados. Utilize a função recuperar senha.”?? Em suma, quero internacionalização no meu EJB. Rola? Agradeço a atenção!

    • Jefferson, bom dia.

      Dê uma olhada nesse post: blog.caelum.com.br/internacionalizacao-no-codigo-java/

      Nele mostra como acessar o arquivo via classes do Java.

      Obrigado pela visita.

      • Valeu, Hebert, logo depois que postei a mensagem, encontrei este post! Na verdade minha confusão era mais conceitual do que técnica. Minha camada de negócio estava de certa forma invadindo a de apresentação. Agora as minhas exceções mandam o cógigo do erro e não a mensagem em si.

  51. Olá Hebert primeiramente quero dar meus parabéns sua atitude de compartilhar seu conhecimento é genial.

    Bom sobre o tutorial tenho algumas dúvidas:

    1-) Na pag 6 quando voce diz para adicionar o projeto EJB ao JBoss, está se referindo ao projeto CrudEJB ou ao CrudEAR?

    2-) Na fase onde é criado do CrudEAR, é gerado um arquivo EAR? Por que eu tentei fazer o deploy pelo JBoss Administrator Console e não consegui localizar o arquivo.

    3-) Esse projeto precisa ser compilado com uma ferramenta do tipo Ant ou Maven? E gostaria de saber se poderia fazer um post sobre o Maven?

    4-) Fiz o deploy do projeto CrudEAR via Eclipse, porém não foi gerado as tabelas no Banco de Dados. Não gerou nenhum erro também, alguma sugestão?

    obrigado e mais uma vez parabéns.
    Deus te abençoe.

    • Tiago, boa tarde.

      1) Apenas o projeto EJB.
      2) Com o projeto EAR criado, basta adicioná-lo ao JBoss por dentro do Eclipse. Caso você queira exportar um EAR você pode clicar sobre o projeto com o botão direito do mouse > Export e selecionar o EAR (Enterprise Application R.)
      3) Não é necessário. Ao adicionar o projeto no JBoss ele irá realizar o deploy normalmente.
      4) Realmente não. Se não deu erro, ficou faltando realizar algum passo do tutorial.

      Infelizmente não tenho como criar um post com Maven por enquanto. Pelo meu planejamento, até final do ano que vem já estarei escrevendo sobre ele.

      Obrigado pela visita.

  52. Bom dia Hebert, obrigado por estar sempre me ajudando e parabéns pelo ótimo trabalho.

    Sem querer incomodar muito tenho uma dúvida e gostaria que você desse uma olhada bem rápida no código adaptado que fiz, é rápido, só pra entender melhor a adaptação, certo?

    O link do github é https://github.com/vinnywebmaster/InTouchTest1 e a dúvida é a seguinte: Estou tentando fazer um teste de código usando o framework arquillian mas quando rodo o teste ele não consegue injetar o @EJB PessoaDAO (me baseei no seu UserDAO), ele não consegue achar a interface correspondente. Realmente nem no seu código e no meu apenas coloco @Stateless (sem o @Local), isso influi em alguma coisa? Você poderia dar uma olhada pra ver se realmente não estou injetando corretamente essa variável? Não sei se você já utilizou o arquillian, mas seria a falta da adicção de uma classe ou pacote no .jar que vai ser implementado no contêiner?

    Valeu Hebert, desde já muito obrigado.

  53. Outra forma interessante de configurar o datasource, quem quiser testar, é fazer, antes, o deploy (como um projeto web) do Driver do seu banco, daí basta configurar o datasource, fica simplex :)

  54. Boa tarde.
    Segui todo o tutorial e não consegui realizar a autenticação com o JASS.
    Ocorre o seguinte erro: HTTP Status 408 – The time allowed for the login process has been exceeded.

    O que pode ser? Ja encontrei algumas postagens em foruns. Umas sem respostas e outras com respostas que não resolveram o problema.
    Agradeço a atenção

  55. Cara que tutorial massa! Parabéns cara ótimo trabalho, me ajudou muito em uma visão geral do negócio, te agradeço ai pela iniciativa e espero encontrar ótimos tutoriais no site!!!

  56. Hebert, Rodrigo de novo aqui.
    Há alguma forma de interceptar a forma como o login acontece através de um MB ou algo do tipo usando o JAAS?
    Talvez eu não tenha sido muito claro, mas o lance é o seguinte:
    Vou precisar encriptar a senha e talvez autenticar em mais de uma base de dados, com isso, eu queria, tipo, fazer isso: ”
    ” em um MB, porque ai eu já montaria o usuário logado e o colocaria na sessão, entende?
    Aceito opiniões. hehehe

    • Rodrigo, boa tarde.

      Entendi sua dúvida sim.

      Existem duas soluções possíveis que eu sei:
      1) O próprio JAAS já trabalha com algumas encriptações tipo MD5 (não recomendável), SHA (recomendável).
      2) Implementar seu próprio módulo de JAAS onde você poderá fazer o que quiser.

      Na net tem muito exemplo sobre isso.

      Espero ter ajudado.

      Inté! o_

  57. Parabéns pelo artigo. Funcionou tudo perfeitamente. Apenas na hora de executar, após clicar em Login, ocorre o erro:

    14:55:47,032 ERROR [org.jboss.security.authentication.JBossCachedAuthenticationManager] (http-localhost-127.0.0.1-8080-1) Login failure: javax.security.auth.login.LoginException: PB00019: Processing Failed:Error looking up DataSource from: CrudDS
    at org.jboss.security.auth.spi.DatabaseServerLoginModule.getUsersPassword(DatabaseServerLoginModule.java:196) [picketbox-4.0.7.Final.jar:4.0.7.Final]
    at org.jboss.security.auth.spi.UsernamePasswordLoginModule.login(UsernamePasswordLoginModule.java:249) [picketbox-4.0.7.Final.jar:4.0.7.Final]

    Poderia me ajudar?

  58. Uma dúvida conceitual: no projeto CrudJSF você criou os ManagedBeans (assinando @ManagedBean e @RequestScoped). Isto é um padrão no desenvolvimento JSF? Poderia me dar uma explicação a respeito?

    • Bruno, bom dia.

      Na verdade não existe um padrão correto, mas sim o melhor caso para cada escopo.

      Nesse post é explicado a diferença entre cada tipo de escopo e o melhor em que podem ser aplicados: [url=http://uaihebert.com/?p=1596]JSF Mini Livro – Dicas, conceitos e boas práticas[/url].

  59. Hebert,

    Mais uma vez obrigado pela resposta. Vou novamente solicitar suas explicações (visto serem claramente entendidas!). Aliás, seu blog tem ajudado algumas pessoas por aqui…

    Poderia me explicar de uma maneira prática a necessidade do servlet-mapping?

    Faces Servlet
    /faces/*
    *.jsf
    *.xhtml

    Já vi alguns assim também:

    Faces Servlet
    *.faces

    O que exatamente isto faz? E qual a diferença entre eles?

    • Bruno, boa noite.

      O JSF nada mais é do que um servlet. Um servlet para ser disparado ele precisa de um caminho especial, uma chave “configurável” que irá disparar o servlet quando invocado.

      Nesse caso esses mapeamentos são para disparar o JSF. Você poderia colocar qualquer valor desde que em sua URL esse valor fosse invocando.

      Se você mapeasse com paoDeQueijo, você teria que chamar …/index.paoDeQueijo.

      Eu gosto de colocar mais de uma em meu post, pois existem pessoas que chegam aqui e não sabem a diferença e acabam por tentar invocar a aplicação por qualquer URL.

      Mapeando com esses 3 valores poderia se chamar a URL por: …/index.jsf, …/index.xhtml, …/faces/index.xhtml ou até mesmo …/index.faces conforme você perguntou. [=

      Espero ter ajudado, até a próxima. [=

  60. Bom dia, estou tentando usar o JAAS + JSF 1.2 com o JBoss 5.1 só que não to conseguindo fazer o login, sempre que clico no botão Login do meu teste ele redireciona pra página de erro de login, ainda não consegui identificar o erro, pois não sai nada no log do servidor. Você teria algum exemplo do JAAS com o JBoss 5.1?
    Já testei a conexão com o banco e ta ok.

    • Geraldo, bom dia.

      Desculpe, mas não tenho um material sobre o JB 5.1.

      Verifique as queries se estão certinhas e conforme requerido pelo JAAS. As vezes ele dá um erro silencioso e apenas aumentando o nível do log para que no console apareça a mensagem de erro.

    • André boa tarde.

      Infelizmente eu não sei te responder quanto a isso.

      A muito tempo atrás eu mexi com Netbeans e atualmente não sei como anda.

  61. Hebert, bom dia gostaria de saber se existe alguma forma de tratar ou “esconder” a seguinte exception:
    ERROR [org.jboss.security.authentication.JBossCachedAuthenticationManager] (http-localhost-127.0.0.1-8080-1) Login failure: javax.security.auth.login.FailedLoginException: Password Incorrect/Password Required

    Sei que acontece quando o usuario ou senha é inválidos…mas isso vai encher o log do servidor…

    • Nielson, bom dia.

      Você poderia pesquisar na net por: log jboss jass

      Talvez você encontre algo, pois esse log é específico dele. [=

      Obrigado pela visita.

      Me perdoe a demora em responder, realmente estou muito ocupado nesses dias. =/

  62. Quantos ao JPA não oferecer suporte à Generics, será se você está realmente certo? Eu acredito que todos os métodos do JPA oferecem suporte a Generics.
    Onde você faz CriteriaQuery cq = em.getCriteriaBuilder().createQuery(); poderia ter feito CriteriaQuery cq = em.getCriteriaBuilder().createQuery(entityClass); e ao fazer chamar entityManager.createQuery, retonaria um TypedQuery….. TypeQuery.getSingleResult retorna um tipo T, ou getResultList, que retorna List

    • Welyab, bom dia.

      Quando eu escrevi esse post eu havia estudado apenaso JPA 1.0.

      O JPA 2.0 realmente oferece suporte ao Generics com TypedQuery. Concordo plenamente com você. [=

      E eu descobri isso 3 semanas após escrever esse artigo. [=

      Obrigado pela visita.

      Me perdoe a demora em responder, realmente estou muito ocupado nesses dias. =/

  63. Td bem , gostei do blog , realmente é muito bom. Parabéns. !!

    Bom , estava preparando um ambiente para reproduzir o projeto descrito pro você e durante a valiação da configuração vi que meu Jboss Tools estáfazendo algo errado.

    Nesta montagem realizei os seguintes passos :

    1- Baixei o Eclipse
    2- Baixei e isntalei o jdk 6
    3- Instalei o Jboss Tools
    4- Baixei o Jboss 7

    Após esses passos fiz uma aplicação de testes para validar este ponto da instalação. Utilizei o próprio Jboss Tools p/ gerar uma aplicação JSF , mas no momento de executar a ferramenta “sobe” o Jboss mas não faz o deploy.

    Para rodar a aplicação fiz o seguinte : na perspectiva Web Development , do Jboss Tools, cliquei com o botão direito do mouse em cima do projeto e escolhi “run as” e em seguida “run on server”

    Como a aplicação no rodou (apesar do Jboss estar no ar) fui na pasta “serverdefaultdeploy” e vi que não havia o deploy da aplicação, porém ao ir na view “server” (no Eclipse) percebi que o Jboss tools fez o deploy em uma pasta completamente estranha , veja : Y:WorkspaceTeste.metadata.pluginsorg.jboss.ide.eclipse.as.coreJBoss_6.x_Runtime_Server1357085417984deployTesteApp.war

    Ao entrar na pasta TesteApp vi que era meu projeto de testes.

    Bom , você sabe como posso configurar o JBoss Tools p/ fazer o deploy em “serverdefaultdeploy” ?

    Obrigado.

    • Anderson, bom dia.

      Na verdade ele não faz por default na pasta dentro do servidor, mas sim dentro dessa pasta do plugin.
      Isso é normal.

      Não apareceu mensagem de erro nenhuma não? Ao rodar no server?

      Obrigado pela visita.

      Me perdoe a demora em responder, realmente estou muito ocupado nesses dias. =/

  64. Boa tarde,
    Gostei muito do site, ele tem me ajudado bastante em minhas dúvidas.
    Estou tentando realizar este artigo mas encontrei um “problema” para o qual não consegui encontrar solução, nem dentro dos posts originados aqui, nem na web:
    Ocorre que estou usando o MySQL para o desenvolvimento e fiz todos os preparativos descritos no link informado, tomando o cuidado de alterar o jndi para o utilizado no persistence.xml (java:/CrudDS) e no standalone.xml (). O problema é que estou recebendo a mensagem:

    13:04:48,269 INFO [org.jboss.modules] JBoss Modules version 1.1.1.GA
    13:04:48,437 INFO [org.jboss.msc] JBoss MSC version 1.0.2.GA
    13:04:48,492 INFO [org.jboss.as] JBAS015899: JBoss AS 7.1.1.Final “Brontes” starting
    13:04:49,326 INFO [org.xnio] XNIO Version 3.0.3.GA
    13:04:49,327 INFO [org.jboss.as.server] JBAS015888: Creating http management service using socket-binding (management-http)
    13:04:49,334 INFO [org.xnio.nio] XNIO NIO Implementation Version 3.0.3.GA
    13:04:49,343 INFO [org.jboss.remoting] JBoss Remoting version 3.2.3.GA
    13:04:49,362 INFO [org.jboss.as.configadmin] JBAS016200: Activating ConfigAdmin Subsystem
    13:04:49,363 INFO [org.jboss.as.logging] JBAS011502: Removing bootstrap log handlers
    13:04:49,430 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool — 31) JBAS010280: Activating Infinispan subsystem.
    13:04:49,460 INFO [org.jboss.as.security] (ServerService Thread Pool — 44) JBAS013101: Activating Security Subsystem
    13:04:49,465 INFO [org.jboss.as.naming] (ServerService Thread Pool — 38) JBAS011800: Activating Naming Subsystem
    13:04:49,477 INFO [org.jboss.as.naming] (MSC service thread 1-3) JBAS011802: Starting Naming Service
    13:04:49,484 INFO [org.jboss.as.webservices] (ServerService Thread Pool — 48) JBAS015537: Activating WebServices Extension
    13:04:49,486 INFO [org.jboss.as.osgi] (ServerService Thread Pool — 39) JBAS011940: Activating OSGi Subsystem
    13:04:49,550 INFO [org.jboss.as.security] (MSC service thread 1-3) JBAS013100: Current PicketBox version=4.0.7.Final
    13:04:49,881 INFO [org.jboss.as.connector] (MSC service thread 1-3) JBAS010408: Starting JCA Subsystem (JBoss IronJacamar 1.0.9.Final)
    13:04:49,949 INFO [org.jboss.as.mail.extension] (MSC service thread 1-3) JBAS015400: Bound mail session
    13:04:49,951 INFO [org.jboss.ws.common.management.AbstractServerConfig] (MSC service thread 1-4) JBoss Web Services – Stack CXF Server 4.0.2.GA
    13:04:50,156 INFO [org.jboss.as.server.deployment.scanner] (MSC service thread 1-3) JBAS015012: Started FileSystemDeploymentService for directory C:Program FilesJBOSSjboss-as-7.1.1.Finalstandalonedeployments
    13:04:50,157 INFO [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads – 1) JBAS015003: Found CrudEJB.jar in deployment directory. To trigger deployment create a file called CrudEJB.jar.dodeploy
    13:04:50,197 INFO [org.jboss.as.remoting] (MSC service thread 1-1) JBAS017100: Listening on localhost/127.0.0.1:4447
    13:04:50,200 INFO [org.jboss.as.remoting] (MSC service thread 1-4) JBAS017100: Listening on /127.0.0.1:9999
    13:04:50,257 INFO [org.apache.coyote.http11.Http11Protocol] (MSC service thread 1-1) Starting Coyote HTTP/1.1 on http-localhost-127.0.0.1-8080
    13:04:50,545 INFO [org.jboss.as.controller] (Controller Boot Thread) JBAS014774: Service status report
    JBAS014775: New missing/unsatisfied dependencies:
    service jboss.jdbc-driver.com_mysql (missing) dependents: [service jboss.data-source.java:/CrudDS]

    13:04:50,580 INFO [org.jboss.as] (Controller Boot Thread) JBAS015951: Admin console listening on http://127.0.0.1:9990
    13:04:50,582 ERROR [org.jboss.as] (Controller Boot Thread) JBAS015875: JBoss AS 7.1.1.Final “Brontes” started (with errors) in 2600ms – Started 130 of 207 services (2 services failed or missing dependencies, 74 services are passive or on-demand)

    ** Não consegui ver nada que me levasse a uma idéia do que fazer, poderia me ajudar?

    • Marcos bom dia.

      Desculpe a demora em responder, seu comentário caiu na caixa de Spam e eu só vi hoje! :O

      Seu erro está em:

      JBAS014775: New missing/unsatisfied dependencies:
      service jboss.jdbc-driver.com_mysql (missing) dependents: [service jboss.data-source.java:/CrudDS]

      Faltou você declarar o datasource, ou então, verifique se está digitado de modo igual nos arquivos persitence e standalone. [=

    • Douglas, boa tarde.

      Desculpe mas não tenho. Foco meus posts no Eclipse que é o mais utilizado no mercado de trabalho.

      Obrigado pela visita e desculpe não poder ajudar. =/

  65. Eu segui todos os passos, mas está dando erro na execução, imagino que o problema seja com o JBoss e Postgres…
    Poderia ver se consegue identificar o erro???

    17:59:38,070 Informações [org.jboss.modules] JBoss Modules version 1.0.2.GA
    17:59:39,241 INFO [org.jboss.msc] JBoss MSC version 1.0.1.GA
    17:59:39,366 INFO [org.jboss.as] JBoss AS 7.0.2.Final “Arc” starting
    17:59:44,163 WARN [org.jboss.as] No security realm defined for native management service, all access will be unrestricted.
    17:59:44,241 INFO [org.jboss.as] creating http management service using network interface (management) port (9990)
    17:59:44,257 WARN [org.jboss.as] No security realm defined for http management service, all access will be unrestricted.
    17:59:44,288 INFO [org.jboss.as.logging] Removing bootstrap log handlers
    17:59:44,413 INFO [org.jboss.as.clustering.infinispan.subsystem] (Controller Boot Thread) Activating Infinispan subsystem.
    17:59:44,663 INFO [org.jboss.as.naming] (Controller Boot Thread) JBAS011800: Activating Naming Subsystem
    17:59:44,695 INFO [org.jboss.as.naming] (MSC service thread 1-2) JBAS011802: Starting Naming Service
    17:59:44,710 INFO [org.jboss.as.osgi] (Controller Boot Thread) JBAS011910: Activating OSGi Subsystem
    17:59:44,757 INFO [org.jboss.as.security] (Controller Boot Thread) Activating Security Subsystem
    17:59:44,804 INFO [org.jboss.remoting] (MSC service thread 1-3) JBoss Remoting version 3.2.0.Beta2
    17:59:44,866 INFO [org.xnio] (MSC service thread 1-3) XNIO Version 3.0.0.Beta3
    17:59:44,913 INFO [org.xnio.nio] (MSC service thread 1-3) XNIO NIO Implementation Version 3.0.0.Beta3
    17:59:45,710 INFO [org.apache.catalina.core.AprLifecycleListener] (MSC service thread 1-1) The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:Arquivos de programasJavajre7bin;C:WINDOWSSunJavabin;C:WINDOWSsystem32;C:WINDOWS;native;C:/Arquivos de programas/Java/jre7/bin/client;C:/Arquivos de programas/Java/jre7/bin;C:/Arquivos de programas/Java/jre7/lib/i386;C:WINDOWSsystem32;C:WINDOWS;C:WINDOWSSystem32Wbem;C:Arquivos de programaseclipse;;.
    17:59:45,741 INFO [org.jboss.as.ee] (Controller Boot Thread) Activating EE subsystem
    17:59:45,851 INFO [org.jboss.as.remoting] (MSC service thread 1-4) Listening on /127.0.0.1:9999
    17:59:45,866 INFO [org.jboss.as.jmx.JMXConnectorService] (MSC service thread 1-4) Starting remote JMX connector
    17:59:47,085 INFO [org.apache.coyote.http11.Http11Protocol] (MSC service thread 1-3) Starting Coyote HTTP/1.1 on http-localhost-127.0.0.1-8080
    17:59:47,195 INFO [org.jboss.as.connector] (MSC service thread 1-4) Starting JCA Subsystem (JBoss IronJacamar 1.0.3.Final)
    17:59:48,741 INFO [org.jboss.as.deployment] (MSC service thread 1-3) Started FileSystemDeploymentService for directory C:Arquivos de programasJBoss AS 7.0.2.Finalstandalonedeployments
    17:59:48,788 INFO [org.jboss.as.deployment] (DeploymentScanner-threads – 1) Found CrudEAR.ear in deployment directory. To trigger deployment create a file called CrudEAR.ear.dodeploy
    17:59:48,945 INFO [org.jboss.as.controller] (Controller Boot Thread) Service status report
    New missing/unsatisfied dependencies:
    service jboss.jdbc-driver.postgresql-jdbc4 (missing)

    17:59:49,007 INFO [org.jboss.as.server.deployment] (MSC service thread 1-2) Starting deployment of “CrudEAR.ear”
    17:59:49,132 INFO [org.jboss.as.server.deployment] (MSC service thread 1-1) Starting deployment of “CrudEJB.jar”
    17:59:49,132 INFO [org.jboss.as.server.deployment] (MSC service thread 1-2) Starting deployment of “CrudJSF.war”
    17:59:49,226 WARN [org.jboss.as.protocol] (pool-2-thread-8) JBAS012100: Got error closing channel JBREM00206: Channel is not open
    17:59:49,273 INFO [org.jboss.jpa] (MSC service thread 1-3) read persistence.xml for CrudPU
    17:59:49,523 INFO [org.jboss.as.jpa] (MSC service thread 1-4) added javax.persistence.api, javaee.api, org.jboss.as.jpa, org.javassist dependencies to CrudEAR.ear
    17:59:49,523 INFO [org.jboss.as.jpa] (MSC service thread 1-4) added (default provider) org.hibernate dependency to application deployment (since 1 PU(s) didn’t specify jboss.as.jpa.providerModule)
    17:59:49,538 INFO [org.jboss.as.jpa] (MSC service thread 1-4) added org.hibernate dependency to application deployment
    17:59:49,554 INFO [org.jboss.as.jpa] (MSC service thread 1-4) added javax.persistence.api, javaee.api, org.jboss.as.jpa, org.javassist dependencies to CrudEJB.jar
    17:59:49,554 INFO [org.jboss.as.jpa] (MSC service thread 1-4) added (default provider) org.hibernate dependency to application deployment (since 1 PU(s) didn’t specify jboss.as.jpa.providerModule)
    17:59:49,554 INFO [org.jboss.as.jpa] (MSC service thread 1-4) added org.hibernate dependency to application deployment
    17:59:49,554 INFO [org.jboss.as.jpa] (MSC service thread 1-4) added javax.persistence.api, javaee.api, org.jboss.as.jpa, org.javassist dependencies to CrudJSF.war
    17:59:49,679 WARN [org.jboss.as.protocol] (pool-2-thread-3) JBAS012100: Got error closing channel JBREM00206: Channel is not open
    17:59:49,788 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-4) JNDI bindings for session bean named UserDAO in deployment unit subdeployment “CrudEJB.jar” of deployment “CrudEAR.ear” are as follows:

    java:global/CrudEAR/CrudEJB/UserDAO!com.dao.UserDAO
    java:app/CrudEJB/UserDAO!com.dao.UserDAO
    java:module/UserDAO!com.dao.UserDAO
    java:global/CrudEAR/CrudEJB/UserDAO
    java:app/CrudEJB/UserDAO
    java:module/UserDAO

    17:59:49,788 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-4) JNDI bindings for session bean named DogDAO in deployment unit subdeployment “CrudEJB.jar” of deployment “CrudEAR.ear” are as follows:

    java:global/CrudEAR/CrudEJB/DogDAO!com.dao.DogDAO
    java:app/CrudEJB/DogDAO!com.dao.DogDAO
    java:module/DogDAO!com.dao.DogDAO
    java:global/CrudEAR/CrudEJB/DogDAO
    java:app/CrudEJB/DogDAO
    java:module/DogDAO

    17:59:49,788 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-4) JNDI bindings for session bean named DogFacadeImp in deployment unit subdeployment “CrudEJB.jar” of deployment “CrudEAR.ear” are as follows:

    java:global/CrudEAR/CrudEJB/DogFacadeImp!com.facade.DogFacade
    java:app/CrudEJB/DogFacadeImp!com.facade.DogFacade
    java:module/DogFacadeImp!com.facade.DogFacade
    java:global/CrudEAR/CrudEJB/DogFacadeImp
    java:app/CrudEJB/DogFacadeImp
    java:module/DogFacadeImp

    17:59:49,788 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-4) JNDI bindings for session bean named UserFacadeImp in deployment unit subdeployment “CrudEJB.jar” of deployment “CrudEAR.ear” are as follows:

    java:global/CrudEAR/CrudEJB/UserFacadeImp!com.facade.UserFacade
    java:app/CrudEJB/UserFacadeImp!com.facade.UserFacade
    java:module/UserFacadeImp!com.facade.UserFacade
    java:global/CrudEAR/CrudEJB/UserFacadeImp
    java:app/CrudEJB/UserFacadeImp
    java:module/UserFacadeImp

    17:59:50,741 ERROR [org.jboss.as] (MSC service thread 1-4) JBoss AS 7.0.2.Final “Arc” started (with errors) in 13484ms – Started 211 of 286 services (14 services failed or missing dependencies, 61 services are passive or on-demand)
    17:59:50,960 INFO [org.jboss.as.server.controller] (DeploymentScanner-threads – 2) Deployment of “CrudEAR.ear” was rolled back with failure message {“Services with missing/unavailable dependencies” => [“jboss.web.deployment.default-host./CrudJSF.realm missing [ jboss.security.security-domain.other ]”]}
    17:59:50,991 INFO [org.jboss.as.server.deployment] (MSC service thread 1-4) Stopped deployment CrudJSF.war in 28ms
    17:59:50,991 INFO [org.jboss.as.server.deployment] (MSC service thread 1-1) Stopped deployment CrudEJB.jar in 28ms
    17:59:50,991 INFO [org.jboss.as.server.deployment] (MSC service thread 1-1) Stopped deployment CrudEAR.ear in 29ms
    17:59:50,991 ERROR [org.jboss.as.deployment] (DeploymentScanner-threads – 1) {“Composite operation failed and was rolled back. Steps that failed:” => {“Operation step-2″ => {“Services with missing/unavailable dependencies” => [“jboss.web.deployment.default-host./CrudJSF.realm missing [ jboss.security.security-domain.other ]”]}}}

    • Flávio, bom dia.

      Pela mensagem de erro faltou criar o modulo do postegres:
      New missing/unsatisfied dependencies:
      service jboss.jdbc-driver.postgresql-jdbc4 (missing)

      Espero ter ajudado.

  66. Aparentemente não tive problemas com a configuração.
    Não tive nenhum ‘ERROR’ no console.
    Porém, as tabelas não estão sendo geradas. To utilizando mySql. Sabe o que pode ser? Grato.

    persistence.xml

    org.hibernate.ejb.HibernatePersistence
    java:jboss/datasources/MySqlDS

    • Lucas, bom dia.

      Sem uma mensagem de erro realmente fica complicado saber o que pode ser. =/

      Desculpe não poder ajudar.

      Coloque seu código no GUJ que alguém pode ter uma idéia do que pode ser. [=

      Obrigado pela visita.

  67. Eai, ótimo tutorial,

    mas estou com um problema, to a tempo sem mexer com java web e ta estorando uns erros, concerteza to esquecendo de algo importante, se puder da uma olhada agradeço..

    erro /

    1:03:35,305 WARN [AbstractKernelController] Broken callback: ClassSingleCallbackItem@6159a20c{name=interface org.jboss.wsf.spi.metadata.DescriptorProcessor whenRequired=ControllerState@61a6542{Installed} dependentState=ControllerState@61a6542{Installed} attributeName=setProcessor owner=AbstractKernelControllerContext@65ec8a38{ metadata=AbstractBeanMetaData@6a844c0f{name=WSDescriptorDeployer bean=org.jboss.webservices.integration.deployers.WSDescriptorDeployer properties= classLoader=BeanMetaDataDeployer$DeploymentClassLoaderMetaData@57c85d64{classloader=null} constructor=null autowireCandidate=true installCallbacks=[method=setProcessor, method=setParser]}name=WSDescriptorDeployer target=org.jboss.webservices.integration.deployers.WSDescriptorDeployer@236f7565 state=Installed depends=AbstractDependencyInfo@7c739ebd{}} signature=org.jboss.wsf.spi.metadata.DescriptorProcessor}: java.lang.ClassCastException: org.jboss.wsf.stack.cxf.deployment.jms.JMSDescriptorProcessorImpl cannot be cast to org.jboss.wsf.spi.metadata.webservices.WebservicesDescriptorProcessor
    at org.jboss.webservices.integration.deployers.WSDescriptorDeployer.setProcessor(WSDescriptorDeployer.java:33) [:6.1.0.Final]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [:1.7.0_07]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [:1.7.0_07]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [:1.7.0_07]
    at java.lang.reflect.Method.invoke(Unknown Source) [:1.7.0_07]
    at org.jboss.reflect.plugins.introspection.ReflectionUtils.invoke(ReflectionUtils.java:60) [jboss-reflect.jar:2.2.1.SP1]
    at org.jboss.reflect.plugins.introspection.ReflectMethodInfoImpl.invoke(ReflectMethodInfoImpl.java:168) [jboss-reflect.jar:2.2.1.SP1]
    at org.jboss.joinpoint.plugins.BasicMethodJoinPoint.dispatch(BasicMethodJoinPoint.java:66) [jboss-reflect.jar:2.2.1.SP1]
    at org.jboss.beans.info.plugins.AbstractBeanInfo.invoke(AbstractBeanInfo.java:300) [jboss-reflect.jar:2.2.1.SP1]
    at org.jboss.kernel.plugins.dependency.AbstractKernelControllerContext.invoke(AbstractKernelControllerContext.java:305) [jboss-kernel.jar:2.2.0.SP2]
    at org.jboss.kernel.plugins.dependency.ClassSingleCallbackItem.ownerCallback(ClassSingleCallbackItem.java:78) [jboss-kernel.jar:2.2.0.SP2]
    at org.jboss.dependency.plugins.AbstractController.resolveCallbacks(AbstractController.java:1887) [jboss-dependency.jar:2.2.0.SP2]
    at org.jboss.dependency.plugins.AbstractController.resolveCallbacks(AbstractController.java:1937) [jboss-dependency.jar:2.2.0.SP2]
    at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:1092) [jboss-dependency.jar:2.2.0.SP2]
    at org.jboss.dependency.plugins.AbstractController.executeOrIncrementStateDirectly(AbstractController.java:1322) [jboss-dependency.jar:2.2.0.SP2]
    at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1246) [jboss-dependency.jar:2.2.0.SP2]
    at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1139) [jboss-dependency.jar:2.2.0.SP2]
    at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:894) [jboss-dependency.jar:2.2.0.SP2]
    at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:641) [jboss-dependency.jar:2.2.0.SP2]
    at org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer.deploy(BeanMetaDataDeployer.java:182) [:2.2.2.GA]
    at org.jboss.deployers.vfs.deployer.kernel.BeanMetaDataDeployer.deploy(BeanMetaDataDeployer.java:58) [:2.2.2.GA]
    at org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer.internalDeploy(AbstractSimpleRealDeployer.java:63) [:2.2.2.GA]
    at org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy(AbstractRealDeployer.java:55) [:2.2.2.GA]
    at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:179) [:2.2.2.GA]
    at org.jboss.deployers.plugins.deployers.DeployersImpl.doDeploy(DeployersImpl.java:1832) [:2.2.2.GA]
    at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1550) [:2.2.2.GA]
    at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1571) [:2.2.2.GA]
    at org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:1491) [:2.2.2.GA]
    at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:379) [jboss-dependency.jar:2.2.0.SP2]
    at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:2044) [jboss-dependency.jar:2.2.0.SP2]
    at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:1083) [jboss-dependency.jar:2.2.0.SP2]
    at org.jboss.dependency.plugins.AbstractController.executeOrIncrementStateDirectly(AbstractController.java:1322) [jboss-dependency.jar:2.2.0.SP2]
    at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1246) [jboss-dependency.jar:2.2.0.SP2]
    at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1139) [jboss-dependency.jar:2.2.0.SP2]
    at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:939) [jboss-dependency.jar:2.2.0.SP2]
    at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:654) [jboss-dependency.jar:2.2.0.SP2]
    at org.jboss.deployers.plugins.deployers.DeployersImpl.change(DeployersImpl.java:1983) [:2.2.2.GA]
    at org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:1076) [:2.2.2.GA]
    at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:679) [:2.2.2.GA]
    at org.jboss.system.server.profileservice.deployers.MainDeployerPlugin.process(MainDeployerPlugin.java:106) [:6.1.0.Final]
    at org.jboss.profileservice.dependency.ProfileControllerContext$DelegateDeployer.process(ProfileControllerContext.java:143) [:0.2.2]
    at org.jboss.profileservice.dependency.ProfileDeployAction.deploy(ProfileDeployAction.java:151) [:0.2.2]
    at org.jboss.profileservice.dependency.ProfileDeployAction.installActionInternal(ProfileDeployAction.java:94) [:0.2.2]
    at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:54) [jboss-kernel.jar:2.2.0.SP2]
    at org.jboss.kernel.plugins.dependency.InstallsAwareAction.installAction(InstallsAwareAction.java:42) [jboss-kernel.jar:2.2.0.SP2]
    at org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:62) [jboss-dependency.jar:2.2.0.SP2]
    at org.jboss.dependency.plugins.action.AccessControllerContextAction.install(AccessControllerContextAction.java:71) [jboss-dependency.jar:2.2.0.SP2]
    at org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51) [jboss-dependency.jar:2.2.0.SP2]
    at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:379) [jboss-dependency.jar:2.2.0.SP2]
    at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:2044) [jboss-dependency.jar:2.2.0.SP2]
    at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:1083) [jboss-dependency.jar:2.2.0.SP2]
    at org.jboss.dependency.plugins.AbstractController.executeOrIncrementStateDirectly(AbstractController.java:1322) [jboss-dependency.jar:2.2.0.SP2]
    at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1246) [jboss-dependency.jar:2.2.0.SP2]
    at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1139) [jboss-dependency.jar:2.2.0.SP2]
    at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:939) [jboss-dependency.jar:2.2.0.SP2]
    at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:654) [jboss-dependency.jar:2.2.0.SP2]
    at org.jboss.profileservice.dependency.ProfileActivationWrapper$BasicProfileActivation.start(ProfileActivationWrapper.java:190) [:0.2.2]
    at org.jboss.profileservice.dependency.ProfileActivationWrapper.start(ProfileActivationWrapper.java:87) [:0.2.2]
    at org.jboss.profileservice.dependency.ProfileActivationService.activateProfile(ProfileActivationService.java:215) [:0.2.2]
    at org.jboss.profileservice.dependency.ProfileActivationService.activate(ProfileActivationService.java:159) [:0.2.2]
    at org.jboss.profileservice.bootstrap.AbstractProfileServiceBootstrap.activate(AbstractProfileServiceBootstrap.java:112) [:0.2.2]
    at org.jboss.profileservice.resolver.BasicResolverFactory$ProfileResolverFacade.deploy(BasicResolverFactory.java:87) [:0.2.2]
    at org.jboss.profileservice.bootstrap.AbstractProfileServiceBootstrap.start(AbstractProfileServiceBootstrap.java:91) [:0.2.2]
    at org.jboss.system.server.profileservice.bootstrap.BasicProfileServiceBootstrap.start(BasicProfileServiceBootstrap.java:132) [:6.1.0.Final]
    at org.jboss.system.server.profileservice.bootstrap.BasicProfileServiceBootstrap.start(BasicProfileServiceBootstrap.java:56) [:6.1.0.Final]
    at org.jboss.bootstrap.impl.base.server.AbstractServer.startBootstraps(AbstractServer.java:827) [jboss-bootstrap-impl-base.jar:2.1.0-alpha-6]
    at org.jboss.bootstrap.impl.base.server.AbstractServer$StartServerTask.run(AbstractServer.java:417) [jboss-bootstrap-impl-base.jar:2.1.0-alpha-6]
    at java.lang.Thread.run(Unknown Source) [:1.7.0_07]

    • Rodrigo, bom dia.

      Nunca tivesse erro: org.jboss.wsf.stack.cxf.deployment.jms.JMSDescriptorProcessorImpl cannot be cast to org.jboss.wsf.spi.metadata.webservices.WebservicesDescriptorProcessor

      Realmente ele não explica muita coisa.

      Tente baixar um novo JBoss, pode ser que tenha algum arquivo corrompido. Veja também se não houve alguma alteração nos xmls que pode ter afetado o JBoss.

      Obrigado pela visita. [=

    • Peres, bom dia.

      Seria necessário adicionar todas as dependências, o que daria um outro post. [=

      Obrigado pela visita, mas no momento não tenho um código pronto para fornecer. =/

  68. Estoro esse erro, pode me ajudar?

    13:47:55,839 ERROR [org.jboss.as.server] JBAS015956: Caught exception during boot: org.jboss.as.controller.persistence.ConfigurationPersistenceException: JBAS014676: Failed to parse configuration
    at org.jboss.as.controller.persistence.XmlConfigurationPersister.load(XmlConfigurationPersister.java:141) [jboss-as-controller-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.as.server.ServerService.boot(ServerService.java:266) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.as.controller.AbstractControllerService$1.run(AbstractControllerService.java:155) [jboss-as-controller-7.1.1.Final.jar:7.1.1.Final]
    at java.lang.Thread.run(Unknown Source) [rt.jar:1.7.0_07]
    Caused by: javax.xml.stream.XMLStreamException: org.jboss.as.connector.util.ParserException: IJ010061: Unexpected element: datasources
    at org.jboss.as.connector.subsystems.datasources.DataSourcesExtension$DataSourceSubsystemParser.readElement(DataSourcesExtension.java:784)
    at org.jboss.as.connector.subsystems.datasources.DataSourcesExtension$DataSourceSubsystemParser.readElement(DataSourcesExtension.java:333)
    at org.jboss.staxmapper.XMLMapperImpl.processNested(XMLMapperImpl.java:110) [staxmapper-1.1.0.Final.jar:1.1.0.Final]
    at org.jboss.staxmapper.XMLExtendedStreamReaderImpl.handleAny(XMLExtendedStreamReaderImpl.java:69) [staxmapper-1.1.0.Final.jar:1.1.0.Final]
    at org.jboss.as.server.parsing.StandaloneXml.parseServerProfile(StandaloneXml.java:894) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.as.server.parsing.StandaloneXml.readServerElement_1_1(StandaloneXml.java:330) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.as.server.parsing.StandaloneXml.readElement(StandaloneXml.java:127) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.as.server.parsing.StandaloneXml.readElement(StandaloneXml.java:100) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.staxmapper.XMLMapperImpl.processNested(XMLMapperImpl.java:110) [staxmapper-1.1.0.Final.jar:1.1.0.Final]
    at org.jboss.staxmapper.XMLMapperImpl.parseDocument(XMLMapperImpl.java:69) [staxmapper-1.1.0.Final.jar:1.1.0.Final]
    at org.jboss.as.controller.persistence.XmlConfigurationPersister.load(XmlConfigurationPersister.java:133) [jboss-as-controller-7.1.1.Final.jar:7.1.1.Final]
    … 3 more
    Caused by: org.jboss.as.connector.util.ParserException: IJ010061: Unexpected element: datasources
    at org.jboss.as.connector.subsystems.datasources.DsParser.parseDataSources(DsParser.java:210)
    at org.jboss.as.connector.subsystems.datasources.DsParser.parse(DsParser.java:165)
    at org.jboss.as.connector.subsystems.datasources.DataSourcesExtension$DataSourceSubsystemParser.readElement(DataSourcesExtension.java:776)
    … 13 more

    • Rodrigo, boa noite.

      Conforme visto no GUJ, esse erro é um problema em seu standalone.xml.

      Sempre que esse erro acontecer, verifique por tags não finalizas corretamentes ou atributos não preenchidos.

      Obrigado pela visita.

  69. Oi Hebert, boa tarde!

    Desculpe a ignorância, mas por que do abstract aqui:

    ‘@Local
    public interface DogFacade {

    public abstract void save(Dog dog);

    public abstract Dog update(Dog dog);

    public abstract void delete(Dog dog);

    public abstract Dog find(int entityID);

    public abstract List findAll();
    }”

    Obrigado. Um abraço, curto muito seus posts =]

    • Olá Júnior, tudo bem?

      A palavra abstract é opcional.

      O método estar escrito:
      public abstract void save(Dog dog);
      ou
      public void save(Dog dog);
      em uma interface, terá o mesmo resultado.

      Nunca tenha vergonha de perguntar. [=

      Obrigado pelo apoio. [=

  70. Parabéns pelo post Hebert.

    Bom, estou tendo problemas com mysql + JPA, com o “wait_timeout” do mysql que é configurado por defalt pra 8h. Depois de 8h a aplicação para de funcionar, e só reiniciando o tomcat para ela funcionar. Não itendi muito bem o que acontece, mais procurei algumas soluções.

    Já tentei muita coisa, como usar o provider c3p0, mais da erro na configuração, perdi mais de 1 dia com isso e nada.

    Mais eu acho que o problema é pq eu dou um “open”(createEntityManager(“PU”)) do entityManager só uma vez no projeto(não sei se isso é correto). E eu nem sei aonde fecha-lo. Já tentei usar o OpenSessionInView para criar e fechar o entityManager, mais deu problemas tbm, falando que o entityManager estava fechado.

    Com todos esses problemas resolvi procurar algo que controle por si só esta questão de criar e fechar o entityManager e gerenciar translações.

    Fui usar o EJB, mais estou utilizando tocamt, e de server eu não posso mudar ;/

    Você tem alguma dica, pra resolver esses problemas?
    Quando devo criar o entityManager(e se é só uma vez mesmo), e fechar ele. Conhece alguma alternativa pra solucionar esse problema do wait_timeout do mysql?
    E indicar algum outro tipo de framework que faça esse serviço pra mim como o EJB faz, só que rode no tomcat?

    Vlw cara, até mais.

    • Olá Marcelo, tudo bem?

      O que pode ser feito realmente é o c3p0 é a solução mais encontrada.

      O OpenSessionInView eu nunca vi sendo aplicado para esse tipo de problema.

      Você poderia olhar o Spring para controlar suas transações. [=

      Obrigado pela visita.

  71. Olá Hebert, parabéns por todos os tópicos!!
    Estou eu encomodando novamente. E pra variar no AutoComplete ainda.
    Consegui fazer buscar, consegui selecionar, agora estou tentando salvar uma alteração.
    Mas quando ele chega no DAO no GetAsObject do Converter o em(EntityManager) está nulo.
    Não sei se teria como dar uma olhada.
    Agradeço qualquer auxílio.
    GenericDao
    return em.find(entityClass, entityID); //Aqui da o erro

  72. Oi Hebert tudo bem.

    Cara eu vi o exemplo acima do “updateDog.xhtml” e tentei replica algo semelhante, porém não consigo, o meu teste só funciona como SessionScoped e não como RequestScoped, há alguma forma que meu teste funcione como request ? Obrigado e a seguir lá vem a história ….

    O que eu fiz foi o seguinte

    Criei um managedbean como RequestScoped e chamei de ManipulaTelefoneMb

    Criei dois xhtml : lista.xhtml e editar.xtml

    O lista.xhtml é apenas um h:form e dentro um h:dataTable , onde em uma coluna eu coloquei um h:commandLink para chamar a edição da linha , este trecho de código ficou assim :

    Desta forma ao clicar neste link eu vou “chamar” do meu managed bean (ManipulaTelefoneMb) o metodo editar , veja o trecho do código

    public String editar(ListaTelefone tel){
    this.tel = tel;
    return “editar”;
    }

    public ListaTelefone getTel() {
    return tel;
    }

    public void setTel(ListaTelefone tel) {
    this.tel = tel;
    }

    Bom , no meu faces-config.xml está mapeada a string “editar” para chamar o arquivo Editar.xhtml , a seguir está o “código principal” do Editar.xhtml :

    Ao ser carregado pelo browse vem todos os dados (Nome e Telefone)corretamente , o botão salvar irá executar o seguinte método de meu managed bean (ManipulaTelefoneMb) :

    public void gravar(){
    TelefoneDAO td = new TelefoneDAO();
    td.updateTelefone(tel);
    }

    Ao clicar neste botão ocorre um erro. Coloquei um break point no metodo gravar e a JVM nem chega a passar por ele , o stack do erro é o seguinte :

    AVISO [javax.enterprise.resource.webcontainer.jsf.lifecycle] /pages/Editar.xhtml @10,57 value=”#{ManipulaTelefoneMb.tel.id}”: Target Unreachable, ‘tel’ returned null: javax.el.PropertyNotFoundException: /pages/Editar.xhtml @10,57 value=”#{ManipulaTelefoneMb.tel.id}”: Target Unreachable, ‘tel’ returned null
    at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:97) [:2.0.3-]
    at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:91) [:2.0.3-]
    at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1023) [:2.0.3-]
    at javax.faces.component.UIInput.validate(UIInput.java:953) [:2.0.3-]
    at javax.faces.component.UIInput.executeValidate(UIInput.java:1204) [:2.0.3-]
    at javax.faces.component.UIInput.processValidators(UIInput.java:693) [:2.0.3-]
    at javax.faces.component.UIForm.processValidators(UIForm.java:240) [:2.0.3-]
    at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1081) [:2.0.3-]
    at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1159) [:2.0.3-]
    at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:72) [:2.0.3-]
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97) [:2.0.3-]
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114) [:2.0.3-]
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:308) [:2.0.3-]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:324) [:6.1.0.Final]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.1.0.Final]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [:6.1.0.Final]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [:6.1.0.Final]
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:181) [:6.1.0.Final]
    at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.event(CatalinaContext.java:285) [:1.1.0.Final]
    at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.invoke(CatalinaContext.java:261) [:1.1.0.Final]
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:88) [:6.1.0.Final]
    at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:100) [:6.1.0.Final]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:159) [:6.1.0.Final]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [:6.1.0.Final]
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) [:6.1.0.Final]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [:6.1.0.Final]
    at org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve.invoke(ActiveRequestResponseCacheValve.java:53) [:6.1.0.Final]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) [:6.1.0.Final]
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [:6.1.0.Final]
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:654) [:6.1.0.Final]
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:951) [:6.1.0.Final]
    at java.lang.Thread.run(Unknown Source) [:1.6.0_39]

    00:28:47,448 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localhost].[/JPA_comJSF2].[Faces Servlet]] Servlet.service() for servlet Faces Servlet threw exception: javax.el.PropertyNotFoundException: /pages/Editar.xhtml @10,57 value=”#{ManipulaTelefoneMb.tel.id}”: Target Unreachable, ‘tel’ returned null
    at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:97) [:2.0.3-]
    at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:91) [:2.0.3-]
    at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1023) [:2.0.3-]
    at javax.faces.component.UIInput.validate(UIInput.java:953) [:2.0.3-]
    at javax.faces.component.UIInput.executeValidate(UIInput.java:1204) [:2.0.3-]
    at javax.faces.component.UIInput.processValidators(UIInput.java:693) [:2.0.3-]
    at javax.faces.component.UIForm.processValidators(UIForm.java:240) [:2.0.3-]
    at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1081) [:2.0.3-]
    at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1159) [:2.0.3-]
    at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:72) [:2.0.3-]
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97) [:2.0.3-]
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114) [:2.0.3-]
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:308) [:2.0.3-]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:324) [:6.1.0.Final]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:242) [:6.1.0.Final]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [:6.1.0.Final]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [:6.1.0.Final]
    at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:181) [:6.1.0.Final]
    at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.event(CatalinaContext.java:285) [:1.1.0.Final]
    at org.jboss.modcluster.catalina.CatalinaContext$RequestListenerValve.invoke(CatalinaContext.java:261) [:1.1.0.Final]
    at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:88) [:6.1.0.Final]
    at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:100) [:6.1.0.Final]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:159) [:6.1.0.Final]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [:6.1.0.Final]
    at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158) [:6.1.0.Final]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [:6.1.0.Final]
    at org.jboss.web.tomcat.service.request.ActiveRequestResponseCacheValve.invoke(ActiveRequestResponseCacheValve.java:53) [:6.1.0.Final]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) [:6.1.0.Final]
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [:6.1.0.Final]
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:654) [:6.1.0.Final]
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:951) [:6.1.0.Final]
    at java.lang.Thread.run(Unknown Source) [:1.6.0_39]

    Se você puder dar uma ajuda , fico agradecido.

    []s

    • Anderson, bom dia.

      Seu problema é que você está chamando tel e tel está nulo.

      Você tem que fazer algo como no managedBean:
      public Carro getCarro(){
      if(carro == null){
      carro = new Carro();
      }

      return carro;
      }

      Obrigado pela visita

  73. Bom dia, Hebert!

    Primeiramente gostaria de parabeniza-ló pelo tutorial, e um dos mais completos que já visitei sobre “JBOSS + JSF” .

    A questão é a seguinte, meu servidor sobe normal, acessando a base de dados. O grande problema é no momento de autenticar o usuário. O erro informado é referente a configuração do arquivo ‘stanalone.xml’, ao meu ver…..

    Poderia me auxiliar?

    11:01:05,891 INFO [org.jboss.modules] JBoss Modules version 1.0.2.GA
    11:01:06,312 INFO [org.jboss.msc] JBoss MSC version 1.0.1.GA
    11:01:06,370 INFO [org.jboss.as] JBoss AS 7.0.2.Final “Arc” starting
    11:01:07,458 WARN [org.jboss.as] No security realm defined for native management service, all access will be unrestricted.
    11:01:07,541 INFO [org.jboss.as] creating http management service using network interface (management) port (9990)
    11:01:07,543 WARN [org.jboss.as] No security realm defined for http management service, all access will be unrestricted.
    11:01:07,568 INFO [org.jboss.as.connector.subsystems.datasources] Deploying non-JDBC-compliant driver class org.postgresql.Driver (version 9.1)
    11:01:07,575 INFO [org.jboss.as.logging] Removing bootstrap log handlers
    11:01:07,592 INFO [org.jboss.as.clustering.infinispan.subsystem] (Controller Boot Thread) Activating Infinispan subsystem.
    11:01:07,690 INFO [org.jboss.as.naming] (Controller Boot Thread) JBAS011800: Activating Naming Subsystem
    11:01:07,705 INFO [org.jboss.as.naming] (MSC service thread 1-4) JBAS011802: Starting Naming Service
    11:01:07,707 INFO [org.jboss.as.osgi] (Controller Boot Thread) JBAS011910: Activating OSGi Subsystem
    11:01:07,727 INFO [org.jboss.as.security] (Controller Boot Thread) Activating Security Subsystem
    11:01:07,739 INFO [org.jboss.remoting] (MSC service thread 1-2) JBoss Remoting version 3.2.0.Beta2
    11:01:07,757 INFO [org.xnio] (MSC service thread 1-2) XNIO Version 3.0.0.Beta3
    11:01:07,769 INFO [org.xnio.nio] (MSC service thread 1-2) XNIO NIO Implementation Version 3.0.0.Beta3
    11:01:08,103 INFO [org.apache.catalina.core.AprLifecycleListener] (MSC service thread 1-3) The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:Program FilesJavajdk1.6.0_38bin;C:WindowsSunJavabin;C:Windowssystem32;C:Windows;C:/Program Files/Java/jre7/bin/client;C:/Program Files/Java/jre7/bin;C:/Program Files/Java/jre7/lib/i386;C:appcarl.nascimentoproduct11.2.0client_1bin;C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;C:Program FilesInternet Explorer;C:Userscarl.nascimentoDocumentsDesenv-01Desenv-SoftwareIndigoeclipse;;.
    11:01:08,152 INFO [org.jboss.as.ee] (Controller Boot Thread) Activating EE subsystem
    11:01:08,724 INFO [org.jboss.as.remoting] (MSC service thread 1-4) Listening on /127.0.0.1:9999
    11:01:08,822 INFO [org.apache.coyote.http11.Http11Protocol] (MSC service thread 1-2) Starting Coyote HTTP/1.1 on http–127.0.0.1-8080
    11:01:08,822 INFO [org.jboss.as.jmx.JMXConnectorService] (MSC service thread 1-2) Starting remote JMX connector
    11:01:09,098 INFO [org.jboss.as.connector] (MSC service thread 1-4) Starting JCA Subsystem (JBoss IronJacamar 1.0.3.Final)
    11:01:09,167 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-2) Bound data source
    11:01:09,202 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-3) Bound data source
    11:01:09,225 INFO [org.jboss.as.deployment] (MSC service thread 1-2) Started FileSystemDeploymentService for directory C:Userscarl.nascimentoDocumentsDesenv-01Desenv-SoftwareJBOSSJBOSS7jboss-as-7.0.2.Finalstandalonedeployments
    11:01:09,269 INFO [org.jboss.as.deployment] (DeploymentScanner-threads – 1) Found CrudDB.jar in deployment directory. To trigger deployment create a file called CrudDB.jar.dodeploy
    11:01:09,270 INFO [org.jboss.as.deployment] (DeploymentScanner-threads – 1) Found CrudEAR.ear in deployment directory. To trigger deployment create a file called CrudEAR.ear.dodeploy
    11:01:09,326 INFO [org.jboss.as] (Controller Boot Thread) JBoss AS 7.0.2.Final “Arc” started in 3730ms – Started 99 of 154 services (55 services are passive or on-demand)
    11:01:09,350 INFO [org.jboss.as.server.deployment] (MSC service thread 1-1) Starting deployment of “CrudEAR.ear”
    11:01:09,492 INFO [org.jboss.as.server.deployment] (MSC service thread 1-1) Starting deployment of “CrudJSF.war”
    11:01:09,493 INFO [org.jboss.as.server.deployment] (MSC service thread 1-1) Starting deployment of “CrudDB.jar”
    11:01:09,535 INFO [org.jboss.jpa] (MSC service thread 1-2) read persistence.xml for CrudPU
    11:01:09,551 INFO [org.jboss.as.jpa] (MSC service thread 1-1) added javax.persistence.api, javaee.api, org.jboss.as.jpa, org.javassist dependencies to CrudEAR.ear
    11:01:09,551 INFO [org.jboss.as.jpa] (MSC service thread 1-1) added (default provider) org.hibernate dependency to application deployment (since 1 PU(s) didn’t specify jboss.as.jpa.providerModule)
    11:01:09,552 INFO [org.jboss.as.jpa] (MSC service thread 1-1) added org.hibernate dependency to application deployment
    11:01:09,553 INFO [org.jboss.as.jpa] (MSC service thread 1-1) added javax.persistence.api, javaee.api, org.jboss.as.jpa, org.javassist dependencies to CrudJSF.war
    11:01:09,554 INFO [org.jboss.as.jpa] (MSC service thread 1-1) added javax.persistence.api, javaee.api, org.jboss.as.jpa, org.javassist dependencies to CrudDB.jar
    11:01:09,554 INFO [org.jboss.as.jpa] (MSC service thread 1-1) added (default provider) org.hibernate dependency to application deployment (since 1 PU(s) didn’t specify jboss.as.jpa.providerModule)
    11:01:09,554 INFO [org.jboss.as.jpa] (MSC service thread 1-1) added org.hibernate dependency to application deployment
    11:01:09,651 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-1) JNDI bindings for session bean named UserDAO in deployment unit subdeployment “CrudDB.jar” of deployment “CrudEAR.ear” are as follows:

    java:global/CrudEAR/CrudDB/UserDAO!com.dao.UserDAO
    java:app/CrudDB/UserDAO!com.dao.UserDAO
    java:module/UserDAO!com.dao.UserDAO
    java:global/CrudEAR/CrudDB/UserDAO
    java:app/CrudDB/UserDAO
    java:module/UserDAO

    11:01:09,652 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-1) JNDI bindings for session bean named UserFacadeImpl in deployment unit subdeployment “CrudDB.jar” of deployment “CrudEAR.ear” are as follows:

    java:global/CrudEAR/CrudDB/UserFacadeImpl!com.facade.UserFacade
    java:app/CrudDB/UserFacadeImpl!com.facade.UserFacade
    java:module/UserFacadeImpl!com.facade.UserFacade
    java:global/CrudEAR/CrudDB/UserFacadeImpl
    java:app/CrudDB/UserFacadeImpl
    java:module/UserFacadeImpl

    11:01:09,652 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-1) JNDI bindings for session bean named DogDAO in deployment unit subdeployment “CrudDB.jar” of deployment “CrudEAR.ear” are as follows:

    java:global/CrudEAR/CrudDB/DogDAO!com.dao.DogDAO
    java:app/CrudDB/DogDAO!com.dao.DogDAO
    java:module/DogDAO!com.dao.DogDAO
    java:global/CrudEAR/CrudDB/DogDAO
    java:app/CrudDB/DogDAO
    java:module/DogDAO

    11:01:09,652 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-1) JNDI bindings for session bean named DogFacadeImp in deployment unit subdeployment “CrudDB.jar” of deployment “CrudEAR.ear” are as follows:

    java:global/CrudEAR/CrudDB/DogFacadeImp!com.facade.DogFacade
    java:app/CrudDB/DogFacadeImp!com.facade.DogFacade
    java:module/DogFacadeImp!com.facade.DogFacade
    java:global/CrudEAR/CrudDB/DogFacadeImp
    java:app/CrudDB/DogFacadeImp
    java:module/DogFacadeImp

    11:01:10,028 INFO [org.jboss.jpa] (MSC service thread 1-4) starting Persistence Unit Service ‘CrudEAR.ear/CrudDB.jar#CrudPU’
    11:01:10,172 INFO [org.hibernate.annotations.common.Version] (MSC service thread 1-4) HCANN000001: Hibernate Commons Annotations {4.0.0.CR2}
    11:01:10,177 INFO [org.hibernate.Version] (MSC service thread 1-4) HHH00412:Hibernate Core {4.0.0.CR2}
    11:01:10,208 INFO [org.hibernate.cfg.Environment] (MSC service thread 1-4) HHH00206:hibernate.properties not found
    11:01:10,209 INFO [org.hibernate.cfg.Environment] (MSC service thread 1-4) HHH00021:Bytecode provider name : javassist
    11:01:10,225 INFO [javax.enterprise.resource.webcontainer.jsf.config] (MSC service thread 1-2) Inicializando Mojarra 2.1.3 (SNAPSHOT 20110825) para o contexto ‘/CrudJSF’
    11:01:10,282 INFO [org.hibernate.ejb.Ejb3Configuration] (MSC service thread 1-4) HHH00204:Processing PersistenceUnitInfo [
    name: CrudPU
    …]
    11:01:10,526 INFO [org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator] (MSC service thread 1-4) HHH00130:Instantiating explicit connection provider: org.hibernate.ejb.connection.InjectedDataSourceConnectionProvider
    11:01:10,769 INFO [org.hibernate.dialect.Dialect] (MSC service thread 1-4) HHH00400:Using dialect: org.hibernate.dialect.PostgreSQLDialect
    11:01:10,779 INFO [org.hibernate.engine.jdbc.internal.LobCreatorBuilder] (MSC service thread 1-4) HHH00424:Disabling contextual LOB creation as createClob() method threw error : java.lang.reflect.InvocationTargetException
    11:01:10,816 INFO [org.hibernate.engine.transaction.internal.TransactionFactoryInitiator] (MSC service thread 1-4) HHH00268:Transaction strategy: org.hibernate.engine.transaction.internal.jta.CMTTransactionFactory
    11:01:10,819 INFO [org.hibernate.hql.internal.ast.ASTQueryTranslatorFactory] (MSC service thread 1-4) HHH00397:Using ASTQueryTranslatorFactory
    11:01:10,922 INFO [org.hibernate.validator.util.Version] (MSC service thread 1-4) Hibernate Validator 4.2.0.Final
    11:01:11,577 INFO [org.hibernate.tool.hbm2ddl.SchemaUpdate] (MSC service thread 1-4) HHH00228:Running hbm2ddl schema update
    11:01:11,577 INFO [org.hibernate.tool.hbm2ddl.SchemaUpdate] (MSC service thread 1-4) HHH00102:Fetching database metadata
    11:01:11,588 INFO [org.hibernate.tool.hbm2ddl.SchemaUpdate] (MSC service thread 1-4) HHH00396:Updating schema
    11:01:11,685 INFO [org.hibernate.tool.hbm2ddl.TableMetadata] (MSC service thread 1-4) HHH00261:Table found: public.dogs
    11:01:11,686 INFO [org.hibernate.tool.hbm2ddl.TableMetadata] (MSC service thread 1-4) HHH00037:Columns: [id, weight, name]
    11:01:11,686 INFO [org.hibernate.tool.hbm2ddl.TableMetadata] (MSC service thread 1-4) HHH00108:Foreign keys: []
    11:01:11,686 INFO [org.hibernate.tool.hbm2ddl.TableMetadata] (MSC service thread 1-4) HHH00126:Indexes: [dogs_pkey]
    11:01:11,711 INFO [org.hibernate.tool.hbm2ddl.TableMetadata] (MSC service thread 1-4) HHH00261:Table found: public.revinfo
    11:01:11,711 INFO [org.hibernate.tool.hbm2ddl.TableMetadata] (MSC service thread 1-4) HHH00037:Columns: [rev, revtstmp]
    11:01:11,711 INFO [org.hibernate.tool.hbm2ddl.TableMetadata] (MSC service thread 1-4) HHH00108:Foreign keys: []
    11:01:11,711 INFO [org.hibernate.tool.hbm2ddl.TableMetadata] (MSC service thread 1-4) HHH00126:Indexes: [revinfo_pkey]
    11:01:11,763 INFO [org.hibernate.tool.hbm2ddl.TableMetadata] (MSC service thread 1-4) HHH00261:Table found: public.users
    11:01:11,763 INFO [org.hibernate.tool.hbm2ddl.TableMetadata] (MSC service thread 1-4) HHH00037:Columns: [id, email, name, role, password]
    11:01:11,764 INFO [org.hibernate.tool.hbm2ddl.TableMetadata] (MSC service thread 1-4) HHH00108:Foreign keys: []
    11:01:11,764 INFO [org.hibernate.tool.hbm2ddl.TableMetadata] (MSC service thread 1-4) HHH00126:Indexes: [users_pkey, users_email_key]
    11:01:11,764 INFO [org.hibernate.tool.hbm2ddl.SchemaUpdate] (MSC service thread 1-4) HHH00232:Schema update complete
    11:01:12,300 INFO [org.jboss.web] (MSC service thread 1-2) registering web context: /CrudJSF
    11:01:12,380 INFO [org.jboss.as.server.controller] (DeploymentScanner-threads – 2) Deployed “CrudEAR.ear”

    11:02:06,540 ERROR [org.jboss.security.auth.spi.DisabledLoginModule] (http–127.0.0.1-8080-2) The security domain other has been disabled. All authentication will fail. Please check your configuration to make sure this is expected
    11:02:06,545 ERROR [org.jboss.security.authentication.JBossCachedAuthenticationManager] (http–127.0.0.1-8080-2) Login failure: javax.security.auth.login.LoginException: Falha de logon: todos os módulos ignorados
    at javax.security.auth.login.LoginContext.invoke(LoginContext.java:921) [:1.6.0_38]
    at javax.security.auth.login.LoginContext.access$000(LoginContext.java:186) [:1.6.0_38]
    at javax.security.auth.login.LoginContext$4.run(LoginContext.java:683) [:1.6.0_38]
    at java.security.AccessController.doPrivileged(Native Method) [:1.6.0_38]
    at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:680) [:1.6.0_38]
    at javax.security.auth.login.LoginContext.login(LoginContext.java:579) [:1.6.0_38]
    at org.jboss.security.authentication.JBossCachedAuthenticationManager.defaultLogin(JBossCachedAuthenticationManager.java:411) [picketbox-infinispan-4.0.1.jar:4.0.1]
    at org.jboss.security.authentication.JBossCachedAuthenticationManager.authenticate(JBossCachedAuthenticationManager.java:345) [picketbox-infinispan-4.0.1.jar:4.0.1]
    at org.jboss.security.authentication.JBossCachedAuthenticationManager.isValid(JBossCachedAuthenticationManager.java:154) [picketbox-infinispan-4.0.1.jar:4.0.1]
    at org.jboss.as.web.security.JBossWebRealm.authenticate(JBossWebRealm.java:127) [jboss-as-web-7.0.2.Final.jar:7.0.2.Final]
    at org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAuthenticator.java:280) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:372) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
    at org.jboss.as.web.NamingValve.invoke(NamingValve.java:57) [jboss-as-web-7.0.2.Final.jar:7.0.2.Final]
    at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:49) [jboss-as-jpa-7.0.2.Final.jar:7.0.2.Final]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:154) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:667) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:952) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
    at java.lang.Thread.run(Thread.java:662) [:1.6.0_38]

    • Carl, bom dia.

      Parece que você não criou o security realm. Olha a mensagem de erro: No security realm defined for native management service, all access will be unrestricted.

      Obrigado pela visita.

  74. Olá Hebert!
    Muito obrigado por compartilhar seu conhecimento conosco!
    Eu tenho uma dúvida em relação aos managedbeans.
    Vamos supor que alem de Dogs, eu também tenha Cats e Birds.
    Então meus managed beans irão ficar quase iguais, eu tenho como abstrair os managed beans de uma forma “elegante”?

    Abraço!

    • Ismael, boa tarde.

      Você tem algumas opções para solucionar esse tipo de “problema”.

      1) Você pode fazer um ManagedBean genérico. Diversas configurações e códigos precisarão ser utilizados para essa solução. E pode haver problemas com algumas bibliotecas como Primefaces/Richfaces.
      2) Criar uma classe Abstract que contenha os métodos em comum de cada ManagedBean.

      Espero ter ajudado, até mais! o_

      • Boa tarde Hebert,
        Obrigado pela resposta.

        Assim, não sou expert em java, venho do PHP e estou
        dando minhas tropeçadas no JAVA.
        Na prática, o que vc faz?
        Vc prefere criar uma classe abstrata para os métodos comuns dos MBs? seria uma boa prática fazer desta forma?
        Na real mesmo eu gostaria de saber o que é melhor fazer, para não ter problemas em outras partes.

        Meus MBs estão todos iguais, o que muda neles é apenas os
        atributos repositorio e entity, então quando continuei codificando percebi que estava virando copy-paste, vou te mostrar um dos meus MBs.

        @ManagedBean
        @SessionScoped
        public class FornecedorMB {

        @EJB
        private FornecedorRepositorio repositorio;

        private Fornecedor fornecedor = new Fornecedor();

        private List fornecedorCache;

        public String adiciona() {
        FacesContext facesContext = FacesContext.getCurrentInstance();

        this.repositorio.adiciona(this.fornecedor);

        facesContext.addMessage(null, new FacesMessage(“Fornecedor ‘”
        + this.fornecedor.getNomeFantasia() + “‘ adicionado.”));

        this.fornecedor = new Fornecedor();

        this.fornecedorCache = null;

        return null;
        }

        public List getFornecedores() {
        if (this.fornecedorCache == null) {
        this.fornecedorCache = this.repositorio.getFornecedores();
        }

        return this.fornecedorCache;
        }

        public Fornecedor getFornecedor() {
        return fornecedor;
        }

        public void setFornecedor(Fornecedor fornecedor) {
        this.fornecedor = fornecedor;
        }
        }

        Abraço!

  75. Bom dia Hebert,

    Primeiramente gostaria de parabenizar pelo blog, tem um material bastante descomplicado e com muita informação interessante. Tenho utilizado alguns posts com uma certa frequência para tirar dúvidas e relembrar conceitos do JSF e JPA. Valeu!!

    Tenho uma informação que pode ser útil (ou não).

    Você colocou assim no post:

    A ação escrita no form, aponta para uma ação desconhecida para nós, mas quem gerencia essa ação (action) é o JAAS.

    Eu estava procurando uma forma de usar um ManagedBean para realizar o login do usuário na aplicação, porém não queria colocar action=”j_security_check”, então descobri que na verdade o que essa action faz por trás dos panos é:
    – Chama o método login da Interface HttpServletRequest que utiliza as configurações do JAAS para realizar a autenticação do usuário com o servidor.

    Sabendo disso é possível fazer a autenticação do usuário da seguinte forma:

    Na página xhtml:

    Tela de Login

    No managedBean para realizar o login:

    public String login() {
    try {
    request.login(usuario.getLogin(), usuario.getSenha());
    return "protectedAreaHome";
    } catch (ServletException e) {
    e.printStackTrace();
    }
    return "";
    }

    Espero que possa ter contribuído com algo.

    Abraço.

    • Olá, tudo bem?

      Eu havia visto essa função do JEE 6 e achei muito interessante.

      Espero colocar essa nova funcionalidade no novo post que está sendo construído.

      Obrigado pela dica! =D

  76. Hebert, mais uma dúvida:

    No seu exemplo, listalldogs.xhml já estava no diretório protected, logo ao tentar acessar esta página o JAAS chama a página de login, que após validado já redireciona para a página desejada (listalldogs.xhtml). Porém, como faço, sendo a página de login a primeira por exemplo, para após o login, redirecionar para uma outra página qualquer?

    • Bruno, bom dia.

      Olhe no arquivo de web.xml tem o welcome-page que indica qual a página de login.

      Quando o usuário acessar http://localhost:8080/suaAplicacao após login ele será direcionado para a página demarcada lá.

      Caso você queira um controle mais refinado, como caso ADM envie para página A se for usuário para a página B, você teria que criar um módulo de JAAS.

      Até mais.

  77. Só pra complementar na linha 58 do código:
    Query query = em.createNamedQuery(namedQuery);

    // Method that will populate parameters if they are passed not null and empty
    if (parameters != null && !parameters.isEmpty()) {
    populateQueryParameters(query, parameters);
    }

    result = (T) query.getSingleResult();

    Existe sim um método tipado,
    TypedQuery javax.persistence.EntityManager.createNamedQuery(String arg0, Class arg1)

    • Diogo, boa tarde.

      Na época que criei esse post eu conhecia apenas o JPA 1.0 e não havia o método tipado.

      O TypedQuery veio com o JPA 2.0 que vim aprender algum tempo depois.

      Obrigado pela visita. [=

  78. Hebert, boa tarde.

    Estou recebendo o seguinte erro quando autenticado pelo servidor:

    HTTP Status 408 – The time allowed for the login process has been exceeded. If you wish to continue you must either click back twice and re-click the link you requested or close and re-open your browser.

    Já procurei algumas soluções e nada de me ajudarem. Teria alguma solução mais explicita para aumentar o tempo de sessão para o Login? (acho que é esse o problema).

    Obrigado!

    • Marcos, boa noite.

      Nunca tomei esse erro.

      Baixe o projeto aqui do post e tente executá-lo.

      Obrigado pela visita.

  79. Cara parei na parte “adicione o EJB no JBoss”, adicionei, criei o crudDB no Postgres, executei o JBoss e nada, nenhuma tabela foi criada.
    Sou iniciante, segui todos os passos certinho até aqui, mas não deu certo.
    Eu uso Linux, Eclipse Indigo, JBoss 7 e Postgres 9.1.18

  80. Hebert, boa tarde.

    Parabéns pelo post.

    Só uma dúvida. A estrutura que você propõe pode gerar um inconveniente na aplicação. Se você atualizar a página gerará um “re-post” no seu CRUD. Já pensou em implementar o padrão POST-Redirect-GET para resolver o problema?

    • Roger, boa noite.

      Esse patern é bom de ser utilizado, não o coloquei no post para não adicionar mais complexidade para quem está começando agora. [=

      Obrigado pela visita e pelo apoio.

  81. Olá Hebert, como ficaria esse protected T findOneResult(String namedQuery, Map parameters)

    e public User findUserByEmail(String email)

    sendo que em Hibernate, já rodei aqui para tentar implementar utilizando a mesma ideologia que vc usou mais até agora nao obtive sucesso.

    • Marcos, boa tarde.

      Do modo como se encontra no projeto ele está funcionando.

      Caso você tenha alguma exception após realizar alguma alteração poste o código no guj que ficará mais fácil de ajudar.

      Obrigado pela visita.

  82. quando estarto o jboss mostra o seguinte error:

    12:45:35,298 INFO [org.jboss.modules] JBoss Modules version 1.1.1.GA
    12:45:35,447 INFO [org.jboss.msc] JBoss MSC version 1.0.2.GA
    12:45:35,485 INFO [org.jboss.as] JBAS015899: JBoss AS 7.1.1.Final “Brontes” starting
    12:45:35,881 ERROR [org.jboss.as.server] JBAS015956: Caught exception during boot: org.jboss.as.controller.persistence.ConfigurationPersistenceException: JBAS014676: Failed to parse configuration
    at org.jboss.as.controller.persistence.XmlConfigurationPersister.load(XmlConfigurationPersister.java:141) [jboss-as-controller-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.as.server.ServerService.boot(ServerService.java:266) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.as.controller.AbstractControllerService$1.run(AbstractControllerService.java:155) [jboss-as-controller-7.1.1.Final.jar:7.1.1.Final]
    at java.lang.Thread.run(Thread.java:722) [rt.jar:1.7.0_07]
    Caused by: javax.xml.stream.XMLStreamException: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[96,17]
    Message: “JBAS010471: Jndi name have to start with java:/ or java:jboss/”
    at org.jboss.as.connector.subsystems.datasources.DataSourcesExtension$DataSourceSubsystemParser.readElement(DataSourcesExtension.java:784)
    at org.jboss.as.connector.subsystems.datasources.DataSourcesExtension$DataSourceSubsystemParser.readElement(DataSourcesExtension.java:333)
    at org.jboss.staxmapper.XMLMapperImpl.processNested(XMLMapperImpl.java:110) [staxmapper-1.1.0.Final.jar:1.1.0.Final]
    at org.jboss.staxmapper.XMLExtendedStreamReaderImpl.handleAny(XMLExtendedStreamReaderImpl.java:69) [staxmapper-1.1.0.Final.jar:1.1.0.Final]
    at org.jboss.as.server.parsing.StandaloneXml.parseServerProfile(StandaloneXml.java:894) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.as.server.parsing.StandaloneXml.readServerElement_1_1(StandaloneXml.java:330) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.as.server.parsing.StandaloneXml.readElement(StandaloneXml.java:127) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.as.server.parsing.StandaloneXml.readElement(StandaloneXml.java:100) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.staxmapper.XMLMapperImpl.processNested(XMLMapperImpl.java:110) [staxmapper-1.1.0.Final.jar:1.1.0.Final]
    at org.jboss.staxmapper.XMLMapperImpl.parseDocument(XMLMapperImpl.java:69) [staxmapper-1.1.0.Final.jar:1.1.0.Final]
    at org.jboss.as.controller.persistence.XmlConfigurationPersister.load(XmlConfigurationPersister.java:133) [jboss-as-controller-7.1.1.Final.jar:7.1.1.Final]
    … 3 more
    Caused by: javax.xml.stream.XMLStreamException: ParseError at [row,col]:[96,17]
    Message: “JBAS010471: Jndi name have to start with java:/ or java:jboss/”
    at org.jboss.as.controller.SimpleAttributeDefinition.parse(SimpleAttributeDefinition.java:154) [jboss-as-controller-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.as.controller.SimpleAttributeDefinition.parseAndSetParameter(SimpleAttributeDefinition.java:207) [jboss-as-controller-7.1.1.Final.jar:7.1.1.Final]
    at org.jboss.as.connector.subsystems.datasources.DsParser.parseDataSource(DsParser.java:564)
    at org.jboss.as.connector.subsystems.datasources.DsParser.parseDataSources(DsParser.java:194)
    at org.jboss.as.connector.subsystems.datasources.DsParser.parse(DsParser.java:165)
    at org.jboss.as.connector.subsystems.datasources.DataSourcesExtension$DataSourceSubsystemParser.readElement(DataSourcesExtension.java:776)
    … 13 more

    12:45:35,905 FATAL [org.jboss.as.server] JBAS015957: Server boot has failed in an unrecoverable manner; exiting. See previous messages for details.
    12:45:35,913 INFO [org.jboss.as] JBAS015950: JBoss AS 7.1.1.Final “Brontes” stopped in 2ms

    • Paulo, veja que a versão do JBoss que você está usando é diferente da versão do JBoss utilizada no post.

      A mensagem de erro diz: Jndi name have to start with java:/ or java:jboss/”

      Basta alterar o modo como você está declarando o datasource.

      Até mais.

  83. Hebert, uma duvida…
    A minha app executou tranquilamente, porém ao gerar as tabelas, observei que não veio nenhum dado na tabela de usuário(users), então inclui um registro manualmente para poder ter acesso a app, só que ela não reconhece o UserName nem o Password que eu inseri na tabela de users. Alguma sugestão ?

    —————————————————————–

    Resolvi ! faltava configurar o datasource no jboss.

    • Carlos, bom dia.

      Fico feliz que você conseguiu resolver. Vou deixar sua pergunta/reposta aqui para ajudar outros.

      Até mais. [=

  84. tive o seguinte erro:

    ERROR [org.jboss.security.authentication.JBossCachedAuthenticationManager] (http–0.0.0.0-8080-1) Login failure: javax.security.auth.login.LoginException: Query failed
    at org.jboss.security.auth.spi.DatabaseServerLoginModule.getUsersPassword(DatabaseServerLoginModule.java:201) [picketbox-4.0.1.jar:4.0.1]
    at org.jboss.security.auth.spi.UsernamePasswordLoginModule.login(UsernamePasswordLoginModule.java:245) [picketbox-4.0.1.jar:4.0.1]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [:1.7.0_19]
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) [:1.7.0_19]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [:1.7.0_19]
    at java.lang.reflect.Method.invoke(Method.java:601) [:1.7.0_19]
    at javax.security.auth.login.LoginContext.invoke(LoginContext.java:784) [:1.7.0_19]
    at javax.security.auth.login.LoginContext.access$000(LoginContext.java:203) [:1.7.0_19]
    at javax.security.auth.login.LoginContext$4.run(LoginContext.java:698) [:1.7.0_19]
    at javax.security.auth.login.LoginContext$4.run(LoginContext.java:696) [:1.7.0_19]
    at java.security.AccessController.doPrivileged(Native Method) [:1.7.0_19]
    at javax.security.auth.login.LoginContext.invokePriv(LoginContext.java:695) [:1.7.0_19]
    at javax.security.auth.login.LoginContext.login(LoginContext.java:594) [:1.7.0_19]
    at org.jboss.security.authentication.JBossCachedAuthenticationManager.defaultLogin(JBossCachedAuthenticationManager.java:411) [picketbox-infinispan-4.0.1.jar:4.0.1]
    at org.jboss.security.authentication.JBossCachedAuthenticationManager.authenticate(JBossCachedAuthenticationManager.java:345) [picketbox-infinispan-4.0.1.jar:4.0.1]
    at org.jboss.security.authentication.JBossCachedAuthenticationManager.isValid(JBossCachedAuthenticationManager.java:154) [picketbox-infinispan-4.0.1.jar:4.0.1]
    at org.jboss.as.web.security.JBossWebRealm.authenticate(JBossWebRealm.java:127) [jboss-as-web-7.0.2.Final.jar:7.0.2.Final]
    at org.apache.catalina.authenticator.FormAuthenticator.authenticate(FormAuthenticator.java:280) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:372) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
    at org.jboss.as.web.NamingValve.invoke(NamingValve.java:57) [jboss-as-web-7.0.2.Final.jar:7.0.2.Final]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:154) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:362) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:667) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:952) [jbossweb-7.0.1.Final.jar:7.0.2.Final]
    at java.lang.Thread.run(Thread.java:722) [:1.7.0_19]
    Caused by: org.postgresql.util.PSQLException: ERRO: relação “users” não existe
    Posição: 22
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2157)
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1886)
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:255)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:555)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:417)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:302)
    at org.jboss.jca.adapters.jdbc.WrappedPreparedStatement.executeQuery(WrappedPreparedStatement.java:462)
    at org.jboss.security.auth.spi.DatabaseServerLoginModule.getUsersPassword(DatabaseServerLoginModule.java:180) [picketbox-4.0.1.jar:4.0.1]
    … 27 more

    • Olá, tudo bem?

      Verifique a query utilizada configurada para ser utilizada com o JAAS.

      Parece que o erro está nela.

      Até mais.

  85. Olá, segui seu tutorial ajustando ele a um projeto próprio (academia). Tenho então 3 entidades Usuario, Professor e Vaga. Não há nada de extravagante nelas, só dados simples. Meu problema é que quando fui tentar adicionar jaas ao projeto, consegui startar o mesmo uma vez, dps disso estou recebendo o seguinte erro ao startar o JBoss. Dizendo q nao é possivel achar os façades no MB. Alguma ideia?

    01:45:57,573 ERROR [org.jboss.as] (MSC service thread 1-13) JBoss AS 7.0.2.Final “Arc” started (with errors) in 2788ms – Started 181 of 258 services (16 services failed or missing dependencies, 61 services are passive or on-demand)
    01:45:57,775 INFO [org.jboss.as.server.controller] (DeploymentScanner-threads – 2) Deployment of “academiaEAR.ear” was rolled back with failure message {“Services with missing/unavailable dependencies” => [“jboss.naming.context.java.module.academiaEAR.academiaJSF.env.”br.com.academia.mb.TurmaMB”.turmaFacade missing [ jboss.naming.context.java.module.academiaEAR.academiaJSF.env.TurmaFacadeImpl ]”,”jboss.naming.context.java.module.academiaEAR.academiaJSF.env.”br.com.academia.mb.VagaMB”.vagaFacade missing [ jboss.naming.context.java.module.academiaEAR.academiaJSF.env.VagaFacadeImpl ]”,”jboss.naming.context.java.module.academiaEAR.academiaJSF.env.”br.com.academia.mb.UsuarioMB”.usuarioFacade missing [ jboss.naming.context.java.module.academiaEAR.academiaJSF.env.UsuarioFacadeImpl ]”]}
    01:45:57,782 INFO [org.jboss.jpa] (MSC service thread 1-7) stopping Persistence Unit Service ‘academiaEAR.ear/academiaEJB.jar#academia’
    01:45:57,789 INFO [org.jboss.as.server.deployment] (MSC service thread 1-14) Stopped deployment academiaJSF.war in 14ms
    01:45:57,789 INFO [org.jboss.as.server.deployment] (MSC service thread 1-11) Stopped deployment academiaEJB.jar in 14ms
    01:45:57,790 INFO [org.jboss.as.server.deployment] (MSC service thread 1-10) Stopped deployment academiaEAR.ear in 15ms
    01:45:57,791 ERROR [org.jboss.as.deployment] (DeploymentScanner-threads – 1) {“Composite operation failed and was rolled back. Steps that failed:” => {“Operation step-2″ => {“Services with missing/unavailable dependencies” => [“jboss.naming.context.java.module.academiaEAR.academiaJSF.env.”br.com.academia.mb.TurmaMB”.turmaFacade missing [ jboss.naming.context.java.module.academiaEAR.academiaJSF.env.TurmaFacadeImpl ]”,”jboss.naming.context.java.module.academiaEAR.academiaJSF.env.”br.com.academia.mb.VagaMB”.vagaFacade missing [ jboss.naming.context.java.module.academiaEAR.academiaJSF.env.VagaFacadeImpl ]”,”jboss.naming.context.java.module.academiaEAR.academiaJSF.env.”br.com.academia.mb.UsuarioMB”.usuarioFacade missing [ jboss.naming.context.java.module.academiaEAR.academiaJSF.env.UsuarioFacadeImpl ]”]}}}

    • Olá, boa tarde.

      Olhando por alto assim fica difícil de dizer.

      Eu chutaria que a classe não está sendo empacotada.

      Qualquer coisa, poste no guj seus códigos que o pessoal lá ajuda melhor.

      Aqui fica difícil de analisar código.

      Até mais.

    • Olá, tudo bem?

      Houve uma alteração no código de delete, e o código correto é:
      dogDAO.delete(dog);
      Desculpe pelo incômodo.

      Obrigado pela visita e pela observação.

    • Marcos, boa tarde.

      Fico feliz por saber que funcionou de primeira!

      Eu fico com raiva quando testo algo que não funciona. -_-”

      Valeu pelo apoio.

      Até mais.

  86. Hebert tudo bem? Se eu quiser utilizar o RESOURCE_LOCAL ao inves de JTA, pois eu quero tratar minhas transações, ate ai tudo bem, faco EM.beginTrasaction, porem se o meu hibernate da alguma Exception como ConstraintException ele ta marcando minha transação inteira como rollback sendo que nao precisa, pois eu esperava essa exception e tratei ela, existe alguma coisa que tenho q fazer para isso?

    • Felipe, boa tarde.

      O jeito que vejo seria realizar essa tarefa em uma transação separada.

      Desculpe não poder ajudar mais.

      Até mais. [=

  87. Olá Hebert, tudo bem? Copie todo o seu código para testar e deu o seguinte erro abaixo: Você poderia me dizer do que se trata? Desde já agradeço.

    01:22:59,070 SEVERE [javax.enterprise.resource.webcontainer.jsf.application] (http-localhost-127.0.0.1-8080-3) Error Rendering View[//pages/protected/user/listAllDogs.xhtml]: javax.el.ELException: /pages/protected/user/listAllDogs.xhtml: java.lang.NullPointerException
    at com.sun.faces.facelets.compiler.TextInstruction.write(TextInstruction.java:88) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at com.sun.faces.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:82) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at com.sun.faces.facelets.compiler.UILeaf.encodeAll(UILeaf.java:183) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at javax.faces.render.Renderer.encodeChildren(Renderer.java:168) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1757) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.10.Final.jar:]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.10.Final.jar:]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.10.Final.jar:]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.10.Final.jar:]
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:397) [jbossweb-7.0.10.Final.jar:]
    at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.1.0.Final.jar:7.1.0.Final]
    at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:154) [jboss-as-web-7.1.0.Final.jar:7.1.0.Final]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.10.Final.jar:]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.10.Final.jar:]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.10.Final.jar:]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.10.Final.jar:]
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.10.Final.jar:]
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.10.Final.jar:]
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.10.Final.jar:]
    at java.lang.Thread.run(Unknown Source) [rt.jar:1.7.0_17]
    Caused by: java.lang.NullPointerException
    at com.mb.UserMB.getUser(UserMB.java:24) [classes:]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_17]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_17]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_17]
    at java.lang.reflect.Method.invoke(Unknown Source) [rt.jar:1.7.0_17]
    at javax.el.BeanELResolver.getValue(BeanELResolver.java:302) [jboss-el-api_2.2_spec-1.0.0.Final.jar:1.0.0.Final]
    at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at org.apache.el.parser.AstValue.getValue(AstValue.java:169) [jbossweb-7.0.10.Final.jar:]
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189) [jbossweb-7.0.10.Final.jar:]
    at com.sun.faces.facelets.el.ELText$ELTextVariable.writeText(ELText.java:227) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at com.sun.faces.facelets.el.ELText$ELTextComposite.writeText(ELText.java:150) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at com.sun.faces.facelets.compiler.TextInstruction.write(TextInstruction.java:85) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    … 28 more

    01:22:59,128 ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[default-host].[/CrudJSF].[Faces Servlet]] (http-localhost-127.0.0.1-8080-3) Servlet.service() for servlet Faces Servlet threw exception: java.lang.NullPointerException
    at com.mb.UserMB.getUser(UserMB.java:24) [classes:]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.7.0_17]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_17]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.7.0_17]
    at java.lang.reflect.Method.invoke(Unknown Source) [rt.jar:1.7.0_17]
    at javax.el.BeanELResolver.getValue(BeanELResolver.java:302) [jboss-el-api_2.2_spec-1.0.0.Final.jar:1.0.0.Final]
    at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at org.apache.el.parser.AstValue.getValue(AstValue.java:169) [jbossweb-7.0.10.Final.jar:]
    at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:189) [jbossweb-7.0.10.Final.jar:]
    at com.sun.faces.facelets.el.ELText$ELTextVariable.writeText(ELText.java:227) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at com.sun.faces.facelets.el.ELText$ELTextComposite.writeText(ELText.java:150) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at com.sun.faces.facelets.compiler.TextInstruction.write(TextInstruction.java:85) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at com.sun.faces.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:82) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at com.sun.faces.facelets.compiler.UILeaf.encodeAll(UILeaf.java:183) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at javax.faces.render.Renderer.encodeChildren(Renderer.java:168) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
    at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1757) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
    at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
    at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:402) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) [jsf-impl-2.1.5-jbossorg-1.jar:2.1.5-SNAPSHOT]
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594) [jboss-jsf-api_2.1_spec-2.0.0.Final.jar:2.0.0.Final]
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:329) [jbossweb-7.0.10.Final.jar:]
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:248) [jbossweb-7.0.10.Final.jar:]
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:275) [jbossweb-7.0.10.Final.jar:]
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:161) [jbossweb-7.0.10.Final.jar:]
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:397) [jbossweb-7.0.10.Final.jar:]
    at org.jboss.as.jpa.interceptor.WebNonTxEmCloserValve.invoke(WebNonTxEmCloserValve.java:50) [jboss-as-jpa-7.1.0.Final.jar:7.1.0.Final]
    at org.jboss.as.web.security.SecurityContextAssociationValve.invoke(SecurityContextAssociationValve.java:154) [jboss-as-web-7.1.0.Final.jar:7.1.0.Final]
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:155) [jbossweb-7.0.10.Final.jar:]
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) [jbossweb-7.0.10.Final.jar:]
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) [jbossweb-7.0.10.Final.jar:]
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:368) [jbossweb-7.0.10.Final.jar:]
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:877) [jbossweb-7.0.10.Final.jar:]
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:671) [jbossweb-7.0.10.Final.jar:]
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:930) [jbossweb-7.0.10.Final.jar:]
    at java.lang.Thread.run(Unknown Source) [rt.jar:1.7.0_17]

    • Gilberto, boa tarde.

      Não sei te falar apenas olhando o erro.

      A exception aponta algum atributo não inicializado:
      Caused by: java.lang.NullPointerException
      at com.mb.UserMB.getUser(UserMB.java:24) [classes:]

      Obrigado pela visita.

  88. Olá Hebert, muito legal o post!

    Na hora de iniciar o jboss está dando este erro abaixo, você imagina o que poderia ser?
    Obrigado!

    16:03:11,189 INFO [org.jboss.modules] JBoss Modules version 1.0.2.GA
    16:03:11,417 INFO [org.jboss.msc] JBoss MSC version 1.0.1.GA
    16:03:11,454 INFO [org.jboss.as] JBoss AS 7.0.2.Final “Arc” starting
    16:03:11,854 ERROR [stderr] Exception in thread “Controller Boot Thread” java.lang.RuntimeException: org.jboss.as.controller.persistence.ConfigurationPersistenceException: Failed to parse configuration

    16:03:11,854 ERROR [stderr] at org.jboss.as.controller.AbstractControllerService$1.run(AbstractControllerService.java:89)

    16:03:11,854 ERROR [stderr] at java.lang.Thread.run(Thread.java:662)

    16:03:11,855 ERROR [stderr] Caused by: org.jboss.as.controller.persistence.ConfigurationPersistenceException: Failed to parse configuration

    16:03:11,855 ERROR [stderr] at org.jboss.as.controller.persistence.XmlConfigurationPersister.load(XmlConfigurationPersister.java:115)

    16:03:11,855 ERROR [stderr] at org.jboss.as.controller.AbstractControllerService.boot(AbstractControllerService.java:104)

    16:03:11,855 ERROR [stderr] at org.jboss.as.server.ServerService.boot(ServerService.java:195)

    16:03:11,856 ERROR [stderr] at org.jboss.as.controller.AbstractControllerService$1.run(AbstractControllerService.java:83)

    16:03:11,856 ERROR [stderr] … 1 more

    16:03:11,856 ERROR [stderr] Caused by: javax.xml.stream.XMLStreamException: org.jboss.jca.common.metadata.ParserException: IJ010061: Unexpected element: datasources

    16:03:11,856 ERROR [stderr] at org.jboss.as.connector.subsystems.datasources.DataSourcesExtension$NewDataSourceSubsystemParser.readElement(DataSourcesExtension.java:708)

    16:03:11,856 ERROR [stderr] at org.jboss.as.connector.subsystems.datasources.DataSourcesExtension$NewDataSourceSubsystemParser.readElement(DataSourcesExtension.java:277)

    16:03:11,856 ERROR [stderr] at org.jboss.staxmapper.XMLMapperImpl.processNested(XMLMapperImpl.java:100)

    16:03:11,857 ERROR [stderr] at org.jboss.staxmapper.XMLExtendedStreamReaderImpl.handleAny(XMLExtendedStreamReaderImpl.java:69)

    16:03:11,857 ERROR [stderr] at org.jboss.as.controller.parsing.StandaloneXml.parseServerProfile(StandaloneXml.java:311)

    16:03:11,857 ERROR [stderr] at org.jboss.as.controller.parsing.StandaloneXml.readServerElement(StandaloneXml.java:163)

    16:03:11,857 ERROR [stderr] at org.jboss.as.controller.parsing.StandaloneXml.readElement(StandaloneXml.java:91)

    16:03:11,858 ERROR [stderr] at org.jboss.as.controller.parsing.StandaloneXml.readElement(StandaloneXml.java:79)

    16:03:11,858 ERROR [stderr] at org.jboss.staxmapper.XMLMapperImpl.processNested(XMLMapperImpl.java:100)

    16:03:11,858 ERROR [stderr] at org.jboss.staxmapper.XMLMapperImpl.parseDocument(XMLMapperImpl.java:59)

    16:03:11,858 ERROR [stderr] at org.jboss.as.controller.persistence.XmlConfigurationPersister.load(XmlConfigurationPersister.java:107)

    16:03:11,858 ERROR [stderr] … 4 more

    16:03:11,859 ERROR [stderr] Caused by: org.jboss.jca.common.metadata.ParserException: IJ010061: Unexpected element: datasources

    16:03:11,859 ERROR [stderr] at org.jboss.jca.common.metadata.ds.DsParser.parseDataSources(DsParser.java:182)

    16:03:11,859 ERROR [stderr] at org.jboss.jca.common.metadata.ds.DsParser.parse(DsParser.java:118)

    16:03:11,859 ERROR [stderr] at org.jboss.as.connector.subsystems.datasources.DataSourcesExtension$NewDataSourceSubsystemParser.readElement(DataSourcesExtension.java:700)

    16:03:11,860 ERROR [stderr] … 14 more

    • Wesley, boa note.

      Parece que houve algum erro com seu arquivo de configurações: ParserException: IJ010061: Unexpected element: datasources

      Verifique novamente seu xml se está tudo correto.

      Obrigado pela visita.

    • Bruno, boa noite.

      Eu testei aqui e as imagens apareceram sem problemas.

      Verifique se não é o cache do seu browser.

      Obrigado pela visita.

  89. Hebert, estou com um problema aqui, tem como ajudar? Ta dando esse erro, até agora nao conseguir resolver

    JBAS014775: New missing/unsatisfied dependencies:
    service jboss.naming.context.java.jboss.datasources.MysqlDS (missing) dependents: [service jboss.persistenceunit.”crudEJB.jar#CrudPU”]

    ERROR [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads – 1) {“JBAS014653: Composite operation failed and was rolled back. Steps that failed:” => {“Operation step-2″ => {“JBAS014771: Services with missing/unavailable dependencies” => [“jboss.persistenceunit.”crudEJB.jar#CrudPU”jboss.naming.context.java.jboss.datasources.MysqlDSMissing[jboss.persistenceunit.”crudEJB.jar#CrudPU”jboss.naming.context.java.jboss.datasources.MysqlDS]”]}}}

  90. Boa tarde Hebert…
    Parabens pelo tutorial, foi o mais bem explicado de todos que olhei na net.(e olhe que olhei muitos)
    E tb solucionou meu problema de conexao com o DB.
    So uma coisa, no codigo que é pra ser alterado(standalone.xml) consta um erro que o jboss acusa ao tentar startalo.
    o “jndi-name=”CrudDS” nao teria que ser o “jndi-name=”java:/CrudDS”?
    apos corrigir isso startei d boa.
    Continue com o blog e os posts pq ajudam bastante.

    • Francisco, boa tarde.

      Se você reparar o post foi construído com JBoss 7.0 e provavelmente você está utilizando uma outra versão que exige essa nomeclatura de jndi para datasource.

      Obrigado pela visita e pelo apoio. [=

      Att,

      • Estou utilizando a 7.1.1…
        Quero te perguntar sobre o livro Core Java Server Faces 3 edição, vc ja leu ele, o que achou e se vc o usou no seu livro tb?
        Ja li seu mini livro do blog e é de muito bom entendimento.
        O JSF Eficaz aborda o que e mais usado hj nas fabricas de software?

        • Olá Francisco, boa tarde.

          Já li sim, é muito bom. Eu já havia lido a muito tempo antes de escrever o JSF Eficaz, mas eu aprendi muito com ele na época.

          JSF Eficaz é mais voltado para mercado de trabalho falando de práticas e dicas. A diferença dele para outro livro é que ele não aborda uma aplicação Hello World, mas já começa falando de como deve ser o correto funcionamento e implementação das funções e método.

          Obrigado pela visita.

  91. Olá,

    adoro seu blog. Sempre me ajuda muito. Utilizo Seu tutorial para JAAS em diversas aplicações, porém necessito que o login no JAAS seja feito através de 3 parametros (login, senha e codigo). Não consegui encontrar nada sobre essa customização para o JBoss. Você tem alguma ideia ou caminho para me mostrar? Obrigada.

    • Camila, bom dia.

      Nesse caso você teria que criar seu próprio módulos do JAAS.

      Infelizmente não tenho nada sobre esse assunto para te indicar, você teria que pesquisar no google algo voltado para seu servidor como: Create JAAS module tomcat

      Até mais.

  92. Só uma curiosidade:
    Na classe User, há uma @NamedQuery, e um constante com o nome dela.
    Posso/Devo colocar a constante como name da @NamedQuery?


    @NamedQuery(name=User.FIND_BY_EMAIL, query=”select u from User u where u.email = :email”)
    public class User {

    public static final String FIND_BY_EMAIL = “User.findUserByEmail”;

    • Fernando, boa tarde.

      Você poderia fazer @NamedQuery(name=”User.findUserByEmail”, query=”select u from User u where u.email = :email”).

      Você não é obrigado a colocar, apenas é uma boa prática. [=

      Foi isso que você perguntou?

      Obrigado pela visita.

        • Fernando, boa tarde.

          Agora eu entendi o que você quis dizer.

          Coloque sim, inclusive nos posts mais novos tem sido uma prática que tenho utilizado. [=

          Até mais.

  93. Você poderia explicar melhor sobre a criação do modulo? Não consigo fazer aqui no projeto!!! sou iniciante….

    • Ítalo, boa tarde.

      Infelizmente não tenho como te ajudar isso agora. Precisaria mandar telas e mais coisas e agora não tenho tempo disponível para isso.

      Desculpe a demora em responder. Estou muito ocupado nesses últimos dias.

  94. Oi Hebert,

    Parabéns pelo tutorial. Está realmente muito bom. Foi a primeira vez que fiz uma aplicação com JAAS funcionar. :)
    Só um comentário, no tutorial em inglês, na sexta página, vc diz para criar um arquivo “jboss-web.xml” na pasta WEB-INF. Do jeito que está, parece que a pasta deveria estar localizada no CrudEjb e não no CrudJsf. Acho que poderia colocar esta parte após a criação do CrudJsf, para ficar mais didático. É só uma sugestão.
    Parabéns novamente, o artigo é excelente.
    Ralph

    • Ralph, boa tarde.

      Obrigado pelo apoio e pela dica.

      Eu alterei lá indicando para criar o arquivo dentro do CrudJSF, mas infelizmente não tenho como mudar de local agora.

      Concordo com você que lá na parte web ficaria mais didático, mas falta tempo para editar um post complexo como esse. [=

      Desculpe a demora em responder. Estou muito ocupado nesses últimos dias.

  95. Hebert,

    ótimo post! Aliás, seus posts são de grande valia para a comunidade.
    Espero e torço para que você continue e cresça.

    Uma dúvida, se os nossos facades vão chamar os métodos do crud, podemos criar um facade genérico para abrigar estes métodos, não?

    Ex: A classe UserFacadeImp estende de GenericFacade e implementa UserFacade.

    ps: posso estar falando uma grande merda… rsrs…

    • Rafael, boa tarde.

      Você poderia sim. Apenas tome cuidado para a complexidade do sistema aumentar muito e com isso piorar a manutenção das classes.

      Obrigado pela visita.

    • Olá
      sou leigo no entanto baixei o arquivo baixei e instalei o JBoss Tools e depois o JBoss 7,porem não roda nada. que pode ser de errado?

      • Merces, boa tarde.

        Se você é leigo o melhor é começar pelo básico.

        Esse post é muito avançado para quem está começando.

        Te aconselho ler o livro Use a Cabeça: Servlet e JSP.

        Obrigado pela visita.

  96. Primeiramente, parabéns pelo post Hébert,

    Pela qualidade do material já que os livros da casa do códigos devem ser muito bons.

    Vamos a minha dúvida:

    Referente a edição (no meu caso é visualização) de um objeto listado em um datatable utilizando o scope request no MB.
    Estou utilizando JSF 2.0 com richfaces 4.1 e nesse caso não funcionou a dica do inputHidden passando o id do objeto, mas modifiquei o scope do meu MB para viewScoped e foi. O problema é que quando clico em visualizar ele até passa o objeto para o MB populado, mas ao retorna para a tela de visualização (que é outro xhtml) ele cria novamente o MB que cria novamente esse objeto. Você sabe me dizer o que estou errando?
    Obs.: Não estou utilizando CDI

    Desde já obrigado.

    • Maikel, boa tarde.

      Esse é o comportamento esperado de um view scoped. Ao sair da página ele criará um novo managed bean.

      Esse post explica melhor sobre os escopos: http://uaihebert.com/?p=1596

      Creio que o melhor para você seria utilizar CDI com o conversation scoped, caso você precise navegar entre telas.

      Obrigado pela visita.

    • Alan, boa tarde.

      Eu ainda pretendo lançar um projeto com EJB 3.2 utilizando os DAO como @Singleton.

      Esse eu farei com Maven. Espero conseguir até o final do ano.

      Obrigado pela visita.

  97. Como fica a divisão do EJB / JSF ? ?

    No EJB so fica as persistencias e as suas regras ???

    Caso eu queira fazer um envio de email , onde eu coloco ???

    Obrigado !

    E funcionou bonito :D

    • Marcos, boa tarde.

      Eu colocaria todas as regras de negócio na parte do EJB, isso inclui a persistência também. Caso depois você queira trocar sua VIEW você manterá suas regras de negócio intactas.

      Pode colocar no EJB e ainda criar uma fila JMS onde você enfileiraria todo o envio de emails caso fosse muitos emails. 8)

      Obrigado pela visita e pelo apoio.

    • Marcos, boa tarde.

      Nesse caso basta você olhar no seu servidor como faz. Cada servidor tem uma abordagem diferente.

      Honestamente não aconselho a salvar como MD5, não é segundo. Procure por SHA-256 juntamente com seu servidor.

      Essa configuração fica diretamente no XML.

      Obrigado pela visita, e desculpe a demora em responder. Estive muito ocupado nesse último mes.

    • Ricardo, boa tarde.

      Obrigado pela visita e pelo apoio. Desculpe a demora em responder. Estive muito ocupado nesse último mes.

  98. Muito excelente o post

    Pergunta:

    Ao invés de fazer vários DAOS eu posso estar fazendo um DAO genérico para todos os domínios?

    eu utilizo um daoImpl e um dao genérico pra fazer tudo não existe ex: “pessoaDAO, CachorroDAO” exite só o GENERIC DAO IMPLEMENTANDO DAOIMPL.

    e uma boa pratica?

    • Paulo, boa tarde.

      É uma prática sim, pode utilizar a vontade. [=

      Obrigado pela visita, e desculpe a demora em responder. Estive muito ocupado nesse último mes.

      • Obrigado pela resposta.

        Só mais uma coisa, estou em projeto que esta usando jsf 1.2 com richfaces e o escopo esta como request quando eu quero manter um objeto entre as requisições estou usando savestate do tomahawk.

        posso usar savestate sem problemas ou não e uma boa pratica?

    • Boa tarde Paulo!

      A vantagem em se utilizar DAOs separados em relação a um único DAO genérico está na utilização de métodos específicos para uma única entidade.

      Por exemplo, digamos que você crie um método autenticar(Usuario usuario) que realize uma consulta no banco de dados e indique se o usuário informado existe. Se esse método for criado no seu DAO genérico, quando estiver utilizando o DAO para a entidade compras por exemplo, existirá esse método exposto, porém sem aplicação para esse caso. Se você tivesse um UsuarioDAO por exemplo e criasse o método nessa classe, apenas para essa entidade o mesmo estaria disponível.

      Abraço!

      • Mas neste caso eu tenho um service exatamente para este tipo de problema cada classe tem um service que posso utilizar para queryes especificas como essa que vc me deu exemplo.
        Deixando assim meu dao Generico comum para todas as classes.

        Valeu pela dica…

  99. Bom dia,
    no JAAS como eu posso criptografar a senha ? terei que mexer no standalone.xml ? pois desse método ela fica visível no banco.

    Obrigado,
    Isaias.

    • Isaias, boa noite.

      No momento não tenho aqui, mas você pode configurar no xml para ser utilizado SHA. No google vc acha facilmente.

      OBS.: Não utilize MD5 pois é facilmente quebrado.

      Obrigado pela visita.

      • Boa noite,

        obrigado da resposta anterior do JAAS criptografado :) .

        Eu precisaria de uma outra ajuda :

        *quando entro numa listagem. faço a busca e tudo na sessão (eu uso RequestScope)… mas quando abro outra aba do navegador ele carrega os mesmos dados. Estou usando primefaces.
        Teria que ter alguma ID no session.setAttribute() ?

        Você sabe como eu posso resolver isso ?

        Obrigado,
        Isaias.

        • Isaias, bom dia.

          Se você coloca tudo em sessão, no tem o que fazer. Os dados serão sempre os mesmos para o mesmo usuário.

          Se você quer exibir dados diferentes por aba você deve utilizar de ViewScoped ou RequestScoped.

          Esse post explica sobre os escopos do JSF: uaihebert.com/?p=1596

          Obrigado pela visita

    • Hebert, parabens pelo seu Blog e livros você tem na Casa do Código.

      Mas na TAG jndi-name=”CrudDS” do standalone.xml, no meu caso tive que colocar jndi-name=”java:/CrudDS”, senão o Jboss não da o deploy.

  100. uaihebert, boa tarde

    eu posso criar apenas 1 projeto para trabalhar com ejb?

    Quero dizer ao invés de trabalhar com 3 colocar tudo em apenas 1 projeto.

  101. Estou com este problema
    Target Unreachable, identifier não esta achando os meus beans o que pode ser?

    Segui o tutorial passo a passo.

    • Paulo, bom dia.

      Pode ser algum erro na hora do deploy.

      Baixe o código fonte encontrado aqui e verifique se está tudo igual.

      Obrigado pela visita.

  102. É o que eu procurava, desde já parabens cara vc fez um belo trabalho, tenho que fazer um sistema web pra universidade e esse seu post vai me dar um empurrão e tanto. Incrivel…

  103. Boa tarde.

    Segui todos os passos do tutorial, mas na hora adicionar o projeto EJB ao JBoss e criar as tabelas, elas não são criadas. O que pode estar errado?

    AÇÕES [org.jboss.modules] JBoss Modules version 1.0.2.GA
    13:37:50,415 INFO [org.jboss.msc] JBoss MSC version 1.0.1.GA
    13:37:50,482 INFO [org.jboss.as] JBoss AS 7.0.2.Final “Arc” starting
    13:37:51,647 WARN [org.jboss.as] No security realm defined for native management service, all access will be unrestricted.
    13:37:51,658 INFO [org.jboss.as] creating http management service using network interface (management) port (9990)
    13:37:51,660 WARN [org.jboss.as] No security realm defined for http management service, all access will be unrestricted.
    13:37:51,673 INFO [org.jboss.as.logging] Removing bootstrap log handlers
    13:37:51,699 INFO [org.jboss.as.connector.subsystems.datasources] (Controller Boot Thread) Deploying non-JDBC-compliant driver class org.postgresql.Driver (version 9.1)
    13:37:51,719 INFO [org.jboss.as.connector.subsystems.datasources] (Controller Boot Thread) Deploying JDBC-compliant driver class org.h2.Driver (version 1.2)
    13:37:51,738 INFO [org.jboss.as.clustering.infinispan.subsystem] (Controller Boot Thread) Activating Infinispan subsystem.
    13:37:51,875 INFO [org.jboss.as.naming] (Controller Boot Thread) JBAS011800: Activating Naming Subsystem
    13:37:51,895 INFO [org.jboss.as.naming] (MSC service thread 1-6) JBAS011802: Starting Naming Service
    13:37:51,904 INFO [org.jboss.as.osgi] (Controller Boot Thread) JBAS011910: Activating OSGi Subsystem
    13:37:51,953 INFO [org.jboss.as.security] (Controller Boot Thread) Activating Security Subsystem
    13:37:51,961 INFO [org.jboss.remoting] (MSC service thread 1-3) JBoss Remoting version 3.2.0.Beta2
    13:37:51,990 INFO [org.xnio] (MSC service thread 1-3) XNIO Version 3.0.0.Beta3
    13:37:52,009 INFO [org.xnio.nio] (MSC service thread 1-3) XNIO NIO Implementation Version 3.0.0.Beta3
    13:37:52,398 INFO [org.apache.catalina.core.AprLifecycleListener] (MSC service thread 1-2) The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:Program FilesJavajre8bin;C:WINDOWSSunJavabin;C:WINDOWSsystem32;C:WINDOWS;native;C:WINDOWSsystem32;C:WINDOWS;C:WINDOWSSystem32Wbem;C:WINDOWSSystem32WindowsPowerShellv1.0;C:Program Files (x86)Javajre7bin;C:Program FilesJavajdk1.8.0_05bin;.
    13:37:52,409 INFO [org.jboss.as.ee] (Controller Boot Thread) Activating EE subsystem
    13:37:52,455 INFO [org.jboss.as.remoting] (MSC service thread 1-5) Listening on /127.0.0.1:9999
    13:37:52,491 INFO [org.jboss.as.jmx.JMXConnectorService] (MSC service thread 1-6) Starting remote JMX connector
    13:37:52,541 INFO [org.apache.coyote.http11.Http11Protocol] (MSC service thread 1-5) Starting Coyote HTTP/1.1 on http-localhost-127.0.0.1-8080
    13:37:52,689 INFO [org.jboss.as.connector] (MSC service thread 1-5) Starting JCA Subsystem (JBoss IronJacamar 1.0.3.Final)
    13:37:52,753 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-5) Bound data source
    13:37:52,773 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-1) Bound data source
    13:37:53,122 INFO [org.jboss.as.deployment] (MSC service thread 1-1) Started FileSystemDeploymentService for directory C:UserssigDesktopNova pastajboss-as-7.0.2.Finalstandalonedeployments
    13:37:53,170 INFO [org.jboss.as.deployment] (DeploymentScanner-threads – 1) Found CrudEJB.jar in deployment directory. To trigger deployment create a file called CrudEJB.jar.dodeploy
    13:37:53,197 INFO [org.jboss.as.server.deployment] (MSC service thread 1-8) Starting deployment of “CrudEJB.jar”
    13:37:53,264 INFO [org.jboss.as.jpa] (MSC service thread 1-2) added javax.persistence.api dependency to CrudEJB.jar
    13:37:53,297 INFO [org.jboss.as] (MSC service thread 1-6) JBoss AS 7.0.2.Final “Arc” started in 3821ms – Started 114 of 171 services (57 services are passive or on-demand)
    13:37:53,343 INFO [org.jboss.as.server.controller] (DeploymentScanner-threads – 2) Deployed “CrudEJB.jar”

    Obrigada

  104. Opa, muito legal essa aplicação.Estou aprendendo bastante com seu site, obrigado, gostaria de saber se toda vez que modificar algum arquivo em algum dos projetos (jsf e ejb) tenho que unificar tudo de novo, ou existe uma forma mais simples ? desculpe se a mesma pergunta já foi feita,mas como tem muitos comentários fica difícil de achar.

    • Allan, boa noite.

      Do modo como foi feito o projeto de exemplo aqui, sim é necessário.

      Você pode procurar por plugins que fazem com que esse processo fique automatizado.

      Trabalhei com eles a muitos anos, e infelizmente não me lembro do nome. =/

      Obrigado pela visita.

  105. Qual a diferença em fazer um projeto assim e fazer um ejb dentro de um Dynamic , fazendo apenas um WAR.

    Qual a diferença entre um WAR apenas e dividir os modulos em EJB + WAR + EAR ?

    • Marcos, boa noite.

      EAR é utilizando quando você quer empacotar 2 ou mais projetos dentro de um artefato só.

      Antes da versão 3.1 o EJB era obrigado a estrar em um JAR e anexado a um EAR caso você quisesse utilizar um EJB Local.

      Obrigado pela visita.

    • Ilton, bom dia.

      Esse erro por ser algum problema que deu na hora de editar o standAlone.xml. Talvez alguma tag que não foi finalizada.

      Infelizmente não tenho uma dica que seja específica do seu problema

      Obrigado pela visita.

  106. Boa noite!
    Antes de mais nada Parabéns pelo site….
    Minha dúvida é a seguinte, o servidor esta subindo normal aparentemente nenhum erro esta dando, mas quando executo o http://localhost:8080/CrudJSF/ a páginal da o erro HTTP Status 404 – / CrudJSF /. vc sabe onde pode estar o erro? se puder ajudar agradeço.

    • Daniel, boa noite.

      Não sei te falar. Verifique se ao dar start no servidor se já ñ aparece alguma mensagem de erro.

      Obrigado pela visita.

  107. Olá, primeiramente parabéns pelo ótimo trabalho aqui no site!!

    Estou iniciando com EJB e estou com um problema, ficaria grato se puder me ajudar. Dentro do meu EJB eu uso algumas bibliotecas, e puxo elas através do Maven, mas quando eu executo meu projeto (utilizo o JBoss 8 – Wildfly) as bibliotecas não são encontradas (java.lang.ClassNotFoundException). Eu devo colocar as libs dentro do servidor, ou há algum arquivo de configuração para declarar elas, ou pode ser alguma configuração do maven??

    Desde já, muito obrigado!!

    • Thiago, boa tarde.

      Existem alguns casos onde a biblioteca realmente tem que ficar dentro do servidor.

      Verifique se as bibliotecas estão dentro do EAR/WAR gerado. Se estiverem e o erro persistir procure no google algo como: create module jboss SUA_BIBLIOTECA

      Obrigado pela visita.

  108. Boa iniciativa, porém não se deve nunca colocar consulta no get e sets porque os gets e sets são acessados durante todo o ciclo de vida, o que vai acontecer é que o sistema vai consultar no banco 4 ou 5 vezes.

    Isto não é correto.

    public List getAllDogs() {
    return dogFacade.findAll();
    }

    • Welsson, boa tarde.

      Concordo com você. Nos outros projetos que eu criei eu já coloquei com essa alteração.

      Eu pretendo refazer esse projeto com as tecnologias mais novas, aí eu vou aplicar essa correção.

      Obrigado pelo comentário.

  109. Boa tarde,

    Estou com esse problema, ja verifiquei as tags os endereços e o problema persiste não cria as tabelas no banco de dados.

    14:53:41,281 INFO [org.jboss.modules] JBoss Modules version 1.1.1.GA
    14:53:42,059 INFO [org.jboss.msc] JBoss MSC version 1.0.2.GA
    14:53:42,182 INFO [org.jboss.as] JBAS015899: JBoss AS 7.1.1.Final “Brontes” starting
    14:53:43,691 INFO [org.jboss.as.server] JBAS015888: Creating http management service using socket-binding (management-http)
    14:53:43,692 INFO [org.xnio] XNIO Version 3.0.3.GA
    14:53:43,700 INFO [org.xnio.nio] XNIO NIO Implementation Version 3.0.3.GA
    14:53:43,733 INFO [org.jboss.remoting] JBoss Remoting version 3.2.3.GA
    14:53:43,777 INFO [org.jboss.as.logging] JBAS011502: Removing bootstrap log handlers
    14:53:43,780 INFO [org.jboss.as.configadmin] (ServerService Thread Pool — 26) JBAS016200: Activating ConfigAdmin Subsystem
    14:53:43,783 INFO [org.jboss.as.security] (ServerService Thread Pool — 44) JBAS013101: Activating Security Subsystem
    14:53:43,788 INFO [org.jboss.as.naming] (ServerService Thread Pool — 38) JBAS011800: Activating Naming Subsystem
    14:53:43,788 INFO [org.jboss.as.osgi] (ServerService Thread Pool — 39) JBAS011940: Activating OSGi Subsystem
    14:53:43,790 INFO [org.jboss.as.clustering.infinispan] (ServerService Thread Pool — 31) JBAS010280: Activating Infinispan subsystem.
    14:53:43,799 INFO [org.jboss.as.webservices] (ServerService Thread Pool — 48) JBAS015537: Activating WebServices Extension
    14:53:43,819 INFO [org.jboss.as.security] (MSC service thread 1-4) JBAS013100: Current PicketBox version=4.0.7.Final
    14:53:43,835 INFO [org.jboss.as.connector] (MSC service thread 1-8) JBAS010408: Starting JCA Subsystem (JBoss IronJacamar 1.0.9.Final)
    14:53:44,254 INFO [org.jboss.ws.common.management.AbstractServerConfig] (MSC service thread 1-5) JBoss Web Services – Stack CXF Server 4.0.2.GA
    14:53:44,273 INFO [org.jboss.as.connector.subsystems.datasources] (ServerService Thread Pool — 27) JBAS010403: Deploying JDBC-compliant driver class org.h2.Driver (version 1.3)
    14:53:44,454 INFO [org.apache.coyote.http11.Http11Protocol] (MSC service thread 1-3) Starting Coyote HTTP/1.1 on http-localhost-127.0.0.1-8080
    14:53:44,454 INFO [org.jboss.as.naming] (MSC service thread 1-1) JBAS011802: Starting Naming Service
    14:53:44,469 INFO [org.jboss.as.mail.extension] (MSC service thread 1-8) JBAS015400: Bound mail session
    14:53:44,789 INFO [org.jboss.as.server.deployment.scanner] (MSC service thread 1-4) JBAS015012: Started FileSystemDeploymentService for directory C:jboss-as-7.1.1.Finalstandalonedeployments
    14:53:44,794 INFO [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads – 1) JBAS015003: Found CrudEJB.jar in deployment directory. To trigger deployment create a file called CrudEJB.jar.dodeploy
    14:53:44,809 INFO [org.jboss.as.remoting] (MSC service thread 1-8) JBAS017100: Listening on localhost/127.0.0.1:4447
    14:53:44,813 INFO [org.jboss.as.remoting] (MSC service thread 1-6) JBAS017100: Listening on /127.0.0.1:9999
    14:53:44,896 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-8) JBAS010400: Bound data source
    14:53:45,183 INFO [org.jboss.as.controller] (Controller Boot Thread) JBAS014774: Service status report
    JBAS014775: New missing/unsatisfied dependencies:
    service jboss.jdbc-driver.org_postgresql (missing) dependents: [service jboss.data-source.java:jboss/datasources/CrudDS]

    14:53:45,282 INFO [org.jboss.as.server.deployment] (MSC service thread 1-7) JBAS015876: Starting deployment of “CrudEJB.jar”
    14:53:45,495 INFO [org.jboss.as.jpa] (MSC service thread 1-2) JBAS011401: Read persistence.xml for CrudPU
    14:53:45,670 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-4) JNDI bindings for session bean named UserDAO in deployment unit deployment “CrudEJB.jar” are as follows:

    java:global/CrudEJB/UserDAO!com.dao.UserDAO
    java:app/CrudEJB/UserDAO!com.dao.UserDAO
    java:module/UserDAO!com.dao.UserDAO
    java:global/CrudEJB/UserDAO
    java:app/CrudEJB/UserDAO
    java:module/UserDAO

    14:53:45,672 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-4) JNDI bindings for session bean named DogDAO in deployment unit deployment “CrudEJB.jar” are as follows:

    java:global/CrudEJB/DogDAO!com.dao.DogDAO
    java:app/CrudEJB/DogDAO!com.dao.DogDAO
    java:module/DogDAO!com.dao.DogDAO
    java:global/CrudEJB/DogDAO
    java:app/CrudEJB/DogDAO
    java:module/DogDAO

    14:53:45,675 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-4) JNDI bindings for session bean named UserFacedeImple in deployment unit deployment “CrudEJB.jar” are as follows:

    java:global/CrudEJB/UserFacedeImple!com.facedes.UserFacede
    java:app/CrudEJB/UserFacedeImple!com.facedes.UserFacede
    java:module/UserFacedeImple!com.facedes.UserFacede
    java:global/CrudEJB/UserFacedeImple
    java:app/CrudEJB/UserFacedeImple
    java:module/UserFacedeImple

    14:53:45,677 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-4) JNDI bindings for session bean named DogFacedeImple in deployment unit deployment “CrudEJB.jar” are as follows:

    java:global/CrudEJB/DogFacedeImple!com.facedes.DogFacede
    java:app/CrudEJB/DogFacedeImple!com.facedes.DogFacede
    java:module/DogFacedeImple!com.facedes.DogFacede
    java:global/CrudEJB/DogFacedeImple
    java:app/CrudEJB/DogFacedeImple
    java:module/DogFacedeImple

    14:53:46,093 INFO [org.jboss.as] (MSC service thread 1-6) JBAS015951: Admin console listening on http://127.0.0.1:9990
    14:53:46,094 ERROR [org.jboss.as] (MSC service thread 1-6) JBAS015875: JBoss AS 7.1.1.Final “Brontes” started (with errors) in 6476ms – Started 227 of 315 services (10 services failed or missing dependencies, 76 services are passive or on-demand)
    14:53:46,294 INFO [org.jboss.as.server] (DeploymentScanner-threads – 2) JBAS015870: Deploy of deployment “CrudEJB.jar” was rolled back with failure message {“JBAS014771: Services with missing/unavailable dependencies” => [“jboss.persistenceunit.”CrudEJB.jar#CrudPU”jboss.naming.context.java.CrudDSMissing[jboss.persistenceunit.”CrudEJB.jar#CrudPU”jboss.naming.context.java.CrudDS]”]}
    14:53:46,326 INFO [org.jboss.as.server.deployment] (MSC service thread 1-4) JBAS015877: Stopped deployment CrudEJB.jar in 32ms
    14:53:46,328 INFO [org.jboss.as.controller] (DeploymentScanner-threads – 2) JBAS014774: Service status report
    JBAS014775: New missing/unsatisfied dependencies:
    service jboss.naming.context.java.CrudDS (missing) dependents: [service jboss.persistenceunit.”CrudEJB.jar#CrudPU”]

    14:53:46,330 ERROR [org.jboss.as.server.deployment.scanner] (DeploymentScanner-threads – 1) {“JBAS014653: Composite operation failed and was rolled back. Steps that failed:” => {“Operation step-2″ => {“JBAS014771: Services with missing/unavailable dependencies” => [“jboss.persistenceunit.”CrudEJB.jar#CrudPU”jboss.naming.context.java.CrudDSMissing[jboss.persistenceunit.”CrudEJB.jar#CrudPU”jboss.naming.context.java.CrudDS]”]}}}

    Atencisoamente,
    Thaynã Campos.

    • Olá Thaynã, boa tarde.

      Seu erro está emm:

      [“jboss.persistenceunit.”CrudEJB.jar#CrudPU”jboss.naming.context.java.CrudDSMissing[jboss.persistenceunit.”CrudEJB.jar#CrudPU”jboss.naming.context.java.CrudDS]“]}}}

      JBAS014775: New missing/unsatisfied dependencies:
      service jboss.naming.context.java.CrudDS (missing) dependents: [service jboss.persistenceunit.”CrudEJB.jar#CrudPU”]

      Não se esqueça de configurar o datasource.

      Att,

  110. Cara estou seguindo seu tutoria, estou começando, não consegui criar as tabelas.
    Quando vd diz Adicione o projeto EJB ao JBoss, vc quer dizer run on server no projeto ou criar um .war e fazer o deploy, no jboss?

    • Valdejanio, boa tarde.

      Você precisa apenas adicionar o jar ao servidor e dar um run no servidor. Desse modo os EJBs serão inicializados e as tabelas criadas.

      Obrigado pela visita.

  111. Hebert, bom dia!
    Caso eu queira adicionar o PrimeFaces a este projeto, é só adicionar o jar na pasta lib do projeto web, certo?

    • Rafael, boa tarde.

      Honestamente não sei te falar. Faz um bom tempo que não programo para VIEW, estou apenas como backend.

      Eu diria que é melhor seguir os passos que eles descrevem na página deles. [=

      Obrigado pela visita

  112. Estou seguindo o tutorial e fazendo o código exatamente como está no post, quando crio a classe DogDAO, aparecem os erros abaixo, tenho pouca experiencia em java, deve ser algo simples que nao entendi.
    GenericDAO cannot be resolved to a type
    The constructor GenericDAO(Class) is undefined
    The method delete(Object, Class) in the type GenericDAO is not applicable for the arguments (int, Class)

    • André, boa tarde.

      Verifique o código do GenericDAO.

      Você pode baixar o código fonte ao final do post e conferir com seu código criado.

      Obrigado pela visita.

  113. Olá, muito legal as dicas. Como faz para exibir as mensagens de campos obrigatório e usuário que não exista na base de dados.

    Coloquei como mostrar no seu exemplo, porém, não funcionou. Obrigado.

    • Alexandre, boa tarde.

      Caso você tenha seguido o post e algum erro tenha aparecido, baixe o código do projeto e compare com o seu.

      Obrigado pela visita

  114. Hebert, boa tarde!

    Estou com uma dúvida relacionada a EJB mas não necessariamente com o seu post(que alias esta excelente como sempre). Eu acho que comecei na programação muito tarde e ainda sou extremamente cru, tento sempre ler, escrever algum código e etc, mas tenho sempre a impressão que estou à um passo atrás do que é “top” no momento. Então vejo muita gente falando de desenvolvimento com JSF e JPA somente e outros com EJB, afinal, atualmente o que é considerado ideal? Eu sei que bom é aquilo que resolve o seu problema, e que EJB pode ser aplicado em apps pequenas e grandes, mas quando um sistema torna-se complexo o suficiente que justifique realmente o uso do EJB? Não estou questionando o uso e sim quando eu uso, pois eu realmente não tenho esse “feeling”. É um muito mais uma dúvida de análise,

    Parabéns pelo blog, sigo sempre.

    • Flausino, boa noite.

      Isso vai muito dos requisitos. Se for necessário um forte controle de transação e/ou filas eu indicaria o EJB.

      Infelizmente você tem que entender bem o EJB para saber se o requisito se aplica ou não ao EJB, não sei te falar um momento exato ou não.

      Obrigado pela visita e pelo apoio

  115. ola!, estou facendo uma aplicacacao, mas, cuando utilizo tudo, nao implemento o JAAS , somente EJB, JPA, JSF en um projecto Maven. para jBoss 7.1.1 (utilizando o archetype WebApp – 702 – rc1 de jboss.org) ele mostrame um problema ao execute the app EntityManagerFactory cant be build!… eu deixo o codigo no maven project em este link https://mega.co.nz/#!uYAjFaSD!83xr_GrO9wMOAvVhEMyq5kmtCv-GRV_fMRCspcnXleU — o erro … nao entendo xq em a clase GenericDAOLocal e GenericDAO nao faz uso de EntityManagerFactory. as clases sao do persistence, ejbDao, ejbnegocio,… podeme ajudar (nao falo portugues) mas entindo.

    • Olá, tudo bem?

      Infelizmente não tenho como ajudar sem poder olhar o código, pois não sei quais alterações foram feitas em seu código.

      Se você postar seu código em um forum como coderanch ou guj alguém poderá analisar seu código.

      Obrigado pela visita.

  116. Obrigado Hebert, mais uma vez!

    Gostaria de tirar algumas dúvidas se for possível

    Nessas interfaces é necessário anotar todos os métodos que se encontram na implementação ou só é necessário, ou mesmo obrigatório o crud?!

    para fazer uma transação é preciso ter uma interface anotada como @Local e colocar @TransactionAttribute(TransactionAttributeType.REQUIRED) sobre os métodos da interface?

    Desculpa se as pergunta são bobas ou idiotas!

    • Thiago, boa tarde.

      Pergunta boba, é a pergunta não perguntada. [=

      REQUIRED já é o default do EJB, nesse caso você só precisa injetar o EntityManager e sair usando. [=

      Você precisa definir que a classe é um EJB através da anotação @Statless, etc.

      Obrigado pela visita e pelo apoio.

  117. Ótimo post uaihebert parabéns.

    Então segui se exemplo e funcionou muito bem localmente, porem tenho um servidor na amazon que esta dando um erro muito estranho.

    1 – Abro o navegador e tento acessar alguma pagina protegida. O sistema JAAS redireciona o usuário para a tela de login.
    2 – Logo no sistema e navego.
    3 – Faço o logout. O JAAS redireciona para a tela de login.
    4 – (ERRO) Se o usuário tentar acessar uma pagina protegida o sistema permite. Porem se o usuário tentar listar alguma coisa a Aplicação/JAAS não permite pois o usuário esta invalidado.

    Agora se eu der um ctrl + F5. E tentar acessar alguma tela protegida o sistema não permite e redireciona para a tela de login corretamente.

    Muito estranho né! Você já passou por algo parecido?

    • Fabiel, boa noite.

      Primeiro, me perde a demora em responder. Estou muito pegado no trabalho, para você ter idéia, estou te respondendo dele enquanto um deploy não termina.

      Honestamente não sei te falar o que pode estar acontecendo sem analisar tudo detalhadamente. Não sei te falar se isso poderia ser problema de algum cache no AWS, alguma configuração que faltou fazer ou foi feita indevidamente (tanto em meu projeto como no JBoss).

      Me desculpe não poder ser mais útil. Obrigado pela visita.

  118. Olá… muito obrigado por este tutorial..
    Para mim deu tudo certo, porém quando vou tentar realizar realizar o login, mesmo incluindo as credenciais cadastradas no BD, exibe a mensagem de login/password invalido.

    O que poderia estar acontecendo

    • Bruno, boa tarde.

      Me desculpe pela demora em responder, estou muito pegado no trabalho ultimamente… estou até mesmo respondendo dele.

      Veja se o caminho com o DB está correto, se nenhum erro está aparecendo na hora do deploy.

      Geralmente esse tipo de erro é alguma bobeirinha que está passando e não notamos.

      Até mais e desuclpe ñ poder ajudar mais.

  119. Olá, achei muito bom o seu tutorial, você está de parabéns.

    Veja se você pode me ajudar: eu gostaria de utilizar como GUI o framework ExtJS, mas para isso eu terei que substituir o Java Server Faces por JSP. É muito complicado fazer isso?

    Desde já agradeço.

  120. Olá, tentei seguir seu tutorial oneToMany e estou salvando cliente e endereço, porém em endereço não consigo salvar o codigo de referencia do cliente. Não achei o zip do projeto que vc comenta no post. Queria dar uma verificada para ver onde estou errando.

  121. Olá Hebert, já programo em JAVA (struts) a anos, mas comecei no JSF a mais ou menos 1ano, e 8 a cada 10 tuto que procuro na NET acho no seu BLOG, resultado, virei leitor… parabéns pelo seu trabalho, ele ajuda muito o meu rs!

    e este Tuto em especial, eu indico para amigos que estejam querendo iniciar no JSF, ou até mesmo para montar uma arquitetura base para um outro projeto!

    bom trabalho!!!

    • Leandro, boa tarde.

      Me desculpe a demora, estive muito ocupado nesse último mês.

      Fico muito feliz por saber que eu pude ajudar de algum modo.

      Obrigado por tudo e desculpe a demora.

  122. Olá!

    Parabéns pelo tutorial..

    Segui o mesmo minusiosamente e estou com o mesmo “problema” do amigo BrunoBL.

    Ao tentar realizar o login, usando os dados cadastrados no BD, o mesmo dá erro, dizendo que Username/Password incorretos..

    Já verifiquei caminho com o BD e está normal e não aparece nenhum erro na area do deploy.

    Poderia me dar uma ajuda em relação a isso?

    Grato.

    • Karlos, boa tarde.

      Me desculpe a demora, estive muito ocupado nesse último mês.

      Verifique se os dados estão cadastrados no banco corretamente.

      Validade também se na hora do deploy não está acontecendo algum erro.

      Obrigado por tudo e desculpe a demora.

      • Hebert,

        Obrigado por responder! Consegui resolver o “problema”. Era apenas os nomes errados na configuração do JAAS no JBOSS, pois na configuração do JNDI usei assim –> jndi-name=”java:jboss/datasources/CrudDS”, pois apenas java/CrudDS nao funcionou, e seguindo o tutorial, na configuração do JAAS ele aponta para o JNDI e como modifiquei, não estava encontrando o mesmo, logo não funcionando o login. Não sei se fui claro na explicação. kkkkk

        Obrigado e parabéns pelo TUTORIAL!

        :)))

        • Karlos, boa tarde.

          Fico feliz que você tenha encontrado seu problema.

          Eu entendi qual foi a solução sim. (:

          Até a próxima.

  123. Olá Herbert, implementei todo tutorial porem nao estou conseguindo logar. Fiquei com duvida na parte da autenticação você menciona outro tutorial Login de Usuário com JSF e JAAS) nesse ponto devo implementar esse tutorial?

    • Élito, boa tarde.

      Me desculpe a demora, estive muito ocupado nesse último mês.

      Honestamente eu costumo usar a versão mais nova que tem no maven. Nunca tive problema com isso não.

      Obrigado por tudo e desculpe a demora.

  124. Olá Hebert! Excelente post! Veja se podes me ajudar…
    Estou recebendo o erro “Caused by: oracle.net.ns.NetException: Got minus one from a read call”. Pelo que já pesquisei no Google, a aplicação não está liberando as conexões do banco e quanto atinge o limite de processos abertos no Oracle dá esse erro.

Leave a Comment