DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 
DevWare  
Novidade: DevMedia lança o DevWare - Saiba mais!


  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Java Magazine DIGITAL
ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!

Java EE 6 Web Profile - Revista Java Magazine 100

O artigo trata do Perfil Web da especificação Java EE 6 (Java Enterprise Edition 6, Web Profile), que consiste em uma seleção de tecnologias para a construção de aplicações Web mais leves do que a especificação Java EE 6 completa.

[fechar]

Você não gostou da qualidade deste conteúdo?

(opcional) Você gostaria de comentar o que não lhe agradou?





Java Magazine 100

[Artigo disponível no Leitor Digital DevMedia. Clique aqui para acessá-lo]

> Clique aqui para ler todos os artigos da Java Magazine 100


Na edição 80 da Java Magazine, começamos uma série de artigos em três partes abordando as novidades da então recém-lançada plataforma Java EE 6. Dentre outras coisas, o artigo tratou de novas características incluídas para dar maior flexibilidade ao padrão de desenvolvimento de aplicações corporativas Java. Uma destas novidades é a possibilidade de definir perfis (profiles) e, com esta possibilidade, veio também a definição do primeiro deles, o Perfil Web (Web Profile).

Os perfis têm como objetivo definir um subconjunto das tecnologias incluídas na especificação completa Java EE de forma a permitir a homologação de servidores mais leves (lightweight) como compatíveis com este ou aquele perfil. As tecnologias selecionadas para um determinado perfil em teoria seriam aquelas mais utilizadas para um determinado tipo de aplicação. De acordo com os especialistas que definiram o Web Profile, o subconjunto do Java EE 6 que permite o desenvolvimento da grande maioria das aplicações Web hoje em dia são os seguintes (em ordem alfabética):

·         Bean Validation 1.0 (JSR-303);

·         Common Annotations for Java Platform 1.1 (JSR-250);

·         Contexts and Dependency Injection for Java EE platform 1.0 (JSR-299);

·         Debugging Support for Other Languages 1.0 (JSR-45);

·         Dependency Injection for Java 1.0 (JSR-330);

·         Enterprise JavaBeans (EJB) 3.1 Lite (JSR-318);

·         Expression Language (EL) 2.2 (JSR-245);

·         Interceptors 1.1 (JSR-318);

·         Java EE 6 (JSR-316);

·         Java Persistence API (JPA) 2.0 (JSR-317);

·         Java Transaction API (JTA) 1.1 (JSR-907);

·         JavaServer Faces (JSF) 2.0 (JSR-314);

·         "

A exibição deste artigo foi interrompida.

  Este é um post disponível para assinantes MVP
Este post também está disponível para assinantes da Java Magazine DIGITAL
ou para quem possui Créditos DevMedia.  Clique aqui para saber mais!


Vítor E. Silva Souza
Professor do Departamento de Informática da Universidade Federal do Espírito Santo. Doutor em Ciência da Computação pela Universidade de Trento, Itália, faz pesquisa na área de Engenharia de Software e Modelagem Conceitual, com experiência em docência em Linguagens de Programação. Desenvolvedor Java...
O que você achou deste post?

    10 COMENTÁRIOS

[Fechar]

Este post é fechado - você precisa ter acesso ao post para incluir um comentário.



Jonatas Alves De Oliveira
Boa tarde.

Estou tentando executar o exercício mas estou tendo os seguintes erros ao executar o JBoss após a configuração inicial e a implantação do layout básico:

...

