Hoje vou mostrar a integração de aplicações Flex 4 com back-end Java, utilizando o Blazeds para comunicação entre eles. Durante a instalação e configuração do ambiente de desenvolvimento, estamos considerando que você está trabalhando numa máquina com Windows. Caso não seja este o caso não fique preocupado, basta repetir os mesmos passos descritos para o Windows adaptando para o sistema operacional que você estiver utilizando.
1. Instalações
- Download Java Development Kit (JDK6), e após configurar a váriavel de sistema JAVA_HOME.
- Download Eclipse IDE for Java Developers.
- Download BlazeDS Turnkey, contêm uma versão configurada do servidor Tomcat e diversos exemplos.
- Download Adobe Flash Builder 4, versão Standalone.
2. Instalando o BlazeDS
Após o download do BlazeDS descompacte-o num diretório de sua preferência:
C:blazeds
* Nesse momento você já deve ter instalado o JDK e confgurado a variável JAVA_HOME.
Para verificar se tudo está funcionando vamos iniciar o servidor Tomcat.
Abra um prompt do Windows e digite:
cd C:blazedstomcatbin
Em seguida inicie o servidor Tomcat:
catalina start
Após a inicialização do servidor, você verá a janela abaixo:
O servidor de aplicação foi inicializado na porta 8400. Como eu disse anteriormente, o BlazeDS Turnkey vem com uma série de aplicações de exemplo mostrando a integração entre o Adobe Flex e o Java.
Para verificar se o servidor está rodando corretamente e ver as aplicações que citei, digite num browser de sua preferência:
http://localhost:8400/
3. Instalando o Eclipse
Após o download do Eclipse, descompacte o conteúdo do arquivo compactado para uma pasta um diretório de sua preferência:
C:eclipse
* Assim como o BlazeDS, o Eclipse também não necessita de instalação. Basta descompactá-lo para utilizar.
4. Instalando o Flash Builder 4
Para a instalação do Adobe Flash Builder 4 basta você ir avançando as opções, sempre mantendo os valores padrões. A versão Standalone é uma versão Trial que dura 60 dias. No site da Adobe você pode obter gratuitamente uma licensa de utilização caso você se enquadre nas exigências legais (estudantes, profissionais autônomos, etc).
5. Criando o projeto Java
Abra a pasta onde você descompactou o Ecplise e execute-o:
C:eclipseeclipse.exe
Em seguida vamos criar nosso projeto Java. Clique em:
File > New > Dynamic Web Project
Agora vamos criar um bean que será usado na serialização das informações que serão trocadas entre o Adobe Flex e o Java.
Clique com o botão direito do mouse no projeto e então:
New > Class
A seguir a implementa da nossa classa Java bean Usuario.java:
package br.com.rectius.model; ? import java.io.Serializable; ? public class Usuario implements Serializable { ? /** * */ private static final long serialVersionUID = 1L; ? private String nome; private String email; private String cargo; ? public void setNome(String nome) { this.nome = nome; } public String getNome() { return nome; } ? public void setEmail(String email) { this.email = email; } public String getEmail() { return email; } ? public void setCargo(String cargo) { this.cargo = cargo; } public String getCargo() { return cargo; } ? } |
Agora vamos criar nossa camada de serviço, que será o ponto de entrada das requisições do nosso front-end Flex.
Clique novamente com o botão direito do mouse sobre o projeto e então:
New > Class
A seguir a implementação da nossa camada de serviço UsuarioService.java:
package br.com.rectius.service; ? import java.util.ArrayList; ? import br.com.rectius.model.Usuario; ? public class UsuarioService { ? /* * Como não estamos utilizando nenhuma ferramenta * para persistência dos dados, vamos armazenar * a informações nessa lista estática */ private static ArrayList<Usuario> listaUsuarios = new ArrayList<Usuario>(); ? /* * Insere um novo usuário * @param usuario */ public void insereUsuario(Usuario usuario) { listaUsuarios.add(usuario); } ? /* * Retorna todos os usuários * @return */ public ArrayList<Usuario> listaUsuarios() { return listaUsuarios; } ? } |
Pronto! Nossa aplicação Java já está finalizada.
6. Configurando o BlazeDS
Para que o Adobe Flex possa se comunicar com nossa camada de serviço no Java, teremos que modificar alguns arquivos de configuração do BlazeDS.
Abra a pasta onde você descompactou o BlazeDS:
C:blazeds
Crie um nova pasta chamada:
C:blazedsBlazedsConfigBase
Localize agora o arquivo blazeds.war e descompacte-o na pasta que acabamos de criar:
Arquivo: C:blazedsblazeds.war
Pasta: C:blazedsBlazedsConfigBase
Veja o contéudo da pasta C:blazedsBlazedsConfigBase>:
C:blazedsBlazedsConfigBaseMETA-INF
C:blazedsBlazedsConfigBaseWEB-INF
* A pasta WEB-INF contém toda a informação necessária para a integração de um projeto Adobe Flex + Java + Blazeds.
Agora vamos copiar algumas pastas do BlazeDS para dentro nosso projeto Java. Localize a pasta:
C:blazedsBlazedsConfigBaseWEB-INF
Copie o arquivo e os diretórios abaixo para WebContentWEB-INF, dentro do Eclipse:
C:blazedsBlazedsConfigBaseWEB-INFweb.xml
C:blazedsBlazedsConfigBaseWEB-INFflex
C:blazedsBlazedsConfigBaseWEB-INFlib
A pasta lib contém todas as biliotecas necessárias para realizar a comunicação do Adobe Flex com o Java.
A pasta flex contém os arquivos de configuração necessários para estabelecer essa comunicação.
Nesse momento a estrutura do seu projeto deve estar como na imagem abaixo:

Agora vamos configurar nossa aplicação para que o Flex consiga se comunicar com o nosso projeto Java.
Dentro do Eclipse localize e abre o arquivo:
WebContentWEB-INFweb.xml
Configure-o conforme a seguir:
<?xml version="1.0" encoding="UTF-8"?> DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app> ? <display-name>BlazeDSdisplay-name> <description>BlazeDS Applicationdescription> ? -- Http Flex Session attribute and binding listener support --> <listener> <listener-class>flex.messaging.HttpFlexSessionlistener-class> listener> ? -- MessageBroker Servlet --> <servlet> <servlet-name>MessageBrokerServletservlet-name> <display-name>MessageBrokerServletdisplay-name> <servlet-class>flex.messaging.MessageBrokerServletservlet-class> <init-param> <param-name>services.configuration.fileparam-name> <param-value>/WEB-INF/flex/services-config.xmlparam-value> init-param> <load-on-startup>1load-on-startup> servlet> ? -- begin rds end rds --> <servlet> <servlet-name>RDSDispatchServletservlet-name> <display-name>RDSDispatchServletdisplay-name> <servlet-class>flex.rds.server.servlet.FrontEndServletservlet-class> <init-param> <param-name>useAppserverSecurityparam-name> <param-value>falseparam-value> init-param> <load-on-startup>10load-on-startup> servlet> ? <servlet-mapping id="RDS_DISPATCH_MAPPING"> <servlet-name>RDSDispatchServletservlet-name> <url-pattern>/CFIDE/main/ide.cfmurl-pattern> servlet-mapping> ? <servlet-mapping> <servlet-name>MessageBrokerServletservlet-name> <url-pattern>/messagebroker/* ? |
Ainda dentro do Eclipse localize e abra o arquivo:
WebContentWEB-INFflexremoting-config.xml
Dentro desse arquivo é que informamos quais os serviços que nosso front-end Flex poderá ter acesso. Para tal basta criar um novo destino para cada serviço.
Crie um destino para o serviço UsuarioService adicionando no arquivo remoting-config.xml o código abaixo:
<destination id="UsuarioService"> <properties> <source>br.com.rectius.service.UsuarioServicesource> properties> destination> |
Pronto! O projeto Java já está configurado para trabalhar com o BlazeDS.
7. Publicando nossa aplicação no Tomcat
Já terminamos o projeto Java e a configuração do BlazeDS. Agora o próximo passo é publicar o projeto no servidor de aplicações Tomcat.
Navegue até a pasta:
C:blazedstomcatwebapps
Crie uma pasta para o projeto Java:
C:blazedstomcatwebappsGerenciaUsuario
Agora dentro do Eclipse, clique sobre a pasta WEB-INF e a copie Edit > Copy.

Cole então seu conteúdo na pasta que criada no passo acima:
C:blazedstomcatwebappsGerenciaUsuario
Agora reinicie o servidor de aplicação Tomcat para subir o projeto que acabamos de fazer deploy:
catalina stop
catalina start
08. Criando o projeto Flex
Uma das novidades do novo ambiente de desenvolvimento Adobe Flex, o Flash Builder 4, é sem dúvidas os recursos de conexão a dados e serviços.
No passo 4 nós fizemos a instalação do Flash Builder 4. Agora localize seu ícone na área de trabalho ou no menu iniciar e abra o aplicativo.

Em seguida crie um novo projeto Flex. Clique em File > New > Flex Project

Agora faça suas configurações conforme a imagem abaixo:

Root folder: Representa o diretório onde fizemos o deploy do nosso projeto Java, dentro do servidor de aplicação.
Root URL: Representa a URL de acesso ao projeto no servidor de aplicação.
Context root: Representa o nome da nossa aplicação.
Output folder: Representa o local onde serão compilados os arquivos do Flex.
Clique em Validate Configuration para se certificar de que você configurou tudo corretamente e em seguida clique em Finish.
Antes de qualquer coisa vamos conferir se o Flash Builder inseriu corretamente um parâmetro de compilação no projeto Flex.
Clique com o botão direito do mouse no projeto Flex, clique em Properties e certifique-se de que o argumento de compilação -services foi inserido:

Agora vamos criar a interface. Digite o código abaixo:
<?xml version="1.0" encoding="utf-8"?> <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx"> ? <s:controlBarContent> <s:Label text="Gerenciamento de Usuários" fontWeight="bold" fontSize="18"/> s:controlBarContent> ? <s:layout> <s:VerticalLayout horizontalAlign="center" verticalAlign="middle" paddingLeft="10" paddingRight="10" paddingBottom="20" paddingTop="20"/> s:layout> ? <s:Panel title="Cadastro de Usuários" width="500"> ? s:Panel> ? <s:Panel width="500" height="100%" title="Listagem de Usuários"> <mx:DataGrid id="dgUsuarios" left="20" right="20" bottom="20" top="20"> mx:DataGrid> s:Panel> ? s:Application> |
09. Conectando a aplicação Adobe Flex ao Java
Em seguida vamos utilizar os novos recursos inseridos no Flash Builder 4 para se comunicar com o Java.
Clique em Windows > Data/Services. Após a aba correspondente se abrir clique em Connect to Data/Service….
Veja que alguns arquivos foram criados automaticamente:

Clique com o botão direito em qualquer ponto da sua Application (não clique nos componentes Panel ou qualquer outro que não seja a Application) e clique em Generate Service Call:

Em seguida selecione o método listaUsuarios():

Vá para o modo de visualização “Source” e veja que um método handler foi criado para manipular o evento CreationComplete da Application.
Agora volte para o modo “Design”, clique com o botão direito no componente DataGrid e em seguida clique em Bind to Data…

Clique no botão OK e veja o resultado:

Finalizamos o código para a listagem dos usuários. Agora precisamos fazer o código que vai inserir os usuários.
Novamente clique com o botão direito do mouse no componente DataGrid e então clique na opção Generate Details Form…


Arrume o posicionamento do formulário de cadastro, altere o label do botão. Em seguida clique com botão direito do mouse sobre o botão e Generate Service Call…

Agora altere o método button_clickHandler que foi gerado automaticamente:
protected function button_clickHandler(event:MouseEvent):void { var usuario:Usuario = new Usuario(); usuario.email = emailTextInput.text; usuario.nome = nomeTextInput.text; usuario.cargo = cargoTextInput.text; insereUsuarioResult.token = usuarioService.insereUsuario(usuario); } |
Com isso já conseguimos inserir usuários na coleção do back-end Java. Agora vamos modificar nosso código para que toda vez que um usuário for inserido os usuários sejam listados novamente no componente DataGrid.

Agora altere o método insereUsuarioResult_resultHandler:
protected function insereUsuarioResult_resultHandler(event:ResultEvent):void { listaUsuariosResult.token = usuarioService.listaUsuarios(); } |
Agora rode sua aplicação e veja o resultado final.
Pronto! A aplicação está rodando perfeitamente.
Como lição de casa, faça com que seja possível remover e alterar um usuário.
Fontes do projeto:
Download do projeto Flex (28 KB)
Download do projeto Java (3.67 MB)
Referências:
- Accessing data services overview
Espero que tenham gostado e até a próxima!































