Este é um post disponível para assinantes MVPEste 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 na Prática – Parte 1 - Java Magazine 80
Da versão 6 da plataforma Java, Enterprise Edition (Java EE 6), que foi publicada como padrão do JCP em dezembro de 2009, trazendo várias novidades em relação ao Java EE 5. A plataforma Java EE engloba diversas tecnologias úteis no desenvolvimento de aplicações corporativas, ou seja, sistemas que envolvem toda uma organização e seus diversos usuários, exigindo características como escalabilidade, segurança, etc.
Java Magazine 80
[Artigo já está disponível no Leitor Digital DevMedia®. Clique aqui para acessá-lo]
> Clique aqui para ler todos os artigos da Java Magazine 80
[Artigo já está disponível no Leitor Digital DevMedia®. Clique aqui para acessá-lo]
> Clique aqui para ler todos os artigos da Java Magazine 80
ATENÇÃO! A exibição deste artigo foi interrompida.
Este é um post disponível para assinantes MVPEste post também está disponível para assinantes da Java Magazine DIGITAL ou para quem possui Créditos DevMedia. Clique aqui para saber mais!

18 COMENTÁRIOS
Oto Soares Coelho Júnior
Baixei o código do site e rodei com o NetBeans, porém estorou uma exceção no StackTrace.
Acredito que falte colocar o jar do MySQL em algum lugar.
Caso positivo, como configura a partir do NetBeans para o Glassfish subir com o jar do MySQL Connector no classpath?
Exceção gerada:
Error in allocating a connection. Cause: Class name is wrong or classpath is not set for : com.mysql.jdbc.jdbc2.optional.MysqlDataSource
[há +1 ano] -
Responder

Oto Soares Coelho Júnior
Sobre meu post anterior, me esqueci de especificar qual aplicação se refere.
Se refere ao artigo Java EE 6 Na prática da edição 80 da revista Java Magazine.
Obrigado.
[há +1 ano] -
Responder
[autor]
Vítor Estêvão Silva Souza
Olá Oto,
Realmente ficou faltando esta informação, peço desculpas. Tem até o link pro download do driver no final da matéria, mas faltou citar onde colocá-lo depois de obtido. Coloque na seguinte pasta:
diretorio-do-glassfish/glassfish/domains/domain1/lib/ext
Bons estudos!
Vítor Souza
[há +1 ano] -
Responder

Rodrigo Abreu Oliveira
Neste método na classe PlacaAmbulanciaValidator, estava voltando a mensagem de erro de validação.
O número da placa que usei foi HKC 0448. O problema que encontrei foi que na linha:
crescente = atual > anterior
não permitia um número igual, somente maior, que neste caso não é verdadeiro, pois existe a placa 0448.
Portanto alterei o codigo para
crescente = atual >= anterior
e funcionou corretamente.
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
if (value.length() != 8) {
return false;
}
boolean crescente = true;
int anterior = Character.digit(value.charAt(4), 10);
for (int i = 5; crescente && i < 8; i++) {
int atual = Character.digit(value.charAt(i), 10);
crescente = atual >= anterior;
anterior = atual;
}
return crescente;
}
Value pelo artigo. Muito bom!!!
O número da placa que usei foi HKC 0448. O problema que encontrei foi que na linha:
crescente = atual > anterior
não permitia um número igual, somente maior, que neste caso não é verdadeiro, pois existe a placa 0448.
Portanto alterei o codigo para
crescente = atual >= anterior
e funcionou corretamente.
@Override
public boolean isValid(String value, ConstraintValidatorContext context) {
if (value.length() != 8) {
return false;
}
boolean crescente = true;
int anterior = Character.digit(value.charAt(4), 10);
for (int i = 5; crescente && i < 8; i++) {
int atual = Character.digit(value.charAt(i), 10);
crescente = atual >= anterior;
anterior = atual;
}
return crescente;
}
Value pelo artigo. Muito bom!!!
[há +1 ano] -
Responder
[autor]
Vítor Estêvão Silva Souza
Oi Rodrigo, que bom que gostou do artigo e obrigado por sinalizar o "erro". No entanto, estritamente falando não é um erro, pois 0448 não está em ordem crescente. Ordem crescente é quanto o número seguinte é maior que o anterior. Quando tem dois números iguais, como 0448, este encontra-se em ordem não-decrescente. Neste caso, você está correto em trocar o ">" por ">=". Bons estudos! - Vítor
[há +1 ano] -
Responder

