Arquivo

Arquivo da Categoria ‘Dicas’

Trabalhando com FlexSession

1, abril, 2009 admin 6 comentários

Salve pessoal,

Após ter recebidos alguns e-mails e ter visto a mesma dúvida nas listas de discuções resolvi criar um post sobre Gerenciamento de Sessão em aplicações Flex.

Apenas resaltando este é um assunto muito complexo este post não irá sanar todas as suas duvidas, mais irá lhe dar um Norte nos seus estudos. Em caso de duvidas leia a documentação do BlazeDS ou mande um e-mail.

Então vamos lá.


Gereciamento de sessão usando BlazeDS

O blazeDS nos fornece três classes para sincronização entre a aplicação Flex e Servidor, são estas: FlexClient, MessageClient e FlexSession.
Segue um breve resumo de cada ojbeto.

# FlexClient

Toda aplicação Flex escrita em MXML ou em ActionScript, ambas são compiladas e incluidas dentro de um SWF. Quando o SWF se conecta com o servidor BlazeDS, o objeto flex.messaging.client.FlexClient é criado para representar o SWF no servidor.
O arquivo SWF e o objeto FlexClient tem um relacionamento um-para-um (one-to-one), deste modo todo
FlexClient tem um identificador unico em sua propriedade ID, no qual o servidor BlazeDS gera.

# MessageClient

Se uma aplicação Flex contém um componente flex.messaging.Consumer, o servidor irá criar uma correspondente instância do objeto flex.messaging.MessageClient para representar a subscrição do estado do componente Consumidor (Consumer).
Todo objeto MessageClient tem um identificador único chamado clienteId.
BlazeDS pode gerar automaticamente um valor para o clientId, mas a aplicação Flex também pode definir um valor para a propriedade Consumer.clientId antes de chamar o metodo Consumer.subscribe().

# FlexSession

Um objeto FlexSession representa a conexão entre a aplicação Flex e o Servidor. Este ciclo de vida depende diretamente do protocolo subjacente, no qual é determinado pelos canais e parâmetros utilizados no Cliente e Servidor, respectivamente.
Se uma base de canal HTTP, tais como AMFChannel ou HTTPChannel, é utilizada na aplicação Flex, um objeto FlexSession é embutido numa sessao HTTP.
Se um canal HTTP se conecta a um servlet, o subjacente a sessão HTTP é um objeto J2EE HttpSession.

Todo este pequeno resumo acima pode parecer um bixo de 1000 cabeça mais conforme você for usando em
aplicações tudo isso ficará claro e simples.

# Relacionamento entre FlexClient, MessageClient e FlexSession

Um objeto FlexClient pode ter um ou mais intancias de FlexSession a ela associados, em função dos canais que Flex a aplicação utiliza.
Por exemplo, se a aplicação Flex usa um HTTPChannel e um FlexSession isso representa apenas um HTTP session criado pelo HTTPChannel no servidor.
Um FlexSession também pode ter um ou mais objeto FlexClient associadas a ele. Por exmeplo, quando o usuario abre a aplicação Flex em duas tabs no navegador dois objetos FlexClient são criados, porém o servidor considera dois separadores partilhando a mesma subjacente HTTP sessão.

Em termos de hierarquia, FlexClient e FlexSession são pares que existe uma relação entre pais e filhos FlexClient / FlexSession e MessageClient.

Resaltando Novamente: Sei que os explicações acima são bem complexas por isso é interessante que vocês parem um tempo e
leiam a documentação do BlazeDS para um maior entendimento do assunto, este post tem o intuito apenas de abrir a mente e dar um Norte.

## Exemplo Rápido e Fácil.

# Usando FlexContext com FlexSession and FlexClient.

A classe utilitária flex.messaging.FlexContext expõe o contexto atual sobre a execução do servidor, a mesma fornece acesso ao FlexSession e ao FlexClient.
Ela também fornece contexto global através do acesso MessageBroker, ServletContext, e ServletConfig instâncias.
O seguinte exmplo mostra uma classe Java que chama o metodo FlexContext.getHttpRequest() e pega do mesmo o objeto HTTPServletRequest e também chama o metodo FlexContext.getFlexSession() para obter o objeto de sessao atual.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package br.com.fabielprestes
 
import flex.messaging.*;
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
 
public class SessionCorrente {
	public HttpServletRequest request;
	public FlexSession session;
 
	public SessionCorrente() {
		request = FlexContext.getHttpRequest();
		session = FlexContext.getFlexSession();
	}
 
	public String getSessionId() throws Exception {
		String s = new String();
		s = (String) session.getId();
		return s;
	}
 
	public String getHeader(String h) throws Exception {
		String s = new String();
		s = (String) request.getHeader(h);
		return h + "=" + s;
	}
}

Então é isso pessoal na proxima parte irei demonstrar como utilizar o objeto ExternalInterface para trabalhar com as sessões, fiquem atento.

Dúvidas ou Sugestões deixem seu comentário.

Categories: Dicas, Flex Tags:

Mock para exame Flex/AIR 3 - Grátis

27, março, 2009 admin Sem comentários

Salve pessoal,

Hoje recebi um link muito legal do Mario Jr.
A empresa PXL Designs em parceria com a Rich Desktop Solutions criaram o mock para a certificação Flex/Air.
Este Mock é free contudo ainda esta em versão Beta.

Download

Abraços

Categories: Certificação Flex, Dicas, Flex, Notícias Tags:

Carrossel 3D com Flash Player 10

9, março, 2009 admin Sem comentários

Daew pessoal,

Estava hoje vendo uns blogs de Flex e achei um post no qual fala sobre efeitos 3D nativos do
Flash Player 10. Achei bem interessante segue o Link.

Categories: Dicas, Notícias Tags: