Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Flash/Flex > Flex
Flex Forum d'entraide sur la programmation Adobe Flex : applications Internet riches (RIA)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 11/02/2011, 17h25   #1
Membre du Club
 
Étudiant
Inscription : avril 2007
Messages : 70
Détails du profil
Informations personnelles :
Âge : 23

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2007
Messages : 70
Points : 45
Points : 45
Par défaut Intégration BlazeDS/dpHibernate/Spring/Hibernate

Bonjour à tous,

J'utilise actuellement un framework maison, qui est composé de 2 parties. La partie présentation est gérée par Flex et la partie métier est gérée en Java.

Pour le moment l'intégration Flex/BlazeDs/Spring/Hibernate fonctionne mais dans un souci d'optimisation, j'aimerais mettre en place les lazy loading, ce qui n'est pas possible avec BlazeDS. Pour cela il faut installer dpHibernate.

Voila mon problème, cela fait quelques jours que je galère à intégrer dpHibernate dans le framework.


Pour info, le serveur d'application tourne sous Tomcat et la base de donnée sous MySQL.
Version des lib :
  • Hibernate 3
  • Spring3
  • dpHibernate 2.0 RC3

Erreur lors du lancement de Tomcat :
Code :
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
30
31
32
33
34
35
36
 
ERROR: org.springframework.web.servlet.DispatcherServlet - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.flex.remoting.RemotingDestinationExporter#0': Invocation of init method failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dpHibernateRemotingAdapter': FactoryBean threw exception on object creation; nested exception is java.lang.ExceptionInInitializerError
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1412)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:563)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:872)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:442)
    at org.springframework.web.servlet.FrameworkServlet.createWebApplicationContext(FrameworkServlet.java:458)
    at org.springframework.web.servlet.FrameworkServlet.initWebApplicationContext(FrameworkServlet.java:339)
    at org.springframework.web.servlet.FrameworkServlet.initServletBean(FrameworkServlet.java:306)
    at org.springframework.web.servlet.HttpServletBean.init(HttpServletBean.java:127)
    at javax.servlet.GenericServlet.init(GenericServlet.java:212)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1173)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:993)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4149)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4458)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
    at org.apache.catalina.core.StandardService.start(StandardService.java:516)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:583)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
