terça-feira, 22 de junho de 2010

Flex e Java usando BlazeDS


Boas pessoal..
Em aplicações web feitas em Flex é muito comum o uso de uma camada intermediária que possa acessar o sistema ou uma base de dados, o que tenho visto pr aí é o uso do PHP como esta camada intermediária, eu mesmo uso em projetos atuais o PHP, mas em certa ocasião tive de usar o Java, pois a base era Informix, então assim como o AMFPHP faz é a ponte entre o Flex e o PHP, o BlazeDs faz entre o Flex e o Java.
Neste post daremos coordenadas mais exutas possível.
Será assim:
Daremos as instruções iniciais, a implementação ( ou modelo do código ) e um exemplo.
Então vamos lá.


Preparando o Ambiente:

• Instalar o TomCat (presente no pacote de instalação do NetBeans)
• Criar uma pasta do projeto na pasta [@tomcat/webapps/]
• Descompactar o blazeds.war na pasta [@tomcat/webapps/[projeto]/]
• Editar o arquivo [@tomcat/webapps/[projeto]/WEB-INF/flex/remoting-config.xml]
implementação:

<destination id="[id destination]">
    <properties><source>[package].[class]</source></properties>
</destination>
onde:
id destination
        Este id será enxergado pelo Flex no atributo [destination@RemoteObject]
package
        Nome do Pacote da classe no Lado JAVA
class
        Nome da Class no Lado JAVA
ex.:

<destination id="dest_id">
    <properties><source>Pjava.Valores</source></properties>
</destination>


Lado FLEX:

• Criar um novo projeto.
• Instanciar o objeto RemoteObject.
implementação:

<mx:RemoteObject id="[identificador]"
    endpoint="http://[servidor]:[porta]/[pasta do projeto]/messagebroker/amf"
    destination="[id destination]"
    showBusyCursor="true"
    fault="[caso falhar]"
    result="[caso sucesso]"/>
onde:
identificador        identificador do objeto RemoteObject
servidor
        nome ou IP do servidor
porta
        porta em que está o serviço do TomCat
id destination    →
    Este é o id da tag destination no arquivo:
@tomcat/webapps/[projeto]/WEB-INF/flex/remoting-config.xml
caso falhar
    →    O evento é disparado quando ocorre alguma falha na transação
caso sucesso
    →    O evento é disparado quando a transação é bem sucedida, a classe [event] trás o resultado no atributo [result].
implementação:    event.result
ex.:

<mx:RemoteObject id="rm"
    endpoint="http://localhost:8080/meuprojeto/messagebroker/amf"
    destination="dest_id"
    showBusyCursor="true"
    fault="Alert.show('Falha na transação')"
    result="{Alert.show(event.result.toString())}"/>
• Envocar o RemoteObject.
implementação:

<mx:[objeto] click="{ identificador.atributo@Java }"/>
onde:
objeto
    →    Objeto do Flex
identificador
    →    O ID do RemoteObject
atributo@Java
    →    Atributo, Método ou evento no Lado JAVA
ex.:

<mx:Button click="{rm.getValor()}"/>
• Compilar o projeto


Lado JAVA:

• Criar um novo projeto.
• Criar uma nova classe (esta classe é chamada pelo destination)
• Criar atributos, métodos ou eventos de acordo com a necessidade
implementação:

public String [atributo]    =    [valor];
    public String [método]() {
    return [valor];
}
onde:
atributo
    →    Nome do atributo (Este deve ser o nome chamado no objeto de envocação no Lado FLEX)
método
    →    Nome do método    (Este deve ser o nome chamado no objeto de envocação no Lado FLEX)
valor
    →    Valor que será retornado ao Flex
ex. de método:

public String getValor(){
    return "meu valor";
}
• Compilar o projeto


Ainda no Ambiente:

• Copiar o conteúdo da pasta [[projeto flex]/bin-debug/] para a pasta [@tomcat/webapps/[projeto]/]
• Copiar as os arquivos *.class do projeto JAVA para a pasta [@tomcat/webapps/[projeto]/WEB-INF/class/]


Executando:

• Acessar url: [http://[servidor]:[porta]/webapps/[projeto]/[flex].html]


Diagrama:

Muito bem pessoal, está aí mais um post, aproveitem.
Até o próximo...

0 comentários:

Postar um comentário