13:17:56,025 INFO [org.jboss.weld] (MSC service thread 1-3) Processing CDI deployment: JavAlbergue.war
13:17:56,482 INFO [org.jboss.weld] (MSC service thread 1-3) Starting Services for CDI deployment: JavAlbergue.war
13:17:56,528 INFO [org.jboss.weld.Version] (MSC service thread 1-3) WELD-000900 1.1.2 (Final)
13:17:56,558 INFO [org.jboss.jpa] (MSC service thread 1-3) starting Persistence Unit Service 'JavAlbergue.war#JavAlbergue'
13:17:56,741 INFO [org.hibernate.annotations.common.Version] (MSC service thread 1-3) HCANN000001: Hibernate Commons Annotations {4.0.0.CR2}
13:17:56,757 INFO [org.hibernate.Version] (MSC service thread 1-3) HHH00412:Hibernate Core {4.0.0.CR2}
13:17:56,757 INFO [org.hibernate.cfg.Environment] (MSC service thread 1-3) HHH00206:hibernate.properties not found
13:17:56,757 INFO [org.hibernate.cfg.Environment] (MSC service thread 1-3) HHH00021:Bytecode provider name : javassist
13:17:56,772 INFO [org.hibernate.ejb.Ejb3Configuration] (MSC service thread 1-3) HHH00204:Processing PersistenceUnitInfo [
name: JavAlbergue
...]
13:17:56,863 WARN [org.hibernate.service.jdbc.connections.internal.ConnectionProviderInitiator] (MSC service thread 1-3) HHH00181:No appropriate connection provider encountered, assuming application will be supplying connections
13:17:56,879 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-3) MSC00001: Failed to start service jboss.persistenceunit."JavAlbergue.war#JavAlbergue": org.jboss.msc.service.StartException in service jboss.persistenceunit."JavAlbergue.war#JavAlbergue": Failed to start service
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1780) [jboss-msc-1.0.1.GA.jar:1.0.1.GA]
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) [:1.6.0_24]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) [:1.6.0_24]
at java.lang.Thread.run(Thread.java:662) [:1.6.0_24]
Caused by: javax.persistence.PersistenceException: [PersistenceUnit: JavAlbergue] Unable to build EntityManagerFactory
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:908)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:884)
at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:73)
at org.jboss.as.jpa.service.PersistenceUnitService.createContainerEntityManagerFactory(PersistenceUnitService.java:143)
at org.jboss.as.jpa.service.PersistenceUnitService.start(PersistenceUnitService.java:77)
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1824) [jboss-msc-1.0.1.GA.jar:1.0.1.GA]
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1759) [jboss-msc-1.0.1.GA.jar:1.0.1.GA]
... 3 more
Caused by: org.hibernate.HibernateException: Connection cannot be null when 'hibernate.dialect' not set
at org.hibernate.service.jdbc.dialect.internal.DialectFactoryImpl.determineDialect(DialectFactoryImpl.java:97)
at org.hibernate.service.jdbc.dialect.internal.DialectFactoryImpl.buildDialect(DialectFactoryImpl.java:67)
at org.hibernate.engine.jdbc.internal.JdbcServicesImpl.configure(JdbcServicesImpl.java:170)
at org.hibernate.service.internal.BasicServiceRegistryImpl.configureService(BasicServiceRegistryImpl.java:80)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.initializeService(AbstractServiceRegistryImpl.java:145)
at org.hibernate.service.internal.AbstractServiceRegistryImpl.getService(AbstractServiceRegistryImpl.java:118)
at org.hibernate.cfg.SettingsFactory.buildSettings(SettingsFactory.java:70)
at org.hibernate.cfg.Configuration.buildSettingsInternal(Configuration.java:2253)
at org.hibernate.cfg.Configuration.buildSettings(Configuration.java:2249)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1720)
at org.hibernate.ejb.EntityManagerFactoryImpl.(EntityManagerFactoryImpl.java:76)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:899)
... 9 more

13:17:57,092 INFO [org.jboss.as.server.controller] (DeploymentScanner-threads - 2) Deployment of "JavAlbergue.war" was rolled back with failure message {"Failed services" => {"jboss.persistenceunit.\"JavAlbergue.war#JavAlbergue\"" => "org.jboss.msc.service.StartException in service jboss.persistenceunit.\"JavAlbergue.war#JavAlbergue\": Failed to start service"}}
13:17:57,123 INFO [org.jboss.as.server.deployment] (MSC service thread 1-3) Stopped deployment JavAlbergue.war in 36ms
13:17:57,123 ERROR [org.jboss.as.deployment] (DeploymentScanner-threads - 1) {"Composite operation failed and was rolled back. Steps that failed:" => {"Operation step-2" => {"Failed services" => {"jboss.persistenceunit.\"JavAlbergue.war#JavAlbergue\"" => "org.jboss.msc.service.StartException in service jboss.persistenceunit.\"JavAlbergue.war#JavAlbergue\": Failed to start service"}}}}
...

Estou realizando o exercício em ambiente Windows XP.

Alguma idéia do que poderia estar acontecendo? Falta alguma configuração relacionada ao hibernate?
[há +1 ano] - Responder

 

Andre Luiz Chaves Rodrigues
Parece brincadeira mais estou com um problema meio absurdo, mas num custa nada dizer que na minha aplicação nao consigo abrir o index. alguem ajuda? o console mostra isso e todos os foi seguido como na revista.
Console:::
15:22:35,039 INFO [org.jboss.modules] JBoss Modules version 1.0.2.GA
15:22:35,398 INFO [org.jboss.msc] JBoss MSC version 1.0.1.GA
15:22:35,476 INFO [org.jboss.as] JBoss AS 7.0.2.Final "Arc" starting
15:22:36,677 WARN [org.jboss.as] No security realm defined for native management service, all access will be unrestricted.
15:22:36,677 INFO [org.jboss.as] creating http management service using network interface (management) port (9990)
15:22:36,771 WARN [org.jboss.as] No security realm defined for http management service, all access will be unrestricted.
15:22:36,803 INFO [org.jboss.as.logging] Removing bootstrap log handlers
15:22:36,818 INFO [org.jboss.as.connector.subsystems.datasources] (Controller Boot Thread) Deploying JDBC-compliant driver class org.h2.Driver (version 1.2)
15:22:36,818 INFO [org.jboss.as.connector.subsystems.datasources] (Controller Boot Thread) Deploying non-JDBC-compliant driver class com.mysql.jdbc.Driver (version 5.1)
15:22:36,834 INFO [org.jboss.as.clustering.infinispan.subsystem] (Controller Boot Thread) Activating Infinispan subsystem.
15:22:36,959 INFO [org.jboss.as.naming] (Controller Boot Thread) JBAS011800: Activating Naming Subsystem
15:22:36,959 INFO [org.jboss.as.naming] (MSC service thread 1-2) JBAS011802: Starting Naming Service
15:22:36,974 INFO [org.jboss.as.osgi] (Controller Boot Thread) JBAS011910: Activating OSGi Subsystem
15:22:37,005 INFO [org.jboss.as.security] (Controller Boot Thread) Activating Security Subsystem
15:22:37,005 INFO [org.jboss.remoting] (MSC service thread 1-3) JBoss Remoting version 3.2.0.Beta2
15:22:37,021 INFO [org.xnio] (MSC service thread 1-3) XNIO Version 3.0.0.Beta3
15:22:37,052 INFO [org.xnio.nio] (MSC service thread 1-3) XNIO NIO Implementation Version 3.0.0.Beta3
15:22:37,520 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 Files\Java\jdk1.6.0_12\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;native;C:/Program Files/Java/jdk1.6.0_12/bin/../jre/bin/client;C:/Program Files/Java/jdk1.6.0_12/bin/../jre/bin;C:/Program Files/Java/jdk1.6.0_12/bin/../jre/lib/i386;C:\Program Files\Java\jdk1.6.0_12\bin;C:\Program Files\CollabNet\Subversion Client;C:\Program Files\MySQL\MySQL Server 5.0\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\Broadcom\Broadcom 802.11\Driver;C:\Program Files\MySQL\MySQL Server 5.5\bin;C:\Program Files\TortoiseSVN\bin;C:\Program Files\Microsoft SQL Server\80\Tools\Binn\;C:\Program Files\MySQL\MySQL Server 5.1\bin;C:\Program Files\Internet Explorer;C:\Program Files\Apache Software Foundation\apache-maven-3.0.4\bin;D:\Instaladores\IDEs\eclipse-jee-indigo-SR2-win32\eclipse;
15:22:37,551 INFO [org.jboss.as.ee] (Controller Boot Thread) Activating EE subsystem
15:23:03,447 INFO [org.apache.coyote.http11.Http11Protocol] (MSC service thread 1-1) Starting Coyote HTTP/1.1 on http-localhost-127.0.0.1-8080
15:23:03,573 INFO [org.jboss.as.connector] (MSC service thread 1-3) Starting JCA Subsystem (JBoss IronJacamar 1.0.3.Final)
15:23:03,636 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-1) Bound data source [java:jboss/datasources/ExampleDS]
15:23:03,636 INFO [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-3) Bound data source [java:/jboss/datasources/JavAlbergue]
15:23:05,320 INFO [org.jboss.as.jmx.JMXConnectorService] (MSC service thread 1-3) Starting remote JMX connector
15:23:05,415 INFO [org.jboss.as.remoting] (MSC service thread 1-4) Listening on /127.0.0.1:9999
15:23:05,711 INFO [org.jboss.as.deployment] (MSC service thread 1-2) Started FileSystemDeploymentService for directory C:\jboss-as-web-7.0.2.Final\standalone\deployments
15:23:05,711 INFO [org.jboss.as.deployment] (DeploymentScanner-threads - 1) Found JavAlbergue.war in deployment directory. To trigger deployment create a file called JavAlbergue.war.dodeploy
15:23:05,727 INFO [org.jboss.as] (Controller Boot Thread) JBoss AS 7.0.2.Final "Arc" started in 30985ms - Started 98 of 153 services (55 services are passive or on-demand)
[há +1 ano] - Responder

 

