DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

  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 com MongoDB na prática - Revista Java Magazine 97

O artigo apresenta a criação de uma aplicação Java EE 6 completa que utiliza o MongoDB como mecanismo de persistência. No decorrer do artigo, são também mostradas dicas para modelagem de dados no MongoDB, além de boas práticas de uso das API Java EE e de modularização de aplicações.

[fechar]

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

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





Java Magazine 97

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

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


NoSQL é um termo, relativamente recente, que tem aparecido com frequência na agenda de desenvolvedores e arquitetos de soluções. Embora ainda não tenha uma definição precisa, o termo é usado para classificar um conjunto de ferramentas de armazenamento de dados que possuem um modelo de dados diferente do tradicional modelo relacional, e/ou que se diferenciam dele em algum aspecto arquitetural, tal como no modelo de consistência, de distribuição ou de linguagem para manipulação de dados. Tal termo também é utilizado para falar sobre uma “corrente” de arquitetura, que prega uma análise mais profunda das necessidades de persistência das aplicações e o uso das ferramentas citadas complementando os tradicionais SGBDs relacionais. Este aspecto complementar é enfatizado pelo significado da sigla ser “Not Only SQL” (Não Somente SQL) – ao contrário do sugerido por um contato inicial (Não SQL).

Em edições anteriores da revista, o tema NoSQL foi abordado em uma série de artigos de Alexandre Porcelli, um dos maiores especialistas do assunto no Brasil, no qual apresentou-se os principais conceitos e paradigmas relacionados ao tema, as ferramentas mais utilizados e como escolher entre as diversas opções disponíveis.

Este artigo explora em maior profundidade um dos bancos NoSQL mais comentados e utilizados atualmente: o MongoDB (de humongous, gíria americana que significa extraordinariamente grande). Para tal, construímos uma aplicação exemplo baseada nos mais recentes padrões do Java EE 6, tais como JSF 2.0, CDI 1.0 e EJB 3.1, e implementamos a persistência através do MongoDB.

A aplicação consiste em um player de músicas acessado através da web, com recursos de redes sociais para compartilhamento de opiniões. Através desse rico estudo de caso, exemplificamos como a modelagem orientada a documentos, utilizada pelo Mongo, difere da tradicional modelagem entidade-relacional. Mostramos também como interagir com o MongoDB através do driver Java, além de ilustrar técnicas de construção de aplicações e boas práticas das APIs Java EE quando utilizadas em conjunto. Por fim, exploramos recursos avançados disponíveis na plataforma, tais como a injeção de dependências e a implementação do padrão Observer disponíveis no CDI, o uso de mensagens assíncronas através do JMS e chamadas Ajax na camada de apresentação.

Como veremos, o MongoDB oferece uma boa alternativa para a persistência de dados, provendo facilidades para um desenvolvimento altamente produtivo e um produto final de ótimo desempenho. Esperamos com isso incentivar o leitor ao seu uso e ao estudo de outras ferramentas NoSQL, ampliando o seu leque de opções e ajudando-o a fazer as escolhas mais adequadas de ferramentas de armazenamento de dados.

Aplicação exemplo

A aplicação a ser construída é um player de músicas online, acessado pela Web, com recursos de redes sociais para compartilhamento de opiniões e notas, e um mecanismo automatizado para inserção de novas músicas no repositório.

Algumas das funcionalidades que estão disponíveis para o usuário são:

·         Criação de Playlists: o usuário pode criar listas de execuções com suas músicas preferidas. No momento da criação, ele busca as músicas cadastradas no sistema através do nome e as adiciona à lista;

·         Escutar Playlists: o usuário tem a disposição um player de música, em que ele seleciona uma playlist anteriormente criada para tocar. Neste momento, ele pode também comentar sobre as músicas e avaliá-las, além de visualizar os comentários e notas de outros;

·         Inserir Músicas: o processo de inserção de novas músicas no repositório da aplicação é feito através de um processo de indexação de diretórios. O usuário aponta um diretório e a aplicação encarrega-se de ler todas as músicas no formato MP3, cadastrando-as automaticamente.

 

Como todo serviço de sucesso, essa aplicação possui também alguns requisitos extras que precisam ser atendidos:

·         Tempo muito pequeno para seu lançamento inicial;

