Professional Documents
Culture Documents
Hospedagem é na Insite
60 GB de espaço, 1200 GB de tráfego
Suporte por 0800 e 20 dias de teste
www.insite.com.br
1 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
JAN Adobe BlazeDS, Adobe Flex, Hibernate, Java, RIA, Spring Framework
Add Categorias Arquivos
27 Integrando Adobe Flex + BlazeDS + SpringFramework +
Hibernate - Uma Solução OpenSource para Sistemas Web. Adobe (14) abril 2008
(Parte 2 - Final) Adobe AIR (2) março 2008
Adobe Flex (13) janeiro 2008
Adobe BlazeDS (2)
dezembro 2007
AMFPHP (2)
novembro 2007
Google (1) setembro 2007
Java (3) julho 2007
Hibernate (2)
Spring Framework (2)
PHP (3)
RIA (2)
Vários (5)
Posts recentes
Porquê Flex? / Why Flex?
Manifesto Flex brasil
Integrando Adobe Flex + BlazeDS +
SpringFramework + Hibernate - Uma Solução
OpenSource para Sistemas Web. (Parte 2 - Final)
Integrando Adobe Flex + BlazeDS +
SpringFramework + Hibernate - Uma Solução
OpenSource para Sistemas Web. (Parte 1)
Forum sobre AdobeFlex!
Tags
2 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
Olá Pessoal!
Primeiro lugar, quero agradecer a todos pelo feedback do post anterior, isto é motivante e
me dá ânimo em concluir este, e outros que virão.
Configurar o Spring para usar o Hibernate para abstrair nosso banco de dados;
3 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
Como não sou fã de ficar re-escrevendo a roda, vou tentar dar a você leigo em Spring, um
caminho para estudar.
Primeiro de tudo, leia este artigo feito pelo Phillip Calçado (Shoes)
apostila-spring.pdf
Valeu Ebertom pela hospedagem! =)
Outros Tutoriais
http://www.javafree.org/content/view.jf?idContent=46
http://www.devmedia.com.br/articles/viewcomp.asp?comp=6627
http://www.devmedia.com.br/articles/viewcomp.asp?comp=6628
http://www.devmedia.com.br/articles/viewcomp.asp?comp=6653
Spring Annotations
http://blog.interface21.com/main/2006/11/28/a-java-configuration-option-
for-spring/
http://weblogs.java.net/blog/seemarich/archive/2007/11
/annotation_base_1.html
Exemplos de códigos
http://paulojeronimo.com/arquivos/tutoriais/tutorial-spring-framework.zip
http://www.java2s.com/Code/Java/Spring/CatalogSpring.htm
Documentação
The Spring Framework - Reference Documentation
Bom acredito que se você que está afim de conhecer o SpringFramewok, com esses Link's
já é possível entender quase tudo o que ele pode oferecer a sua arquitetura. Lembrando que
não é recomendável seguir com este artigo, sem antes entender como funciona IoC, AOP,
DAO, com o SpringFramework.
4 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
5 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
Como eu já disse, uma vez que já existe um bom conteúdo sobre Hibernate na Internet, não
há a necessidade de re-escrever, por isso vou lhe dar a você leigo em Hibernate uma
sequência de Link que irá te ajudar a entender este poderoso Framework.
Outros Tutoriais
http://simundi.blogspot.com/2007/09/criar-uma-aplicao-com-hibernate.html
http://www.hibernate.org/hib_docs/v3/reference/en/html/queryhql.html
http://www.hibernate.org/hib_docs/tools/reference/en/html/plugins.html
http://www.guj.com.br/posts/list/7249.java
Pacotão de PDF's
http://br.groups.yahoo.com/group/java-br/files/Hibernate/
Exemplos de código
http://www.java2s.com/Code/Java/Hibernate/CatalogHibernate.htm
Documentação
http://www.hibernate.org/hib_docs/v3/reference/en/html/
Ok, partindo do princípio que você já entendeu como funciona o Hibernate, e o Spring,
vamos ao código! +)
Requerimentos:
6 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
Instale os plugin's estes opcionais na verdade este artigo não fará uso deles, mas pensando
no futuro seria interessante fazer uso deles.
Após isso, abra seu projeto no Eclipse que nós tinhamos criado anteriormente, O JavaFlex.
7 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
8 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
*APLAIN
maioria
TEXT
das libs podem ser encontrada no arquivo compactado que você baixou do
Spring. Lembrando também que o modelo de estilo de projeto criado no Eclipse, Dynamic
Web Project, já adiciona automaticamente ao Classpath do projeto ao você colar as libs
nesta pasta.
Como nós já tinhamos modelado um caso de uso chamado Cargo, vamos agora criar um
banco de dados para o nosso pequeno sistema.
Abra seu MySql, e execute este script sql que criará a base de dados chamada JavaFlex, e
também a tabela JAVAFLEX_CARGO;
CODE:
1. --
2. -- Banco de Dados: `javaflex`
3. --
4. CREATE DATABASE `javaflex` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
5. USE `javaflex`;
6.
7. --
8. -- Estrutura da tabela `javaflex_cargo`
9. --
10.
11. CREATE TABLE `javaflex_cargo` (
12. `ID_CARGO` int(10) unsigned NOT NULL auto_increment,
13. `DS_CARGO` varchar(50) collate utf8_unicode_ci NOT NULL,
14. PRIMARY KEY (`ID_CARGO`)
15. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=
9 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
Com o banco
PLAIN TEXTde dados criado, vamos mapear a tabela no banco, com o nosso Entity Cargo,
para isso, crie um package chamado:
com.digows.artigos.JavaFlex.model.repository.hibernate.hbm
Neste package irá conter todos os nossos mapeamentos em xml, alguns preferem fazer
uso de annotations, só que pessoalmente não gosto de acoplar códigos de annotations
em meus beans de negócio, prefiro delegar a função Mapeamento a arquivos xml's.
Cargo.hbm.xml
XML:
1. <?xml version="1.0" encoding="UTF-8"?>
2. <!DOCTYPE hibernate-mapping PUBLIC
3. "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
4. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
5. <hibernate-mapping>
6. <class name="com.digows.artigos.JavaFlex.model.entity.Cargo"
7. table="javaflex_cargo">
8.
9. <id name="idCargo" column="ID_CARGO" type="long">
10. <generator class="native" />
11. </id>
12.
13. <property name="dsCargo" column="DS_CARGO" type="string"
14. not-null="true" length="50" />
15. </class>
16. </hibernate-mapping>
10 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
PLAIN TEXT
Perceba que estamos mapeando nosso entity Cargo que foi criado no post anterior com a
tabela JAVAFLEX_CARGO criada recém.
com.digows.artigos.JavaFlex.model.repository.hibernate
Este package irá conter classes que implementam o Pattern DAO usando o
Hibernate. Métodos de CRUD e querys em geral usando o Hibernate deverão estar
neste pacote estes separados por casos de uso.
Neste mesmo package, vamos criar um DAO usando o hibernate para o nosso entity cargo,
para isso, crie uma classe java chamada CargoHibernateDao, e adicione o seguinte
conteúdo:
CargoHibernateDao.java
11 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
JAVA:
1. package com.digows.artigos.JavaFlex.model.repository.hibernate;
2.
3. import java.util.List;
4.
5. import org.hibernate.SessionFactory;
6. import org.springframework.beans.factory.annotation.Autowired;
7. import org.springframework.beans.factory.annotation.Qualifier;
8. import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
9. import org.springframework.stereotype.Repository;
10.
11. import com.digows.artigos.JavaFlex.model.entity.Cargo;
12. import com.digows.artigos.JavaFlex.model.repository.CargoRepository;
13.
14. @Repository(value="cargoRepository")
15. public class CargoHibernateDao extends HibernateDaoSupport
16. implements CargoRepository {
17.
18. @Autowired
19. public CargoHibernateDao(@Qualifier("sessionFactory")SessionFactory factory
20. super.setSessionFactory(factory);
21. }
22.
23. public Cargo save(Cargo p_cargo) {
24. getHibernateTemplate().saveOrUpdate(p_cargo);
25. return p_cargo;// ID POPULADA
26. }
27.
28. public void remove(Cargo p_cargo) {
29. getHibernateTemplate().delete(p_cargo);
30. }
31.
32. public Cargo findById(Cargo p_cargo) throws Exception {
33. long id = p_cargo.getIdCargo();
34. p_cargo = (Cargo) getHibernateTemplate().get(Cargo.class, p_cargo.
35.
36. if (p_cargo == null)
37. throw new Exception("O Cargo com a ID: "+id+" do(a) "+Cargo.class
38. return p_cargo;
39. }
40.
12 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
PLAIN TEXT
Perceba que esta implementa apenas métodos de acesso ao banco de dados usando o
hibernate. Nesta classe faço uso de annotations para que o container Spring faça o wire dos
beans.
@Repository
@Autowired
@SuppressWarnings
Perceba que esta classe implementa uma interface, está interface implementa o pattern
Repository, este padrão já causou muita polêmica em forums Java como o GUJ por
exemplo, recomendo a leitura deste post para entender o padrão:
http://blog.caelum.com.br/2007/06/09/repository-seu-modelo-mais-orientado-
a-objeto/
com.digows.artigos.JavaFlex.model.repository
Este package irá conter interfaces do tipo repository que dará comportamentos a
DAO's sejam elas implementadas por DAO's Hibernate, DAO's JDBC, DAO's iBatis e
etc...
Neste mesmo pacote, crie uma interface chamada CargoRepository com o seguinte
conteúdo:
CargoRepository.java
13 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
JAVA:
1. package com.digows.artigos.JavaFlex.model.repository;
2.
3. import java.util.List;
4. import com.digows.artigos.JavaFlex.model.entity.Cargo;
5.
6. public interface CargoRepository {
7.
8. void remove(Cargo p_cargo);
9. Cargo save(Cargo p_cargo);
10. Cargo findById(Cargo p_cargo) throws Exception;
11. List<cargo> getList();
12. }
PLAIN TEXT
Ok! nossa persistência já foi programada, vamos agora alterar a classe CargoService que foi
criado no post anterior, para que se comporte como uma classe de serviço gerenciada pelo
container Spring.
CargoServiceImpl.java
14 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
JAVA:
1. package com.digows.artigos.JavaFlex.model.service;
2.
3. import java.util.List;
4.
5. import org.springframework.beans.factory.annotation.Autowired;
6. import org.springframework.stereotype.Service;
7. import org.springframework.transaction.annotation.Propagation;
8. import org.springframework.transaction.annotation.Transactional;
9.
10. import com.digows.artigos.JavaFlex.model.entity.Cargo;
11. import com.digows.artigos.JavaFlex.model.repository.CargoRepository;
12.
13. @Service(value="cargoService")
14. @Transactional(propagation=Propagation.REQUIRED, rollbackFor=Exception.class
15. public class CargoServiceImpl implements CargoService {
16.
17. private CargoRepository cargoRepository;
18.
19. @Autowired
20. public void setCargoRepository(CargoRepository cargoRepository) {
21. this.cargoRepository = cargoRepository;
22. }
23.
24. public Cargo save(Cargo p_cargo) throws Exception {
25. try {
26. this.cargoRepository.save(p_cargo);
27. return p_cargo;
28. } catch (Exception e) {
29. throw new Exception("Não foi possível salvar." +e.getCause())
30. }
31. }
32.
33. public void remove(Cargo p_cargo) throws Exception {
34. try {
35. this.cargoRepository.remove(p_cargo);
36. } catch (Exception e) {
37. throw new Exception("Não foi possível excluir." +e.getMessage
38. }
39. }
40.
15 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
PLAIN TEXT
Perceba que é uma classe de serviço simples, esta apenas tem a funcão de coodernar os
Entities de domínio e fazer a persistência atráves de um repository.
@Service
@Transactional
Como o próprio nome diz, é um estereótipo que delega ao container que esta classe de
serviço deve ser transicional.
@Autowired
A anotação @Autowired é usada para a injeção de depêndencia que será feita pelo
container de uma implementação da interface CargoService.
Nessa camada de serviço faço uso também do Pattern DIP (Dependency Inversion
Principle), por isso esta classe é uma implementação (CasoDeUsoServiceImpl) de uma
interface de serviço, no caso a CargoService.
CargoService.java
16 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
JAVA:
1. package com.digows.artigos.JavaFlex.model.service;
2.
3. import java.util.List;
4.
5. import com.digows.artigos.JavaFlex.model.entity.Cargo;
6.
7. public interface CargoService {
8.
9. void remove(Cargo p_cargo) throws Exception;
10. Cargo save(Cargo p_cargo) throws Exception;
11. Cargo findById(Cargo p_cargo) throws Exception;
12. List<cargo> getList() throws Exception;
13. }
17 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
PLAIN TEXT
Ok, com estes passos realizados, já concluímos a implementação do nosso model. A
estrutura final deverá ser esta:
No post anterior, configuramos o Tomcat para utilizar apenas o BlazeDS, agora precisamos
adicionar mais as configurações do SpringFramework.
web.xml
18 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
XML:
1. <?xml version="1.0" encoding="UTF-8"?>
2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3. xmlns="http://java.sun.com/xml/ns/javaee"
4. xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
5. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
6. id="WebApp_ID" version="2.5">
7.
8. <display-name>JavaFlex</display-name>
9.
10. <!--
11. ///////////////////////////////
12. Configuracao Spring 2.5
13. ///////////////////////////////
14. -->
15. <context-param>
16. <param-name>contextConfigLocation</param-name>
17. <param-value>
18. /WEB-INF/applicationContext.xml
19. </param-value>
20. </context-param>
21.
22. <listener>
23. <listener-class>
24. org.springframework.web.context.ContextLoaderListener
25. </listener-class>
26. </listener>
27. <listener>
28. <listener-class>
29. org.springframework.web.context.request.RequestContextListener
30. </listener-class>
31. </listener>
32.
33. <!--
34. ///////////////////////////////
35. Configuracao do BlazeDS
36. ///////////////////////////////
37. -->
38. <context-param>
39. <param-name>flex.class.path</param-name>
40. <param-value>/WEB-INF/flex/hotfixes</param-value>
19 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
PLAIN TEXT
Perceba na configuração do Spring, ele faz referência a um arquivo chamado
applicationContext.xml, este arquivo é o que contém as configurações do Spring em si,
então no mesmo diretório que se econtra o web.xml, crie um arquivo com o nome de
applicationContext.xml e coloque este conteúdo:
applicationContext.xml
20 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
XML:
1. <?xml version="1.0" encoding="UTF-8"?>
2. <beans xmlns="http://www.springframework.org/schema/beans"
3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4. xmlns:p="http://www.springframework.org/schema/p"
5. xmlns:context="http://www.springframework.org/schema/context"
6. xmlns:jee="http://www.springframework.org/schema/jee"
7. xmlns:tx="http://www.springframework.org/schema/tx"
8. xsi:schemaLocation="
9. http://www.springframework.org/schema/beans http://www.springframework.or
10. http://www.springframework.org/schema/context http://www.springframework.
11. http://www.springframework.org/schema/jee http://www.springframework.org/
12. http://www.springframework.org/schema/tx http://www.springframework.org/s
13. <!--
14. //////////////////////////////////////
15. Integração do Spring com o Hibernate
16. //////////////////////////////////////
17. -->
18.
19. <!--
20. Carregamento do Arquivo de Configuracoes do JDBC
21. -->
22. <context:property-placeholder location="classpath:jdbc.properties" />
23.
24. <!--
25. Configuracao do DataSource
26. -->
27. <bean id="dataSource"
28. class="org.springframework.jdbc.datasource.DriverManagerDataSource"
29. <property name="driverClassName">
30. <value>${jdbc.driverClassName}</value>
31. </property>
32. <property name="url">
33. <value>${jdbc.url}</value>
34. </property>
35. <property name="username">
36. <value>${jdbc.username}</value>
37. </property>
38. <property name="password">
39. <value>${jdbc.password}</value>
40. </property>
21 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
PLAIN TEXT
Perceba que as configurações do banco de dados usado, delego a um arquivo .properties,
também vou precisar configurar o log4j para a impressão de log's. Por estética o bacana
seria gerar um novo source-path que contenha tais arquivos properties.
Selecione a pasta resources, clique em ok, e marque a opção Allow output folders
for source folders, e ok.
jdbc.properties
CODE:
1. # Properties file com as configuracoes do JDBC.
2. # Aplicado pelo PropertyPlaceholderConfigurer do Spring
3.
4. jdbc.driverClassName=com.mysql.jdbc.Driver
5. jdbc.url=jdbc:mysql://localhost:3306/javaflex
6. jdbc.username=root
7. jdbc.password=
8.
9. #Properties que determina o dialeto do Banco de Dados.
10. hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
PLAIN TEXT
e outro arquivo chamado log4j.properties com este conteúdo:
log4j.properties
22 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
CODE:
1. ### direct log messages to stdout ###
2. log4j.appender.stdout=org.apache.log4j.ConsoleAppender
3. log4j.appender.stdout.Target=System.out
4. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
5. log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
6.
7. # set root logger level to debug and its only appender to mtf
8. log4j.rootLogger=INFO,development
9.
10. # only for development purposes
11. log4j.appender.development=org.apache.log4j.ConsoleAppender
12. log4j.appender.development.layout=org.apache.log4j.PatternLayout
13. log4j.appender.development.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss
14.
15. log4j.logger.noModule=FATAL
16. log4j.logger.org.springframework=WARN
17.
18. # Log JDBC bind parameter runtime arguments
19. log4j.logger.org.hibernate.type=DEBUG
23 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
PLAIN TEXT
Uma outra modificação é necessária, está a mais importante, pois delega ao Blaze, que
existe uma factory de beans criada pelo Spring.
Essa factory deve ser implementada, porém já existe pronto na internet para uso, esta
pode ser encontrada aqui:
com.digows.artigos.JavaFlex.controller
*O nome controller ficou sugestivo aqui, uma vez que está factory não tem
comportamentos de um controller, porém como o Flex não faz uso do controller para
controlar as actions que também não existe, achei bacana preservar o package
colocando a factory de beans do Spring que será usada pelo Blaze neste pacote. Se
alguém tiver uma idéia melhor de onde colocar a classe, estou aceitando opniões.
services-config.xml
24 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
XML:
1. <?xml version="1.0" encoding="UTF-8"?>
2. <services-config>
3. <services>
4. <service-include file-path="remoting-config.xml" />
5. </services>
6.
7. <!-- Spring factory registration -->
8. <factories>
9. <factory id="spring"
10. class="com.digows.artigos.JavaFlex.controller.SpringFactory"/>
11. </factories>
12.
13. <channels>
14. <channel-definition id="channel-amf"
15. class="mx.messaging.channels.AMFChannel">
16. <endpoint
17. url="http://{server.name}:{server.port}/{context.root}/messagebroker/amf"
18. class="flex.messaging.endpoints.AMFEndpoint" />
19. <properties>
20. <polling-enabled>false</polling-enabled>
21. </properties>
22. </channel-definition>
23. </channels>
24.
25. <logging>
26. <target class="flex.messaging.log.ConsoleTarget"
27. level="Error">
28. <properties>
29. <prefix>[BlazeDS]</prefix>
30. <includeDate>true</includeDate>
31. <includeTime>false</includeTime>
32. <includeLevel>true</includeLevel>
33. <includeCategory>true</includeCategory>
34. </properties>
35. <filters>
36. <pattern>Endpoint.*</pattern>
37. <pattern>Service.*</pattern>
38. <pattern>Message.*</pattern>
39. <pattern>DataService.*</pattern>
40. <pattern>Configuration</pattern>
25 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
PLAIN TEXT
Perceba que mapeio o local da Factory. Agora é preciso atualizar nosso servico cargoService
dentro do arquivo JavaFlex\WebContent\WEB-INF\flex\remoting-config.xml. Então
abra e edite deixando com este conteúdo:
remoting-config.xml
XML:
1. <?xml version="1.0" encoding="UTF-8"?>
2. <service id="remoting-service"
3. class="flex.messaging.services.RemotingService">
4.
5. <adapters>
6. <adapter-definition id="java-object"
7. class="flex.messaging.services.remoting.adapters.JavaAdapter"
8. default="true" />
9. </adapters>
10.
11. <default-channels>
12. <channel ref="channel-amf" />
13. </default-channels>
14.
15. <destination id="cargoService">
16. <properties>
17. <factory>spring</factory>
18. <source>cargoService</source>
19. </properties>
20. </destination>
21. </service>
26 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
PLAIN TEXT
Aqui só é importante observar que a tag <source /> mapeia o nome do bean do tipo
serviço que foi delegado na annotation, no nosso caso na classe CargoServiceImpl perceba
a annotation @Service(value="cargoService") e também a tag <factory /> que faz
referência a configuração no arquivo services-config.xml
Se tudo foi efetuado corretamente, ao você dar um botão direito no projeto e ir em Run As
-> Run On Server, ao clicar em salvar no fomulário de cadastro criado no post anterior, o
seu objeto cargo vindo do Flex já será persistido! observe o console para isso.
CargoForm.mxml
27 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
XML:
1. <?xml version="1.0" encoding="utf-8"?>
2. <mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml"
3. layout="vertical" width="488" height="384" creationComplete="getList()"
4.
5. <mx:Form width="100%" height="100%" defaultButton="{btSalvar}">
6. <mx:FormHeading label="Gerenciamento de Cargos" width="100%"/>
7. <mx:FormItem label="ID:" width="127">
8. <mx:TextInput width="100%" id="txtIdCargo"
9. text="{Cargo(dgCargo.selectedItem).idCargo}" editable="false"
10. </mx:FormItem>
11. <mx:FormItem label="Cargo:" width="345">
12. <mx:TextInput width="100%" id="txtDsCargo"
13. text="{Cargo(dgCargo.selectedItem).dsCargo}"/>
14. </mx:FormItem>
15. <mx:DataGrid id="dgCargo" width="100%" height="100%" dataProvider
16. <mx:columns>
17. <mx:DataGridColumn headerText="ID" dataField="idCargo" width
18. <mx:DataGridColumn headerText="Cargo" dataField="dsCargo"
19. </mx:columns>
20. </mx:DataGrid>
21. </mx:Form>
22.
23. <mx:ControlBar horizontalAlign="center">
24. <mx:Button label="Novo" click="setDefault()"/>
25. <mx:Button label="Salvar" id="btSalvar" click="save()"
26. textAlign="center"/>
27. <mx:Button label="Excluir" click="remove()"/>
28. </mx:ControlBar>
29.
30. <mx:RemoteObject id="cargoService" showBusyCursor="true"
31. fault="onFault(event)" destination="cargoService">
32. <mx:method name="save" result="onResultSave(event)" fault="onFault(event)"
33. <mx:method name="remove" result="onResultRemove(event)" fault="onFault(event)"
34. <mx:method name="getList" result="onResultGetList(event)" fault="onFault(event)"
35. </mx:RemoteObject>
36.
37. <mx:Script>
38. <![CDATA[
39. import mx.collections.ArrayCollection;
40. import com.digows.artigos.JavaFlex.view.entity.Cargo;
28 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
Bom pessoal, acredito que com estes 2 artigos consegui atingir o objetivo de dar a
comunidade Java uma proposta de interface produtiva e poderosa, e também a comunidade
Flex uma proposta de uma arquitetura com Flex e Java, utilizando o Blaze Data Services.
Faça mais testes, veja que o desenvolvimento é muito rápido! muito melhor do que se matar
com tags html e funções em JavaScript.
Fora que você pode desenvolver com o Flex aplicando os conceitos de Orientação a Objetos,
a começar pela tranferência de dados, no Flex chega Objetos! e não textos (XML,
WebServices, Request/Response e afins).
Neste artigo não fiz uso de patterns para o desenvolvimento das telas em Flex, porém nos
próximos artigos irei abordar detalhadamente como você pode arquiteturar seu código Flex
visando ganhar manutenabilidade, escalabilidade, e reusabilidade.
Tópico no Forum que contém detalhes sobre o download. Flex 2.0 e Flex 3.0
[Link]
=*****
Abraços
\o/
29 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
Author: digows
30 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
67 Comentários
31 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
Erko Bridee
27 de janeiro de 2008
aeeee
muito bom
parabens =]
SaintBr
27 de janeiro de 2008
Antonio de Lemos
28 de janeiro de 2008
Mário Júnior
28 de janeiro de 2008
Parabéns Rodrigo@
Jr.
32 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
Olá Mário,
Como disse, eu prefiro delegar a função “Mapeamento” a arquivos xml’s, do que
acoplar annotations em meus beans de negócio.
Neste artigo trago princípios do Domain Driven Desing escrito por Martin Fowler, uso
o padrão Entity, então pessoalmente não acho legal mapear usando annotations.
Mas… é uma questão pessoal! do jeito que estar é tranquilo usar annotations tbm.
Abraços!
\o/
Liz
28 de janeiro de 2008
Tá bom! eu confesSo que eu tenteii ler até o fim!!…;)! pra ver se eu aprimorava os
meus conhecimentos!!Maaas axeii meLHor ler a introduçãO e a última linha!Não
comentareii sobre ela porque talvez não haja espaço suficiente pra tanto
conhecimento!! Mas da última LINha!..HUm!! esSa é simples e eficaz!! “Pode muito
em seus efeitos” ;*
Amo vocÊ meu amOr!! ?
33 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
fernando siqueira
29 de janeiro de 2008
Rodrigo, parabéns pelo seu artigo, achei muito legal, me ajudou bastante, você
demonstra ter um bom conhecimento no assunto. Vou tentar usar BlazeDS em uma
aplicação comercial que eu estou fazendo. Acredito que o uso de flex com java seja
melhor em um estrutura hibrida. Onde eu poderia usar flex para gerar gráficos,
listar itens ou mostra imagens de produtos usando algum tipo de animação. Fazer
telas de cadastros/alteração e exclusão eu ainda acho melhor usar o bom e nem tão
velho struts 2 integrado com dwr. Apesar de todo o problema de compatibilidade o
uso de HTML/css/javascript torna a aplicação mais leve em relação ao flash.
Não sei se você já deu uma olhada em JavaFX … Mas senão posso dizer q seu código
é escrito em uma estrutura declarativa, que torna sua implementação muito
simples. Ela ainda é uma tecnologia que ainda está em um estagio beta,não da para
usar comercialmente ainda. Mas que no futuro ela pode ser uma boa opção para a
construção de aplicações RIA para os desenvolvedores Java.
Espero que você escreva mais artigos sobre flex. Parabéns!
34 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
Olá Fernando
Então, ultimamente tenho tido muito sucesso com o Flex em sistemas, seja ele
fazendo tais telas e ainda gerando gráficos e etc…
Só não uso flex, quando a máquina cliente é muito ruim mesmo, coisa q até um
ajax da vida causa memory leak.
Querendo ou não o Flex é uma aplicação WEB, só que com poder desktop.
Desenvolver com html, é custoso! até hoje não achei um modo de desenvolvimento
tão rápido do que o Flex, coisas como IDE, Visual Editor, Componentização, É
Orientado a Objetos, e etc.. Ajudam e muito no desenvolvimento.
JavaFX não olhei não, mas acredito que hoje o Flex atende e atende muito bem,
afinal tem muitos anos de experiência no mercado. Tomara que esse JavaFx não
seja semelhante a um Swing da vida…
Por que afzz.. A sun para visual é complicado.
Eduardo Dias
3 de fevereiro de 2008
Parabéns pelo post está de excelente qualidade, um pouco extenso, mas não
poderia ser de outra forma afim de cobrir todo o conteúdo. Abraço !!!
Ricardo
7 de fevereiro de 2008
Muito bom!
Com certeza muita gente ira iniciar flex/Java depois deste tutu.
35 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
Olá Ricardo,
não sei se leu, mas o BlazeDS está sobre a licença LGPL v3.
Parabens pelo artigo, cobriu muito bem me ajudando bastante. Mas fiquei com
tr~es duvidas, talvez vc poderia me adiantar:
Qual a função dos jar’s : flex-tomcat-common.jar e flex-tomcat-server.jar ?
Para que serve o mapeamento no web.xml da pasta hotfixes?
Qual o motivo de se criar uma factory spring, já que existe a do java por default?
Abraços
Qual o motivo de se criar uma factory spring, já que existe a do java por default?
36 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
Valeu Rodrigo!!!
Janderson
14 de fevereiro de 2008
Não a necessidade, se você tirar, você teria que passar parametros via tipos
primitivos, ou entao um array ou algo do tipo, mas realmente você quer fazer isto?
Exemplo disso, imagine uma datagrid populada com uma lista de Cargos, cada
posição da lista, será um objeto do tipo Cargo, logo eu tenho um objeto tipado! por
exemplo para pegar um cargo selecionado nesta grid eu faria assim:
Abraços
\o/
José Castillo
17 de fevereiro de 2008
Rodrigo, in spite of my native language is spanish your article is very clear and give
me a better understanding of these technologies. I was looking for an alternative to
JSP, JSF, etc, to the view part on the MVC model and Flex is the answer. Thanks a
lot.
37 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
\o/
Ricardo
18 de fevereiro de 2008
Valeu Rodrigo, mas vc acha que é necessário para seguir este tutu?
E estou seguindo a risca e quando mapeio os HB’s que no meu caso é
:com/webservice/model/repository/hibernate/ da erro!
E quando eu removo ele deixando em branco ele funciona, por que?
Olá Ricardo,
“Mas vc acha que é necessário para seguir este tutu?”
Concerteza! não faz sentido seguir com o tutorial nem sem saber o que um
Hibernate ou um Spring tem por finalidade.
Abraços!
\o/
R.B.
25 de fevereiro de 2008
38 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
No final…
Tópico no Forum que contém detalhes sobre o download. Flex 2.0 e Flex 3.0
[http://forum.flexbrasil.com.br/viewtopic.php?f=8&t=46#p139]
R.B.
26 de fevereiro de 2008
Por padrão, o outuput SQL aparece como “insert into javaflex_cargo (DS_CARGO)
values (?)”. Eu gostaria de ser capaz de ver o que ele está passando por valor no ?.
O Hibernate usa Prepared Statement internamente, de modo que não têm sempre o
SQL em um formato onde valores seriam incorporados.
Eduardo
26 de fevereiro de 2008
E pensar que dá pra fazer tudo isso usando Flex e Rails com apenas 1/100 de
código…
É preciso dar uma tonelada de links, livros, vários frameworks etc, pra fazer uma
telinha simples de cadastro??
39 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
Seu rails com 1/100 linhas tem injeção de dependência? ou você acopla seu código
com new’s em tudo?
Provê objeto distribuído? do jeito que este exemplo está com 3 linhas de código eu
posso disponibilizar um serviço para qualquer um usar.
A intenção aqui Eduardo, foi mostrar como você pode trabalhar com Flex e Java
corporativamente, logo não será qualquer scaffold que atenderá as necessidades
comum em um ambiente enterprise.
Tudo tem seu significado, e como uma pessoa de T.I. devo conhecer tecnologias
para possíveis problemas.
Ricardo
27 de fevereiro de 2008
Rodrigo, segui como também li muito sobre todas as tecnologias utilizada e estive
tentando fazer um sistema de autenticação até baseado no seu method findById
mas não estou consiguindo, como posso fazer?
Abraços!
\o/
40 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
R.B.
28 de fevereiro de 2008
Se você leu com atenção o artigo, em certos momentos falo que estou fazendo uso
do DomainDrivenDesing, logo o Cargo ali não é um DTO tão pouco VO.
Logo, o que vai te responder claramente sua dúvida, será você estudando sobre o
DDD e sua filosofia, que em poucas palavras não desacopla comportamentos de
atributos como em um BusinessObject e um DataTransferObject, mas modela um
Objeto integente onde contém seus próprios comportamentos e atributos.
Você pode usar o padrão que você conhece, a arquitetura não influencia no uso do
Flex.
Abraços.
\o/
dsfextreme
29 de fevereiro de 2008
Cláudio
4 de março de 2008
41 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
Eduardo Rebola
4 de março de 2008
Parabéns pelo artigo! Este projeto pode ser utilizado tranquilamente como template,
afinal de contas, quem gosta de ficar configurando toneladas de XMLs?
Porém não posso dizer que esta template é aplicável p/ “projetos do mundo real”. A
solucao proposta, baseada no modelo tradicional service + Dao (por entidade!!) +
hibernate = Lazy load exception. Isso nao ocorre neste exemplo pq a classe Cargo é
extremamente simples. O que fazer neste caso? Ignorar Lazy-load e utilizar Eager
por default? Eu acho que não…
Não tenho nada contra o Flex, só não dá pra integrá-lo de modo produtivo com Java
em projetos de médio/grande porte. Pra quem usa Linux então, esqueça! Flex
Builder é precário.
Abraço!
Janderson
5 de março de 2008
Olá Rodrigo mais uma vez, estou fazendo parte parte do seu excelente artigo, mais
surgiu uma dúvida e não sei se pode me ajudar,no ínicio do artigo vc instalou o
eclipse 3.3 e quando tento instalar o SpringIDE não consigo instalr via update
site,diz que precisa o eclipse 3.2, sabe me dizer se tem como instalar o springIDE
com eclipse 3.3,vlw
42 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
Olá Janderson, é veradade, ofialmente só pode usar no Eclipse 3.2, porém! Existe
um workaround para fazer funcionar.
Quando der o erro no update site, verifique o jar que ele está reclamando, então
pegue este jar de um Eclipse 3.2 e coloque no plugins do seu 3.3
Aí tu engana a instalação!
Abraços!
Janderson
5 de março de 2008
43 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
44 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
Faço uso de DAO’s por entities pois sou não gosto de criar DAO’s genéricos, prefiro
criar um para cada mesmo, e também a proposta era mostrar com integrar, se sua
arquitetura faz uso de DAO genéricos e afins, é uma opção sua.
“O que fazer neste caso? Ignorar Lazy-load e utilizar Eager por default? Eu acho que
não…”
Como estou usando Spring, posso usar os support que ele contém:
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter é interceptar
os lazy loads.
Só não toquei no assunto pois ficaria ainda maior abordar lazy loading e afins… isso
ficará para o próximo artigo.
“Não tenho nada contra o Flex, só não dá pra integrá-lo de modo produtivo com
Java em projetos de médio/grande porte.”
Ola amigo não sei qual a sua experiência co Flex, mas hoje estou usando Flex para
aplicacões de grande porte e está atendendo muito bem, ainda mais quando se usa
integrado ao padrão JCP de portles, no caso da BEA Weblogic.
Vantagens de programação toda Orientada a objetos e o protocolo AMF3, nem se
compara com navegaçÃo de textos/xml e afins com outros frameworks.
45 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
Bom, o FlexxBuilder para linux ainda não tem o modo visual, mas o auto-complete
está perfeito, e logo logo saíra a versão com o DesingView, mas para quem se mata
programando tags html ou js e css, programar só com um auto-complete já mata a
paú.
Não sei de algo do genêro, mas você me falando agora, vou pesquisar e ver se tem
algo do genêro, quando a alternativa, posso dizer que já é uma boa alternativa,
cada um com suas vantagens, o flex mesmo em um ambiente corporativo com
recursos de datapush, ajuda e muito! coisa que aplicações onde o cliente é slave
(simples browser) não é possível implementar. Como o Flex roda sobre uma VM e
está é um pouco mais inteligente além de vantagens visuais, tem um bom suporte
no back-end.
Abraços
\o/
Jacir
7 de março de 2008
e ai mano ..blz ..
eu vi manera apresentaçao lah na facul hje kra .. muito bom ateh entao nao sabia
nda de flex e tal … e tudo mais que vc’s colocaram lah .. valeo kra
té mais
Eae Jacir!
=)
Blza kra pelo feed-back, um caminho bacana para começar seria aqui:
http://forum.flexbrasil.com.br/viewforum.php?f=2
46 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
Jacir
7 de março de 2008
Eduardo
10 de março de 2008
Caro Rodrigo,
http://tech.groups.yahoo.com/group/flexcoders/message/98655
Essa é uma limitação tão grande que torna o uso do Flex em grandes projetos
inviável. Eu senti isso na pele, e aparentemente outros também:
http://tech.groups.yahoo.com/group/flexcoders/message/98681
Ouvir dos próprios engenheiros da Adobe que, no momento não há solução oficial
(somente alguns workarounds, termo gringo metido p/ a popular gambiarra) foi
suficiente p/ eu aguardar o amadurecimento da plataforma:
http://tech.groups.yahoo.com/group/flexcoders/message/98733
Continuo mantendo minha posição de standby p/ o Flex. Tem tudo p/ dar certo
agora open-source. Mas ainda não é.
47 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
Olá Eduardo,
O problema acontece quando o Blaze faz a serialização dos objetos, ao fazer isso, o
é ativado o lazy.
Para isso existe algumas soluções ou workarounds como preferir, o que o Jeff
apresentou é válido, e estou usando.
Eu pensando no futuro, prefiro investir no BlazeDS, por ser da própia Adobe e etc..
Bom é uma opinião sua dizer que Flex não é uma alternativa para desenvolvimento,
mas só vale lembrar também, que RemoteObject é o plus! a mais quanto as outras
tecnologias, você poderia muito bem ter lazy load usando HttpServices, ou então
WebServices.
è uma opinião sua, porém só acho que não pode ser tão radical, aonde eu trabalho
Flex com WebServices tem atendido muito bem, e olha que não é qualquer
siteminha.
48 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
R.B.
10 de março de 2008
Estive lendo, como sugerido, para tentar encontrar uma resposta a minha dúvida.
Em minhas leituras descobri que as regras de negócio podem ser colocadas nas
Entities. Fica aí o esclarecimento pois outras pessoas me perguntaram também.
Desde já agradeço pela atenção de todos.
R.B.
11 de março de 2008
Rodrigo, estou cmo uma outra dúvida. Como posso fazer a navegação entre
arquivos MXML? Por exemplo: eu gostaria de clicar num botão de cadastras usuário
e ir para uma outra página (outro MXML) de cadastro. Usávamos o MVC Cairngorm,
entretanto não queríamos mais usar um framework MVC por não achar mais
necessário diante do exposto por ti neste tutorial. =)
49 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
Olá R.B,
carro.AbrePorta();
financeiro.calcularDespesas();
Quanto a navegação,
Estas são as keywords para sua pesquisa, lembrando que a boa prática aí é o uso de
ViewStacks.
[GoogleWebDesktop]
http://www.flexdev.com.br/gwd/
Quanto ao MVC, acredito que você não entendeu muito bem quando disse que não
precisava de um Framework MVC. Eu disse isso me referindo ao Struts, WebWork,
SpringMVC e afins que existem no mundo java.
Com flex, é necessário arquitetar!, uma vez que ele é orientado a objetos, o
desenvolvimento n camadas para reuso e componentização é necessário.
Logo, se sua aplicação passa a ter mais de 2 telas, bacana seria usar não um
framework, mais eu diria um padrão de arquitetura, seja lá o Cairngorm, ou então o
PureMVC, estes ajudam você resolver problemas conhecidos.
Abraços
50 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
R.B.
13 de março de 2008
Rafael
18 de março de 2008
import flex.messaging.FactoryInstance;
import flex.messaging.FlexFactory;
import flex.messaging.config.ConfigMap;
import flex.messaging.services.ServiceException;
Abraços
51 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
Robson
3 de abril de 2008
Ótimo Artigo,
Para eu criar testes unitários para meus services usando o JUnit, qual configuração
eu uso ?
Isso acontece, porem eu consigo recuperar a lista de dados, mas não consigo
adicionar. Consegue me dar uma luz do que fazer?
Att.
52 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
Bom.. você não especificou seu problema… mas segue lah um exemplo:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { “classpath:applicationContext-tests.xml” })
public class NivelUsuarioControlImplTests extends
AbstractDependencyInjectionSpringContextTests
{
@Autowired
private NivelUsuarioAppService nivelUsuarioAppService;
private NivelUsuario nivelUsuario;
@Test
public void testSave()
{
this.nivelUsuario = new NivelUsuario();
this.nivelUsuario.setDsNivelUsuario(”Usuario”);
assertEquals(nivelUsuario, nivelUsuarioAppService.save(nivelUsuario));
}
@Test
public void testList()
{
List list = (List) nivelUsuarioAppService.getAll();
for (NivelUsuario nivelUsuario : list)
{
System.out.println(” ID: ” + nivelUsuario.getIdNivelUsuario() + ” -> ”
+ nivelUsuario.getDsNivelUsuario());
}
}
}
53 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
Araújo Jr.
14 de abril de 2008
Olá rodrigo, em primeiro lugar, gostaria de parabenizá-lo pelo artigo, sem dúvida
não há nada no google com o grau de detalhe que você colocou aqui. Eu fiquei
bastante maravilhado com o spring li todas as referencias que você deixou como
base preparatória para o artigo, mas confesso que não entendi duas coisas.
1 - @Repository(value=”cargoRepository”)eu vasculhei todo o código várias e várias
vezes mas não encontrei referencia para o “cargoRepository”.
2-
@Transactional(propagation=Propagation.REQUIRED, rollbackFor=Exception.class)
achei até um link relacionado
http://static.springframework.org/spring/docs/2.0.x/api/org
/springframework/transaction/annotation/Transactional.html
mas confesso que não compreendi a utilidade deste annotation.
Um grande abraço.
Olá Araújo,
Quanto a @Transactional(propagation=Propagation.REQUIRED,
rollbackFor=Exception.class), é a annotation que denota Transacao, isto eh todo o
fluxo inciado em qualquer método será transicional, a propagação será sempre
requerida, e fará rollback quando uma exception do tipo Exception for levantada.
O conceito aplicado a esta annotation é o mesmo quando se trata de transação.
Recomendo pesquisar sobre transações, e saber usar as devidas propagações.
54 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
Najib
11 de maio de 2008
hi,
thinks you a lot for this great tutorial
i have one question mm two questions:
Najib
12 de maio de 2008
oura !!
i have resolved that i can now use postgresql just you have to change
cargo.hbm.xml to :
and change in the cargo class the id to be int ,not long and change all of other class
and interface the id to be int and not long (sorry i don’t speak english very well but
you can understand me of course !!)
if you don’t understand me i can speak french !!
Najib
12 de maio de 2008
the upper letter must be lower in your database and you must change the
jdbc.properties to change driver and others urls,
55 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
Rene Vielma
13 de maio de 2008
56 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
Hello.
I’m follow your steps, but I got next exception:
57 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
58 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
at
org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:584)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Thread.java:619)
any idea ?
thanks you !
59 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
Bruno Queiroz
19 de maio de 2008
Valber Carreiro
17 de setembro de 2008
Olá Rodrigo, venho dando uma estudada em flex através dos seus totos, daÃ
estou cm uma dúvida quanto ao seguinte ponto, por exemplo na minha classe
service se eu criar um método de login colocando como tipo de retorno um
FlexForward, depois de fazer as validações de login como poderia encaminhar o
retorno para uma página inicial? Pq estou tentando fazer o retorno dando um
“return findForward(flexForward, HOME);” onde esse “felxForward” é uma
instância da FlexForward e home seria a página que deveria ser apresentada caso
a operação fosse bem sucedida, porém, após digitar o login e a senha e
confirmar a operação nada acontece, ou seja, não acontece o redirecionamento
para a página principal.
Vc teria alguma dica de como devo fazer esse forward ou teria alguma indicação
de material para que eu pudesse dar uma olhada e ver se encontro o que estou
procurando?
Desde já agradeço.
Valber Carreiro
17 de setembro de 2008
60 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
Eremim
30 de setembro de 2008
erro:
SEVERE: Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with
name ’sessionFactory’ defined in ServletContext resource [/WEB-
INF/applicationContext.xml]: Instantiation of bean failed; nested exception is
org.springframework.beans.BeanInstantiationException: Could not instantiate bean
class [org.springframework.orm.hibernate3.LocalSessionFactoryBean]: Constructor
threw exception; nested exception is java.lang.NoClassDefFoundError
na linha:
super.setSessionFactory(factory);
do CargoHibernateDao.java
João Paulo
6 de outubro de 2008
Parabéns pelo excelente artigo! Com certeza é um dos melhores artigos na internet
falando sobre essa arquitetura.
61 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
Flávio
27 de outubro de 2008
Eu criei uma função que faz uma pesquisa de membros de um projeto que
pertencem a um projeto usando essa função:
O problema é que ela pelo jeito foi feita para retornar apenas 1 item e não
vários, como eu faço para ele retornar vários dados? Pois se o projeto tiver
apenas um membro ele vai sem problema, senão ele dá pau. Outra coisa, eu tive
que trocar o tipo do list de ArrayCollection para Object, senão dá pau
Sergio
12 de novembro de 2008
Cara esse plugin flex pro eclipse, é o adobe flex builder 3, se não, como faço pra
instalar esse plugin no eclipse?
62 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
aaron
12 de novembro de 2008
ezzeddine
4 de dezembro de 2008
hello,
if i have a class java with a composite key, how his calss ActionScript?
Deixe um comentário
Name (obrigatório)
Website
63 de 64 1/1/2009 11:54
Integrando Adobe Flex + BlazeDS + SpringFramework + Hibernate - Uma Solução OpenSource para S... http://blog.digows.com/integrando-adobe-flex-blazeds-springframework-hibernate-uma-soluo-opensou...
Porquê Flex? / Why Flex? Baseado no howosteofevek: hello it is test. WinRAR J2EE Jobs
post do Ebertom, resolvi postar uma série de provides the full RAR and ZIP file ... Join GetAFreelancer.com and bid on
videos engraçados e interessantes sobre... J2EE projects. Join Free.
Porquê Flex? AIR? Why Flex ... patricia: Uma dúvia...Sou iniciante com o www.GetAFreelancer.com
flex...esta associação entre...
Manifesto Flex brasil [Saiba o que é o
Manifesto Flex Brasil] Minhas principais Keynes: Digows, Parabens... Seu artigo ficou
contribuições para a comunidade: Post: ótimo. Seguindo o tut...
Tomcat Hosting $7.99/mo
Configurando Ambiente com Flex 2 e
HelloWorld. Por que ele é relevante: Aprenda Professional JAVA/JSP/Servlet host
vavamaster: Olá, ficou muito bom mesmo,
a... Tomcat/Jetty/JBoss! 14d trial
meus parabéns, só estou com um p... www.hostjava.net
Integrando Adobe Flex + BlazeDS + ezzeddine: hello, if i have a class java with a
SpringFramework + Hibernate - Uma composite key, how his...
Solução OpenSource para Sistemas Web.
(Parte 2 - Final) Olá Pessoal! Primeiro lugar, Junior: Alguem tem o source.zip deste
quero agradecer a todos pelo feedback do exemplo???...
post anterior, isto é motivante e me dá ânimo
em concluir este, e outros que virão. Hoje o
foco...
64 de 64 1/1/2009 11:54