Marcos Estevam De Sousa
Vitor. Baixei a aplicação de exemplo da edição 80 da Java Magazine e ao executar o projeto ele gerou o seguinte erro.
C:\Users\Estevam\Documents\NetBeansProjects\SisContrAm\nbproject\build-impl.xml:169: The following error occurred while executing this line:
C:\Users\Estevam\Documents\NetBeansProjects\SisContrAm\SisContrAm-war\nbproject\build-impl.xml:377: The libs.CopyLibs.classpath property is not set up.
This property must point to
org-netbeans-modules-java-j2seproject-copylibstask.jar file which is part
O que devo fazer para corrigir esta falha?
C:\Users\Estevam\Documents\NetBeansProjects\SisContrAm\nbproject\build-impl.xml:169: The following error occurred while executing this line:
C:\Users\Estevam\Documents\NetBeansProjects\SisContrAm\SisContrAm-war\nbproject\build-impl.xml:377: The libs.CopyLibs.classpath property is not set up.
This property must point to
org-netbeans-modules-java-j2seproject-copylibstask.jar file which is part
O que devo fazer para corrigir esta falha?
[há +1 ano] -
Responder
[autor]
Vítor Estêvão Silva Souza
Olá Marcos,
Este site fala sobre este erro e talvez apresente uma solução para o seu problema:
Quando utilizamos um projeto construído por outra pessoa, às vezes alguns erros estranhos se apresentam mesmo. Caso esta página (ou uma pesquisa no Google) não solucione o problema, sugiro começar o projeto do zero, seguindo as instruções do artigo e utilizando o código-fonte disponível para completar as lacunas deixadas pelo artigo, ou seja, copiando o código das classes que não foi possível mostrar como listagem no artigo por questões de espaço.
Boa sorte,
Vítor Souza
[há +1 ano] -
Responder

Jonathas Oliveira Lima
Vitor, mais uma dúvida.
Estou usando postgres coloquei o driver no local indicado aparentemente tudo perfeito, porém ao inicializar o glassfish, as tabelas não estão sendo criadas no banco de dados, e olhando com mais calma os modelos, não percebi nenhuma anotação referenciando as tables do banco. Como é o processo do container criar automatico as tabelas, ja que no momento de criar a persistencia deixamos o create marcado?
obrigado
[há +1 ano] -
Responder
[autor]
Vítor Estêvão Silva Souza
Olá Jonathas,
As tabelas são criadas pelo JPA, o mecanismo de persistência padrão do Java EE 6. As anotações não precisam ter o nome da tabela ou das colunas, pois ele assume nomes padrão a partir do nome das classes e atributos. Mas se quiser, você pode usar um parâmetro da anotação para especificar o nome das coisas como quiser.
As tabelas deveriam ser criadas no primeiro uso do JPA, ou seja, assim que você implementar alguma funcionalidade que utiliza a persistência (faz uma consulta ou grava algum dado), ao iniciar a aplicação e utilizar esta funcionalidade pela primeira vez, as tabelas devem ser criadas. Lembrando que o banco de dados deve ser criado por você anteriormente, configurando usuário e senha e estes dados (banco, usuário, senha) devem ser utilizados para configurar a conexão dentro do NetBeans.
Bons estudos!
Vítor Souza
[há +1 ano] -
Responder

Wagner Alves Da Silva Junior
Parabéns pelo artigo, continue sempre assim seus artigos são alguns dos melhores da revista.
[há +1 ano] -
Responder
[autor]
Vítor Estêvão Silva Souza
Obrigado, Wagner, por todos os comentários!
Abraço,
Vítor Souza
[há +1 ano] -
Responder

Rafael Alexandre Silva Bomfim
Ótimo artigo!
Segui tudo passo-a-passo e no final funcionou perfeitamente.
Só tive que adicionar o driver do postgre que estou utilzando.
Parabéns pelo artigo.
Segui tudo passo-a-passo e no final funcionou perfeitamente.
Só tive que adicionar o driver do postgre que estou utilzando.
Parabéns pelo artigo.
[há +1 ano] -
Responder
[autor]
Vítor Estêvão Silva Souza
Obrigado pelo comentário, Rafael!
Grande abraço,
Vítor Souza
[há +1 ano] -
Responder

