Esta é sem duvida a grande dor de cabeça nos meus estudos do Flex. Como devem ter reparado eu adoro PHP e Flex, e por isso geralmente nas minhas aplicações com recurso a bases de dados uso sempre o amfPHP para fazer comunicar o Flex com o Backend (php+servicos de bases de dados), mas curiosamente até no exame da Certificação Flex 3, a adobe “puxa a brasa à sua sardinha” e introduz um tópico que vale 16% do exame, e não convém ir para lá sem as minimas noções deste tipo de serviços, e por isso meti mão à obra e decidi investigar um pouco este tal de LCDS.
Como não tenho experiencia com o LCDS, se alguma noção/informação estiver incorrecta façam o favor de deixar um comentário indicando o erro/solução/dica.
Começando:
- O que é o LCDS - LiveCycle Data Services ??
Basicamente é uma “aplicação de segunda camanda”, ou seja, serve de comunicação entre a primeira camada (front-end) e uma possivel terceira camada (backend), que tem como principais objectivos:
- Lidar com grandes quantidades de dados
- Establecer a comunicação entre a parte cliente e parte servidor de uma aplicação
- Ajudar a receber/buscar/guardar dados via RPC (chamadas remotas) e configurações proxy
- Usar o tomcat para servir de servidor de dados.
- Permitir ligações directas a algumas bases de dados sem recurso a linguagem back-end (versões 2.5+)
O funcionamento do LCDS é bem lógico e se já têm uma noção de qualquer serviço AMF como pyAMF ou amfPHP ou blazeDS vão entender o funcionamento bem facilmente, e para esclarecer vejam a imagem seguinte onde é representado a estrutura de uma aplicação FLEX / AIR utilizando o LCDS:
Como podem ver, a tipica estrutura de 3 camadas e semelhante à utililização do amfPHP.
Embora o flex já consiga comunicar directamente com uma linguagem backend, em muitas situações algumas caractereisticas e possibilidades não estão presentes no protocolo AMF/RPC, mas ao utilizar o LCDS não é totalmente dispensável uma linguagem server-side como o php, embora a nova versão 2.5/2.6 do LCDS já consiga comunicar com uma base de dados (usando um driver e sem recorrer a linguagem backend) por vezes torna-se necessário ter um grande conhecimento da sua estrutura e configuração e muitas das “maravilhas” do php/net/python ficam sempre dependentes de a ligação com o LCDS que acaba por funionar como o pyAMF ou amfPHP.
O LCDS possui alguns pontos a reter:
- É uma aplicação J2EE.
- Necessita de um servidor (JBOSS, Apache TomCat)
- Necessita do JAVA
- Muitas vezes não é suportado por planos de alojamento
- Necessita de uma licensa (LCDS ES), embora exista uma versão gratuita. (LCDS Community Edition)
- É necessário alguma paciencia na sua instalação e configuração
- Permite ter 2 ou mais clientes/ aplicações Flex a comunicar com o mesmo serviço LCDS, ideal para chats ou aplicações “infinite-to-one”, ou seja, varias aplicações diferentes que trabalham com os mesmos dados.
- Permite a comunicação com outros servidores servindo como proxy, eliminando assim a tipica falha de segurança da sandbox do flash
- Permite sincornização de dados, caching, paginação e resolução de conflitos usando o componente data management.
Vamos começar, por explicar a instalação do LCDS usando o proprio servidor TOMCAT incluido no download.
Downloads:
LCDS ES em: partir daqui (181 MB)
JDK 6 : http://java.sun.com/javase/downloads/index.jsp (Java SE Development Kit (JDK) 6 Update 10 ) (Vou instalar para futuramente trabalhar com o java)
- Configuração:
Estou a usar Windows Vista:
- JDK 6 - A primeira coisa a fazer é instalar o JDK 6, façam o download e instalem-no com as caracteristicas por defeito,
- LCDS - Vamos agora instalar o LCDS, para isso excutem o ficheiro que fizeram o download “lcds16-win.exe” e quando vos for pedido um numero de serie, cliquem em next, desta forma será instalada a versão gratuita. No passo seguinte escolham :”LiveCycle Data Services With TomCat” que instalará o servidor tomcat, mais simples do que o JBOSS e no qual são baseados os exemplos do LCDS, no passo seguinte coloquem install para terminar a instalação.
Nada vai acontecer no final (estranhamente, visto que no windows XP aparece a configuração do servidor (http://localhost:8400/)), mas nada de grave, porque nesta altura o servidor já está instalado, o meu objectivo agora é fazer uso dos aplicativos de exemplos disponiveis no LCDS, para isso vao ao menu iniciar, e na pasta Adobe->LiveCycle Data Services ES 2.6 e executem: “Start Samples Database“, vai-se abrir uma janela da linha de comandos, simplesmente deixem-na aberta, se a fecharem a base de dados será terminada, de seguida no mesmo menu cliquem em “Start LiveCycle Data Services Server” e deixem a janela aberta, o mesmo se aplica em relação ao fechar desta janela.
E pronto, o nosso servidor LCDS / Tomcat está a correr, basta acederem no browser ao endereço http://localhost:8400/ e vêm a pagina de boas vindas do LCDS, onde podem aceder aos exemplos http://localhost:8400/lcds-samples/ para verem alguns exemplos, é altamente aconselhado ler e executar todas as instruções do testdrive ( http://localhost:8400/lcds-samples/testdrive.htm ), onde podem ver alguns exemplos de aplicações em flex, usando o LCDS.
Quanto à estrutura do servidor, os projectos ficam guardados na directoria de instalação do lcds, normalmente em C:\lcds\tomcat\webapps local este onde devem ser publicados os vossos projectos.
E pronto, agora resta explorarem todos os exemplos, para acederem a cada exemplo é bem simples, basta irem buscar o arquivo: C:\lcds\tomcat\webapps\lcds-samples\WEB-INF\flex-src\flex-src.zip, abrirem o mesmo e extrairem o conteudo para o workspace do vosso flexbuilder, geralmente em: C:\Users\vossoNomedeUtilizador\Documents\Flex Builder 3
Serão extraidos todos os projectos do lcds-samples, estando disponiveis separadamente, por exemplo, para terem acesso ao código fonte do exemplo crm (http://localhost:8400/lcds-samples/crm/index.html) basta fazerem o seguinte no flex builder:
File->New->Flex Project, e fazerem os seguintes passos na sua configuração:
Project Name, usem o nome exacto do projecto que querem, basta verem as directorias estraidas no flex-src, por exemplo crud e de seguinda deixem por defeito o workspace, visto que já está la a pasta crm extraida com os ficheiros fonte. Escolham Web Application, e em Server Type: J2EE com o LiveCycle Data Services e coloquem em next, aí terão de corrigir algumas informações, colocando os dados seguintes:
Root Folder: C:\lcds\tomcat\webapps\lcds-samples
Root URL: http://localhost:8400/lcds-samples/
Context Root: /lcds-samples
Cliquem em “Validate configuration” e cliquem em finish. O vosso projecto aparecerá no explorador do flex builder, mas antes de o testar-mos, o arquivo executavel foi o main.mxml, e teremos que mudar isto, para isso cliquem com o botão direito do rato em cima do ficheiro “companyapp.mxml” e escolham “Set as default Application“, aguardem um pouco e corram o vosso projecto… voilá, temos o LCDS/TomCat integrado no nosso projecto, actualmente os ficheiros de configuração do nosso projecto estão no servidor, em “C:\lcds\tomcat\webapps\lcds-samples\WEB-INF\flex”
E pronto, temos o nosso sistema montado, agora pada cada projecto podem repetir os mesmos passos… resta explorar todos os ficheiros fonte, e principalmente os ficheiros de configuração dos exemplos (o ultimo caminho que coloquei em cima) que guardam todos os promenores da nossa comunicação com o LCDS.
Quanto à pasta WEB-INF e outras de configuração, é das coisas um pouco estranhas para quem nunca trabalhou com o LCDS e similares como blazeDS. Mas vou mostrar a estrutura com duas imagens que só por si exemplificam o seu conteudo.
Onde detalhadamente podem ter uma ideia dos ficheiros/pastas de configuração presentes na pasta WEB-INF:
Num próximo post falarei de cada um destes ficheiros, mas para já é tudo, espero que seja util, entretanto vou dar mais uma vista de olhos a fundo e virei brevemente com um simples exemplo utilizando estas tecnologias…
Espero que seja util.
Abraços.












6 Comentários
Mario, parabens! Eu ando flertando com o Java ja a algum tempo e venho aprendendo relativamente rápido, devido ao fato de estar trabalhando em um projeto que esta sendo desenvolvido em Java. O que não entendo é pq tanto detalhes que tornam o aprendizado tão sofrido. Por outro lado, estou em outra frente trabalhando com uma pessoa que sabe bastante de PHP e que tem me mostrado boas coisas e muitas vantagens dele. Assim, fico em cima do muro: não sei se embrenho mais no PHP ou perco minha paciencia aprendendo o Java! Abração e que venha o final do ano!
Pois é ved, eu andei o fim de semana todo de volta do LCDS e a tentar configura-lo de raiz, o meu primeiro ensaio foi usar o LCDS para ligar a uma base de dados do proprio LCDS, depois de tudo configurado, compilo a aplicação e puff…. Um beco sem saida… erros e mais erros, tantos ficheiros de configuração… enfim, como disse, uma dolorosa aprendizagem… eheheh
Quanto ao php e o seu inseparavel amigo mysql juntamente com o amfphp sem duvida tornam a sua aplicação ao flex muito facil e versátil… enfim, o php têm as suas vantagens, incluido a orientação a objectos que consegue mesmo criar classes para utiliação directa no AS3 via remote object sem recurso ao amfPHP, (como o caso do XML-RPC dos sistemas de blogs) o php é muito versátil, mas enfim… como apenas conheço o “poder” do java por alto, não consigo fazer comparações (apesar de dizerem que o java é muito superior) pelo que por enquanto não tenho qualquer motivo para esquecer tão depressa o nosso amigo PHP..
Mas bom, no final do ano se tudo correr bem ainda vamos discutir isso numa “mesa de bar” bebendo umas cervejas
Grande abraço Ved.
Parabéns pelo post Mário!
Sem dúvida o LCDS tem uns mistérios que só com muita paciência mesmo.
Estou prevendo uma apresentação Integrando o ColdFusion com o LiveCycle Data Services com Flex 3, e espero que possa ajudar, ao menos quem mexe com CF! hehe
Oupa Tofinha, valeu pelo comentário… sem duvida que essa apresentação será bem vinda, até para mim que estou entendendo os “mistérios” do LCDS, principalmente a meia duzia de arquivos de configuração, que ainda me dão muitas volta ao estomago….
heheh
Abraço.
Pois é Mário, espero que esses “mistérios” possam ser simplificados mais para a frente pela Adobe, possibilitando uma adesão maios ao LCDS, consequentemente o BlazeDS.
Mesmo integrado ao CF, tem hora que dar aquela dor de cabeça e configurar cada um dos arquivos!!hehehe
Oupa, ainda bem que não sou só eu (iniciante) a ter os mesmo problemas… venha essa apresentação!!