·         Preparação para explosão, a qualquer momento, no número de usuários;

·         Adição de funcionalidades constantes e não disruptivas.

 

Analisando-se estas características, além da necessidade de bom desempenho para pequenas (e muitas) leituras e escritas e a expectativa da geração de grande volume de dados, o MongoDB torna-se um bom candidato para implementação da persistência da aplicação.

Preparando o ambiente

Para a execução da aplicação, iremos precisar de um servidor de aplicações Java EE 6 e um servidor de banco de dados MongoDB. O servidor Java EE 6 utilizado foi o GlassFish 3.1, mas não deve haver problemas com outros servidores.

Configurando o GlassFish

O processo de instalação do GlassFish pode ser consultado em seu próprio site (ver seção Links [2]). Adicionalmente, é necessária a criação de uma fila JMS no servidor. Como veremos a frente, ela é necessária para a comunicação assíncrona e fracamente acoplada entre dois módulos da aplicação.

Podemos criar esse recurso diretamente pela interface de administração do GlassFish ou podemos utilizar a ferramenta de linha de comando asadmin. Para utilizar essa ferramenta, o primeiro passo é criar um arquivo de configuração com os recursos que serão adicionados. Assim, crie um arquivo chamado glassfish-resources.xml em uma pasta de sua preferência com o conteúdo da Listagem 1.

 

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE resources

  PUBLIC "-//GlassFish.org//DTD GlassFish Application Server 3.1 Resource Definitions//EN"

  "http://glassfish.org/dtds/glassfish-resources_1_5.dtd">

"

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!


Devmedia - Equipe De Moderacao
(Sem mini-bio cadastrado)
O que você achou deste post?

    8 COMENTÁRIOS

[Fechar]

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



Wesley
Na verdade, não é NO SQL (nenhum SQL), e sim Not Only SQL (não apenas SQL)...
[há +1 ano] - Responder

 

Bruno Corrêa
Boa noite pessoal...

fiz o build utilizando o Maven e depois eu fiz um deploy utilizando o ear que o o maven criou após o build. Porém está na hora do deploy.

Segue o erro abaixo:

remote failure: Error occurred during deployment: Exception while loading the app : WELD-000072 Managed bean declaring a passivating scope must be passivation capable. Bean: Managed Bean [class br.com.jm.musiclib.web.IndexerBean] with qualifiers [@Any @Default @Named]. Please see server.log for more details.
Command deploy failed.
[há +1 ano] - Responder

 

Dyego Souza Do Carmo
a classe IndexerBean deve implementar a interface Serializable :) apenas isto , compile novamente e pronto :)
[há +1 ano] - Responder
 

Carlos Amaral
executei o moven versão 2.2.1 (é essa versão mesmo?). Mas dá erro e não gera o .ear. No log aparece isto:

Results :

Failed tests:
testSearchMusic(br.com.jm.musiclib.model.impl.MusicServiceTest)

Tests in error:
testProcessIndexerEvent(br.com.jm.musiclib.model.impl.MusicServiceTest)
testAddTag(br.com.jm.musiclib.model.impl.MusicServiceTest)
testAddComment(br.com.jm.musiclib.model.impl.MusicServiceTest)
testGetMusic(br.com.jm.musiclib.model.impl.MusicServiceTest)


o que será que está acontecendo ?
[há +1 ano] - Responder

 

Carlos Amaral
Quiz dizer Maven e não moven.
[há +1 ano] - Responder
 

Márcio Vinícius
Os testes estão falhando. Pra saber o motivo, tem que olhar a página gerada pelo plugin surefire, ele exibe o caminho para esta página no final da execução do maven. Pra compilar a aplicação sem testes, digite -Dmaven.test.skip. Carteio que seja algo de banco, vc instalou o MongoDB?
[há +1 ano] - Responder
 

Carlos Amaral
Olá Márcio Vinícius, tudo bem?
Executei o projeto no Maven com o parâmetro que você sugeriu e finalmente foi gerado o .ear. Sobre a sua pergunta, sim, eu havia instalado o MongoDB 1.8.2(versão que o artigo sugeri). Obrigado!
[há +1 ano] - Responder
 

Dyego Souza Do Carmo
Que bom :)

Maven quebra um grande galhio.
[há +1 ano] - 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!
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03