Jonathas Oliveira Lima
Onde esta a classe função na aplicação? no modelo de dados a classe não é apresentada. Outra grande dúvida, neste primeiro artigo percebi que não tem nada falando de como usar postgres, é necessário colocar o driver do postgres onde? Gostaria de maiores detalhes e esclarecimento sobre o artigo escrito.
[há +1 ano] -
Responder
[autor]
Vítor Estêvão Silva Souza
Caro Jonathas,
Como diz o artigo:
"A propriedade funcoes é um conjunto de valores Funcao, um tipo enumerado não exibido no diagrama e que compreende os valores OPERADOR, DESPACHANTE, MOTORISTA e ADMIN."
Ou seja, é um enum com as propriedades OPERADOR, DESPACHANTE, MOTORISTA, ADMIN. Se você fizer o download do código-fonte associado à aplicação, encontrará em SisContrAm-ejb/src/java/br/com/javamagazine/siscontram/dominio o arquivo Funcao.java:
package br.com.javamagazine.siscontram.dominio;public enum Funcao { OPERADOR, DESPACHANTE, MOTORISTA, ADMIN}
Quanto ao uso do PostgreSQL, como o foco da matéria não é o uso de diferentes bancos de dados, escolhi um deles como exemplo e o pouco que foi falado sobre BD foi falado só sobre MySQL e JavaDB (Derby). Mas a ideia é a mesma. Os drivers vão no seguinte diretório:
diretorio-do-glassfish/glassfish/domains/domain1/lib/ext
Isso realmente eu esqueci de incluir na matéria. Está, no entanto, num comentário anterior ao seu nesta página.
Bons estudos,
Vítor Souza
[há +1 ano] -
Responder
Brunno Henrique De Salve Agostinho
Aonde se faz o download do código fonte?
[há +1 ano] -
Responder
Devmedia - Equipe De Moderação
os fontes estão em http://www.devmedia.com.br/articles/viewcomp.asp?comp=17137
[há +1 ano] -
Responder
Walter Santos De Andrade Souza
Olá,
Estou tentando rodar a aplicação, mas me deparei c/ o seguinte erro:
Implantação inicial de SisContrAm até C:\Users\Walter Santos de And\Documents\NetBeansProjects\SisContrAm\dist\gfdeploy\SisContrAm
Distribuição inicial do SisContrAm completada
Initializing...
deploy?DEFAULT=C:\Users\Walter Santos de And\Documents\NetBeansProjects\SisContrAm\dist\gfdeploy\SisContrAm&name=SisContrAm&force=true falhou em GlassFish Server 3.1
Erro durante a implementação: Exception while preparing the app : A sorted collection has to define @Sort: br.com.javamagazine.siscontram.dominio.Ambulancia.motoristas. Consulte o server.log para obter mais detalhes
Exception while invoking class org.glassfish.persistence.jpa.JPADeployer prepare method : org.hibernate.AnnotationException: A sorted collection has to define @Sort: br.com.javamagazine.siscontram.dominio.Ambulancia.motoristas
A sorted collection has to define @Sort: br.com.javamagazine.siscontram.dominio.Ambulancia.motoristas
C:\Users\Walter Santos de And\Documents\NetBeansProjects\SisContrAm\nbproject\build-impl.xml:288:
O módulo não foi implementado.
at org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment.deploy(Deployment.java:210)
at org.netbeans.modules.j2ee.ant.Deploy.execute(Deploy.java:106)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
at sun.reflect.GeneratedMethodAccessor242.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:390)
at org.apache.tools.ant.Target.performTasks(Target.java:411)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
at org.apache.tools.ant.module.bridge.impl.BridgeImpl.run(BridgeImpl.java:284)
at org.apache.tools.ant.module.run.TargetExecutor.run(TargetExecutor.java:539)
at org.netbeans.core.execution.RunClassThread.run(RunClassThread.java:153)
FALHA NA CONSTRUÇÃO (tempo total: 9 segundos)
Usei o código fonte e o artigo p/ montar a aplicação do zero. O que eu posso fazer?
Estou tentando rodar a aplicação, mas me deparei c/ o seguinte erro:
Implantação inicial de SisContrAm até C:\Users\Walter Santos de And\Documents\NetBeansProjects\SisContrAm\dist\gfdeploy\SisContrAm
Distribuição inicial do SisContrAm completada
Initializing...
deploy?DEFAULT=C:\Users\Walter Santos de And\Documents\NetBeansProjects\SisContrAm\dist\gfdeploy\SisContrAm&name=SisContrAm&force=true falhou em GlassFish Server 3.1
Erro durante a implementação: Exception while preparing the app : A sorted collection has to define @Sort: br.com.javamagazine.siscontram.dominio.Ambulancia.motoristas. Consulte o server.log para obter mais detalhes
Exception while invoking class org.glassfish.persistence.jpa.JPADeployer prepare method : org.hibernate.AnnotationException: A sorted collection has to define @Sort: br.com.javamagazine.siscontram.dominio.Ambulancia.motoristas
A sorted collection has to define @Sort: br.com.javamagazine.siscontram.dominio.Ambulancia.motoristas
C:\Users\Walter Santos de And\Documents\NetBeansProjects\SisContrAm\nbproject\build-impl.xml:288:
O módulo não foi implementado.
at org.netbeans.modules.j2ee.deployment.devmodules.api.Deployment.deploy(Deployment.java:210)
at org.netbeans.modules.j2ee.ant.Deploy.execute(Deploy.java:106)
at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
at sun.reflect.GeneratedMethodAccessor242.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
at org.apache.tools.ant.Task.perform(Task.java:348)
at org.apache.tools.ant.Target.execute(Target.java:390)
at org.apache.tools.ant.Target.performTasks(Target.java:411)
at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399)
at org.apache.tools.ant.Project.executeTarget(Project.java:1368)
at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
at org.apache.tools.ant.Project.executeTargets(Project.java:1251)
at org.apache.tools.ant.module.bridge.impl.BridgeImpl.run(BridgeImpl.java:284)
at org.apache.tools.ant.module.run.TargetExecutor.run(TargetExecutor.java:539)
at org.netbeans.core.execution.RunClassThread.run(RunClassThread.java:153)
FALHA NA CONSTRUÇÃO (tempo total: 9 segundos)
Usei o código fonte e o artigo p/ montar a aplicação do zero. O que eu posso fazer?
[hoje] -
Responder
Você está em:
canal Java
Publicidade
Vítor Estêvão Silva Souza
Space do autor
Graduação em Ciência da Computação e Mestrado em Informática com ênfase em Engenharia de Software na Universidade Federal do Espírito Santo (UFES), onde trabalhou também como professor substituto.
Space do autor


0
0