Wesley Yamazack
Olá Andre, entramos em contato com o autor para que ele possa te auxiliar, tudo bem ? Peço que aguarde um pouco até que o mesmo possa retornar o contato.

Um abraço.
[há +1 ano] - Responder
 

[autor] Vítor Estêvão Silva Souza
Comentário em 2 partes - reposta ao Jonatas e depois resposta ao Andre Luiz...


Jonatas e qualquer outro leitor que esteja recebendo o erro "Connection cannot be null when 'hibernate.dialect' not set" ao fazer o deploy para testar o layout com Facelets:

Quando escrevi o artigo, esse erro não apresentava. Provavelmente por alguma mudança no JBoss, agora ele não aceita ter a "JPA" Facet e não ter a mesma configurada, mesmo que a aplicação não tenha nenhuma entidade.

Então existem duas soluções: (A) remova a faceta JPA do projeto; ou (B) configure a persistência como descrito no artigo logo antes da Listagem 11. Ou seja, abra o arquivo JavAlbergue/JPA Content/persistence.xml e faça com que o mesmo tenha o código-fonte (aba Source) igual ao da Listagem 11.


Andre Luiz, o seu log não apresenta nenhuma exception. A única parte estranha do mesmo é esta:

"Found JavAlbergue.war in deployment directory. To trigger deployment create a file called JavAlbergue.war.dodeploy"

Quando você abre http://localhost:8080/JavAlbergue no navegador ele não abre a aplicação? Caso não esteja abrindo, acesse a aba Servers no Eclipse, clique com o botão direito em JavAlbergue e selecione "Full Publish".

Se a mensagem continuar aparecendo, siga as suas instruções. Ou seja, acesse o diretório <JBOSS>/standalone/deployments e crie o arquivo JavAlbergue.war.dodeploy como solicitado pela mensagem. Fique de olho no log pra ver o que acontece no deploy.


Espero que ajude.

- Vítor Souza
[há +1 ano] - Responder
 

Marley Ferreira
Olá!
Segui rigorosamente os passos até testar o primeiro cadastro de hospedes, chegando até a página 24. Ou seja, já conecto ao banco, datasource definido,todos os modelos de entidades implementados, persistence.xml configurado, banco pronto, classe de controle, classe de aplicação, paginas xhtml prontas.

A priori tudo funciona, consigo realizar um cadastro com sucesso, os dados do hospede vão para o banco.
No entanto, após a inclusão os campos continuam preenchidos no form e se eu tentar incluir um novo registro passando outros dados, acontece a seguinte exceção:

javax.servlet.ServletException: javax.ejb.EJBException: javax.persistence.PersistenceException: org.hibernate.PersistentObjectException: detached entity passed to persist: br.com.hotel.projeto.dominio.Hospede

De modo que eu preciso restartar o servidor pra conseguir incluir outro registro.

Pesquisando compreendi o problema, o que acontece é que a entidade permanece e quando tento inserir novamente a exceção acontece pq o hibernate entende que estou querendo inserir novamente a mesma entidade, uma chave primária (id) já existente.
Uma forma de resolver isso seria definir o id da entidade ja persistida para null, afinal ela já está no banco, então quando eu fosse inserir novamente o id vazio seria auto-incrementado.

O problema é que não consegui fazer isso. Quando tendo setar esse id ocorre um velho nullPointerException.

Gostaria de compreender melhor porquê isso acontece e como resolver de vez.

No mais, excelente tutorial e ótimo trabalho.

Aguardo resposta, abração.

Marley Ferreira

[há +1 ano] - Responder

 

[autor] Vítor Estêvão Silva Souza
Olá Marley,

O ControladorCadastro foi definido como @SessionScoped, o que significa que ele irá manter os dados do usuário durante toda a sessão, até que o usuário faça "logout".

Na Listagem 20, essa mesma classe é estendida com os métodos de login() e logout(). Repare que neste último o atributo hospede é alterado, recebendo um novo objeto Hospede, vazio. Isso fará com que os campos do formulário fiquem em branco novamente.

Além disso, na Listagem 21 o layout é alterado para que, no caso de usuário logado, apareça os dados da sessão e o comando de logout. O que o artigo não mostra mas está disponível no código-fonte da aplicação é uma alteração parecida no decorador da aplicação, veja abaixo:

<li><a href="#{facesContext.externalContext.requestContextPath}/faces/cadastro/index.xhtml">
<h:outputText value="Cadastre-se" rendered="#{not controladorCadastro.usuarioLogado}" />
<h:outputText value="Meu Cadastro" rendered="#{controladorCadastro.usuarioLogado}" />
</a></li>

Assim, para um usuário logado, acessar a página de cadastro é acessar os dados do próprio cadastro, e não cadastrar novamente. Para um novo cadastro, é preciso fazer o logout.

Espero ter ajudado,
- Vítor Souza
[há +1 ano] - Responder
 

Walter Santos De Andrade Souza
Olá,

Não consegui rodar a aplicação no servidor JBOSS AS 7.0.2 Final, não compreendo como criar o arquivo JavAlbergue.war.dodeploy.
Transferi para o Glassfish 3.1 c/ as devidas modificações e a aplicação rodou normalmente.
Mas ficou a duvida, como faço p/ funcionar no JBOSS? Como criar o arquivo .dodeploy? Olhei a documentação do JBOSS, mas como sou iniciante não compreendi como criar o arquivo.
[há +1 ano] - Responder
 

[autor] Vítor Estêvão Silva Souza
Olá Walter,

Por que você está fazendo o deploy manualmente com o arquivo .dodeploy? A seção "Instalação das Ferramentas" do artigo explica como integrar o JBoss com o Eclipse para depois fazer o deploy automaticamente de dentro da IDE (veja no final da seção "Criação do Projeto e Implantação Inicial").

De qualquer forma, se quiser fazer o deploy manual, basta copiar o arquivo .WAR para o diretório <JBOSS_HOME>/standalone/deployments. Caso o arquivo já esteja lá mas o deploy não tenha ocorrido com sucesso (ou você tenha feito o undeploy, etc.), se você criar um arquivo com o mesmo nome e a extensão .dodeploy, o JBoss tentará o deploy novamente. Você deve acompanhar pelo log do servidor o que aconteceu durante a implantação.

Boa sorte,
- Vítor Souza
[há +1 ano] - Responder
 

Tiago Augusto Figueiredo
Boa noite, segui os passo a passo o artigo, porem estou tendo o seguinte erro:

18:53:18,959 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:/crudJM-ds]
service jboss.jdbc-driver.mysql (missing) dependents: [service jboss.data-source.java:/jboss/datasources/JavAlbergue]

18:53:19,073 INFO [org.jboss.as] (Controller Boot Thread) JBAS015951: Admin console listening on http://127.0.0.1:9990
18:53:19,074 ERROR [org.jboss.as] (Controller Boot Thread) JBAS015875: JBoss AS 7.1.1.Final "Brontes" started (with errors) in 2833ms - Started 135 of 216 services (4 services failed or missing dependencies, 74 services are passive or on-demand)


alguém pode me ajudar?
obrigado.
[há +1 mês] - Responder
 

[autor] Vítor E. Silva Souza
Olá Tiago,

A partir das mensagens:

JBAS014775: New missing/unsatisfied dependencies:
service jboss.jdbc-driver.com_mysql (missing) dependents: [service jboss.data-source.java:/crudJM-ds]
service jboss.jdbc-driver.mysql (missing) dependents: [service jboss.data-source.java:/jboss/datasources/JavAlbergue]

Me parece que o erro está na configuração do banco de dados. Estranho esse crudJM-ds, pois isso não é parte do artigo. Ou é algum data source padrão do JBoss ou você o criou em outro projeto seu.

Já com relação ao JavAlbergue, certifique-se de ter seguido sem erros a seção "O Banco de Dados MySQL". Confira que o nome da fonte de dados na configuração (Listagem 2) é exatamente igual (inclusive maiúsculas e minúsculas) ao que está sendo usado na configuração da persistência do projeto (Listagem 11).

Se nada adiantar, compacte seu projeto e mande-o pra mim (vitorsouza@gmail.com) que posso tentar fazer a implantação aqui e descobrir o problema.

Boa sorte,
- Vítor Souza
[há +1 mês] - Responder
 
Cursos relacionados
Publicidade
[Fechar]

Você precisa estar logado para dar um feedback.

Clique aqui para efetuar o login
[Fechar]


Este post está fechado. Saiba mais sobre a assinatura MVP!
[Fechar] Você precisa estar logado para dar seu feedback.

Clique aqui para efetuar o login

Caso não tenha um cadastro DevMedia, clique aqui para se cadastrar (gratuito)
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03