35
Criando uma aplicação com Flex 4, Java e Blazeds Publicado em janeiro 12, 2011 por Pablo Souza 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 EE 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:\blazeds\tomcat\bin Em seguida inicie o servidor Tomcat: catalina start Após a inicialização do servidor, você verá a janela abaixo:

Criando uma aplicação com Flex 4

Embed Size (px)

Citation preview

Page 1: Criando uma aplicação com Flex 4

Criando uma aplicação com Flex 4, Java e BlazedsPublicado em janeiro 12, 2011 por Pablo Souza

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 EE 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:\blazeds\tomcat\bin

Em seguida inicie o servidor Tomcat:catalina start

Após a inicialização do servidor, você verá a janela abaixo:

Page 2: Criando uma aplicação com Flex 4

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:\eclipse\eclipse.exe

Em seguida vamos criar nosso projeto Java. Clique em:File > New > Dynamic Web Project

Page 3: Criando uma aplicação com Flex 4

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

Page 4: Criando uma aplicação com Flex 4

A seguir a implementação da nossa classe 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;

Page 5: Criando uma aplicação com Flex 4

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

Page 6: Criando uma aplicação com Flex 4

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 */

Page 7: Criando uma aplicação com Flex 4

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:\blazeds\BlazedsConfigBase

Localize agora o arquivo blazeds.war e descompacte-o na pasta que acabamos de criar:Arquivo: C:\blazeds\blazeds.warPasta: C:\blazeds\BlazedsConfigBase

Veja o contéudo da pasta C:\blazeds\BlazedsConfigBase>:C:\blazeds\BlazedsConfigBase\META-INFC:\blazeds\BlazedsConfigBase\WEB-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:\blazeds\BlazedsConfigBase\WEB-INF

Copie o arquivo e os diretórios abaixo para WebContent\WEB-INF, dentro do Eclipse:C:\blazeds\BlazedsConfigBase\WEB-INF\web.xmlC:\blazeds\BlazedsConfigBase\WEB-INF\flex\C:\blazeds\BlazedsConfigBase\WEB-INF\lib\

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.

Page 8: Criando uma aplicação com Flex 4

Nesse momento a estrutura do seu projeto deve estar como na imagem abaixo:

Page 9: Criando uma aplicação com Flex 4

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:WebContent\WEB-INF\web.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>BlazeDS</display-name> <description>BlazeDS Application</description>  <!-- Http Flex Session attribute and binding listener support --> <listener> <listener-class>flex.messaging.HttpFlexSession</listener-class> </listener>  <!-- MessageBroker Servlet --> <servlet> <servlet-name>MessageBrokerServlet</servlet-name> <display-name>MessageBrokerServlet</display-name> <servlet-class>flex.messaging.MessageBrokerServlet</servlet-class> <init-param> <param-name>services.configuration.file</param-name> <param-value>/WEB-INF/flex/services-config.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <!-- begin rdsend rds --> <servlet> <servlet-name>RDSDispatchServlet</servlet-name>

<display-name>RDSDispatchServlet</display-name> <servlet-class>flex.rds.server.servlet.FrontEndServlet</servlet-class>

<init-param><param-name>useAppserverSecurity</param-name><param-value>false</param-value>