web.xml :
Code :
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?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_5.dtd">
<web-app >
 
  <display-name>Spring BlazeDS Integration Samples</display-name>
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
            classpath:app-config.xml
            classpath:dao-config.xml
        </param-value>
  </context-param>
  <filter>
    <filter-name>openSession</filter-name>
    <filter-class>org.springframework.orm.hibernate3.support.OpenSessionInViewFilter</filter-class>
    <init-param>
      <param-name>singleSession</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>openSession</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>
  <listener>
    <listener-class>flex.messaging.HttpFlexSession</listener-class>
  </listener>
  <servlet>
    <servlet-name>flex</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>flex</servlet-name>
    <url-pattern>/messagebroker/*</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>
</web-app>
app-config.xml (Spring configuration):
Code :
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
        xmlns:flex="http://www.springframework.org/schema/flex" xmlns:security="http://www.springframework.org/schema/security"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
        xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
        xmlns:util="http://www.springframework.org/schema/util"
        xsi:schemaLocation="http://www.springframework.org/schema/aop
                http://www.springframework.org/schema/aop/spring-aop-2.5.xsd
                http://www.springframework.org/schema/beans
                http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
                http://www.springframework.org/schema/context
                http://www.springframework.org/schema/context/spring-context-2.5.xsd
                http://www.springframework.org/schema/flex
                http://www.springframework.org/schema/flex/spring-flex-1.0.xsd
                http://www.springframework.org/schema/security
                http://www.springframework.org/schema/security/spring-security-2.0.4.xsd                
                http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
                http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd
                ">
 
        <context:annotation-config/>
        <context:component-scan base-package="fr.schneider.lancid"/>
 
        <bean id="dpHibernateRemotingAdapter"
            class="org.springframework.flex.core.ManageableComponentFactoryBean">
            <constructor-arg value="org.dphibernate.adapters.RemotingAdapter" />
            <property name="properties">
                <map>
                    <entry key="dpHibernate">
                        <map>
                            <entry key="serializerFactory" value="org.dphibernate.serialization.SpringContextSerializerFactory"/>
                        </map>
                    </entry>
                </map>
            </property>
        </bean>
 
        <bean      id="dataAccessService"
                   class="org.dphibernate.services.SpringLazyLoadService"
                autowire="constructor">
            <flex:remoting-destination />
        </bean>
 
        <bean id="hibernateSessionFilter" class="org.dphibernate.filters.SpringHibernateSessionServletFilter" />
 
        <bean     id="dpHibernateSerializer"
                class="org.dphibernate.serialization.HibernateSerializer"
                scope="prototype">
            <property name="pageSize" value="10"/>
        </bean>
        <bean      id="dpHibernateDeserializer"
                class="org.dphibernate.serialization.HibernateDeserializer"
                scope="prototype" />
 
</beans>
flex-servlet.xml :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:flex="http://www.springframework.org/schema/flex" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:security="http://www.springframework.org/schema/security"
    xsi:schemaLocation="
        http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/flex 
        http://www.springframework.org/schema/flex/spring-flex-1.0.xsd">
 
 
    <flex:message-broker>
        <flex:remoting-service default-adapter-id="dpHibernateRemotingAdapter" default-channels="my-amf,my-secure-amf" />
        <flex:message-service default-channels="my-streaming-amf,my-longpolling-amf,my-polling-amf" />
    </flex:message-broker>
 
    <!-- MessageTemplate makes it easy to publish messages -->
    <bean id="defaultMessageTemplate" class="org.springframework.flex.messaging.MessageTemplate" />
 
</beans>
Merci par avance pour votre aide !
__________________
Mes projets
Galip est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/02/2011, 12h08   #2
Membre du Club
 
Étudiant
Inscription : avril 2007
Messages : 70
Détails du profil
Informations personnelles :
Âge : 23

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2007
Messages : 70
Points : 45
Points : 45
Bon, j'ai un peu avancé dans l'intégration de dpHibernate. Maintenant, j'obtiens cette erreur :
Code :
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
30
31
32
33
34
 
ERROR: org.springframework.web.context.ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.flex.remoting.RemotingDestinationExporter#0': Cannot resolve reference to bean '_messageBroker' while setting bean property 'messageBroker'; nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named '_messageBroker' is defined
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1317)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1076)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
	at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:563)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:872)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:423)
	at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276)
	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)
	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3934)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4429)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
	at org.apache.catalina.core.StandardService.start(StandardService.java:516)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:583)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Je n'ai pas modifier les fichiers de config. Donc je ne comprends pas pourquoi le MessageBroker n'est pas instancié, alors qu'il devrait l'être avec <flex:message-broker>

Peut-être faut-il que je déclare message-broker comme un bean.

[EDIT] Je tourne en rond, on résolvant cette erreur, j'ai de nouveau l'erreur précédente.
__________________
Mes projets
Galip est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 16h37   #3
Membre du Club
 
Étudiant
Inscription : avril 2007
Messages : 70
Détails du profil
Informations personnelles :
Âge : 23

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2007
Messages : 70
Points : 45
Points : 45
J'ai résolu mon problème, en modifiant le fichier app-config.xml comme ceci :
http://pastebin.com/2ezNu46m

Donc, je n'ai plus de fichier flex-servlet.xml, tout est dans le fichier app-config.xml.

De plus, j'avais oublié une librairie jackson-core-asl-1.0.0.jar.

Ne pas oublier de faire hériter vos entités java et flex de IHibernateProxy.

Bonne chance à ceux qui voudrait se lancer dans l'aventure !
__________________
Mes projets
Galip est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/06/2011, 21h42   #4
Invité régulier
 
Inscription : mai 2007
Messages : 28
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 28
Points : 7
Points : 7
Par défaut Moi aussi

Salut,

je suis entrain de faire une appli RIA avec flex + spring blazeds integration + hibernate + dphibernate. Mais je n'arrive pas vraiment à comprendre l'utilité de ce dernier.

D'après ce que j'ai compris ça me permet de récupérer les attributs chargé en Lazy du côté clients?

J'ai l'impression de manquer quelque chose.

J'ai configurer mon application comme sur le site officiel et en suivant le tutoriel de dzone.

Si tu peux peux m'en dire plus sur ton expérience ^^
NargiT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2011, 09h49   #5
Membre du Club
 
Étudiant
Inscription : avril 2007
Messages : 70
Détails du profil
Informations personnelles :
Âge : 23

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2007
Messages : 70
Points : 45
Points : 45
Salut,

En fait, BlazeDS ne permet pas la gestion du lazy loading, en effet lors de la sérialization, il charge entièrement le graph d'objet.
Du coup, dpHibernate est une brique a ajouté par dessus la couche java et flex pour gérer le lazy loading.

Intégrer dpHibernate à une archi Flex/Java n'est pas extrêmement compliqué mais il manque pas mal d'information sur le wiki du projet.
Personnellement, j'ai abandonné dpHibernate et j'ai développé une librairie maison, car l'intégration de dpHibernate imposait trop de modification de notre architecture existante.

Actuellement, que se passe-t-il lorsque que tu charges un objet qui possède une liste d'objet ?
__________________
Mes projets
Galip est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 09h52.


 
 
 
 
Partenaires

Hébergement Web