</init-param> <load-on-startup>10</load-on-startup> </servlet>  <servlet-mapping id="RDS_DISPATCH_MAPPING"> <servlet-name>RDSDispatchServlet</servlet-name> <url-pattern>/CFIDE/main/ide.cfm</url-pattern> </servlet-mapping>  <servlet-mapping> <servlet-name>MessageBrokerServlet</servlet-name> <url-pattern>/messagebroker/*</url-pattern> </servlet-mapping>  <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> </welcome-file-list>  <!-- for WebSphere deployment, please uncomment -->

Page 10: Criando uma aplicação com Flex 4

<!-- <resource-ref> <description>Flex Messaging WorkManager</description> <res-ref-name>wm/MessagingWorkManager</res-ref-name> <res-type>com.ibm.websphere.asynchbeans.WorkManager</res-type> <res-auth>Container</res-auth> <res-sharing-scope>Shareable</res-sharing-scope> </resource-ref> --> </web-app>

Ainda dentro do Eclipse localize e abra o arquivo:WebContent\WEB-INF\flex\remoting-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.UsuarioService</source> </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:\blazeds\tomcat\webapps

Crie uma pasta para o projeto Java:C:\blazeds\tomcat\webapps\GerenciaUsuario

Page 11: Criando uma aplicação com Flex 4

Agora dentro do Eclipse, clique sobre a pasta WEB-INF e a copie Edit > Copy.

Page 12: Criando uma aplicação com Flex 4

Cole então seu conteúdo na pasta criada no passo acima:C:\blazeds\tomcat\webapps\GerenciaUsuario

Agora reinicie o servidor de aplicação Tomcat para subir o projeto que acabamos de fazer deploy:catalina stopcatalina 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.

Page 13: Criando uma aplicação com Flex 4

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

Page 14: Criando uma aplicação com Flex 4

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.

Page 15: Criando uma aplicação com Flex 4

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"/>

Page 16: Criando uma aplicação com Flex 4

</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>

Page 17: Criando uma aplicação com Flex 4

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….

Page 20: Criando uma aplicação com Flex 4

Veja que alguns arquivos foram criados automaticamente:

Page 21: Criando uma aplicação com Flex 4

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.

Page 22: Criando uma aplicação com Flex 4

Agora volte para o modo “Design”, clique com o botão direito no componente DataGrid e em seguida clique em Bind to Data…

Page 23: Criando uma aplicação com Flex 4

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…

Page 26: Criando uma aplicação com Flex 4

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

Page 27: Criando uma aplicação com Flex 4

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.

Page 28: Criando uma aplicação com Flex 4

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!

Esta entrada foi publicada em BlazeDS, Flex, Java. ligação permanente. ← Dica Flex – O padrão Factory MethodDica Flex – Usando a tag ArrayElementType →

13 Respostas a Criando uma aplicação com Flex 4, Java e Blazeds

1. Maicon diz:

fevereiro 11, 2011 ás 5:12 pm

Ola, gostaria se possível que tirassem uma duvida: Na parte (9) em que eu vou conectar a aplicaçao flex com o java e vou em Windows > Data/Services. Após a aba correspondente se abrir clico em Connect to Data/Service.. qndo dou next aparece uma tela de autenticação e pede para eu fazer login. Qual seria este??

Obrigado.

Reply

o admin diz:

fevereiro 12, 2011 ás 1:47 pm

Verifique a configuração que vc fez no WebContent\WEB-INF\web.xml

Abs!

Reply

nemézio diz:

fevereiro 18, 2011 ás 3:48 pm

Page 29: Criando uma aplicação com Flex 4

Tb não consigo passar desse pedaço… coloquei a mesma configuração do tutoria no web.xml, mas to quebrando cabeça…Dá Error executing RDS command. Status Code: 407

Reply

admin diz:

fevereiro 18, 2011 ás 4:54 pm

No problema anterior ele colocou o mapeamento do Servlet errado, esqueceu de setar o “param-value” para “false” no web.config copiado do blazeds.war

Verifique se esse é o seu problema também.

Abs!

Reply

Pablo Souza diz:

fevereiro 18, 2011 ás 5:00 pm

Você pode tambem baixar o projeto de exemplo que está anexo e verificar se está funcionando.

Abs!

Reply

2. Gustavo diz:

abril 6, 2011 ás 12:27 am

Vc nao ensinou a especificar o workspace do eclipse e do flashbuilder, pode tirar minha duvida?E quando eu tento conectar o BlazeDS, ele coloca uma mensagem….’Unable athenticate RDS with current security information’ pode me explicar?

Reply

o admin diz:

abril 6, 2011 ás 8:08 am

Olá Gustavo!

Page 30: Criando uma aplicação com Flex 4

Quanto ao workspace, você pode escolher qualquer pasta de sua preferência, é indiferente para o tutorial. É o local onde será criado o seu projeto, tanto no Eclipse quanto no FlashBuilder.Com relação ao erro que você citou, refaça o passo 6 do tutorial, copiando o web.xml que coloquei no tutorial para o seu projeto.

Você ainda pode fazer o download dos projetos Flex e Java para comparar o que está diferente no seu projeto.

Abs!

Reply

3. Antonio diz:

abril 7, 2011 ás 11:39 am

estou com um problema na integração entre o flex + java (com BlazeDS) a rede aqui tem proxy, e com o ambiente todo configurado (em tese), quando clico em Data/Services e escolho BlazeDS, aparece uma tela para login.já tentei colocar no web.xml false para useAppserverSecutiry, e nessa tela de Autenticação selecionar o []No password requiredmas continua dando um erro: Error executing RDS command. Status Code : 407 , Reason : Proxy Authenticaton Required.teria algum conselho?

Reply

o admin diz:

abril 7, 2011 ás 11:48 am

Esse passo que você descreveu que já fez deveria ser suficiente.

Tente comentar o trecho de configuração do servlet RDSDispatchServlet

Você tentou baixar o projeto java que eu coloquei anexo ao post e subi-lo no seu ambiente. Assim você pode procurar onde está a diferença entre os projetos, analisando os arquivos de configuração.

abs!

Reply

Antonio diz:

abril 7, 2011 ás 2:51 pm

Page 31: Criando uma aplicação com Flex 4

Pois éh,..!mas então… tentei comentar todo o bloco do RDSDispatchServlet, reiniciei o Catalina, e mesmo assim nada!Se não for muito incomodo vc poderia anexar tmb no post o tomcat e o jdk.

estou com os dois aqui já porém pra desencargo de consciência ajudaria… pois já tentei de várias formas resolver isso e até agora nada!

Qdo eu entrava em http://localhost:8400/GerenciaUsuario/messagebroker/amf eram exibidos 3 erros os quais não consigo mais vê-los pois agora até o Catalina tá dando erro na inicialização:

*com o bloco acima citado, comentado ou não:

–> **** MessageBrokerServlet in application ‘BlazeDS’ failed to initialize due to runtime exception: Exception: flex.messaging.config.ConfigurationException: Connection timed out: connect

e acabou de aparecer outro agora na inicialização… “07/04/2011 13:43:46 org.apache.catalina.core.AprLifecycleListener initINFO: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: c:\Arquivos de programas\Java\jdk1.6.0_24\bin;.;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\blazeds\tomcat\bin;C:\blazeds\tomcat”

parece que ao invés de melhorar minhas tentativas estão apenas piorando a situação!!!

Reply

admin diz:

abril 7, 2011 ás 3:13 pm

Entra no Gmail que te ajudo. Já te add aqui!!!

abs!

Reply

Antonio diz:

abril 7, 2011 ás 11:08 pm

Page 32: Criando uma aplicação com Flex 4

Salve salve…!!!Pois éh… depois de muita luta… está funcionando…!!!

Para que todos saibam como resolver o problema do erro 407 descrito acima, quando o ambiente de desenvolvimento estiver sob um proxy…

O que acontece é o seguinte, mesmo colocando para o FB ou as configurações padrões do sistema de proxy para não utilizar o proxy para conexões locais, o FB utiliza essas configurações para realizar a conexao RDS no service BlazeDS, sendo assim, ou desabilita o proxy das configurações gerais do sistema ou nas configurações de proxy do Flash Builder coloca como Direct ao inves de Manual ou Native…!!!

Vale resaltar que a ajuda de nosso ilustrissimo Admin foi vital para a compreensão do ambiente o que me fez perceber juntamente com um outro colega de trabalho esse problema, então creditos sejam dados ao nosso Admin e ao Wallas (morais.intec).

coloquei o blog no meu leitor de rss=Dparabens! teria funcionado de primeira se não fosse o probleminha com o meu proxynota 10!

admin diz:

abril 8, 2011 ás 11:23 am

Valeu !!!! =)