IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GWT et Vaadin Java Discussion :

Intégration GWT-maven-spring-hibernate-spring security-smartGWT [Tutoriel]


Sujet :

GWT et Vaadin Java

  1. #21
    Membre averti
    Profil pro
    Lead Tech Agile
    Inscrit en
    Septembre 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Lead Tech Agile

    Informations forums :
    Inscription : Septembre 2004
    Messages : 316
    Points : 417
    Points
    417
    Par défaut
    Peut etre que le web.xml est mal configuré ?

  2. #22
    Futur Membre du Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4
    Points : 6
    Points
    6
    Par défaut
    Pour ma part, j'ai reteste en dezippant l'archive telle quelle (j'avais fait quelques refactoring pour tester des trucs). Et ca a donne ca, donc le probleme devrait etre le meme pour tout le monde non ?

    Ou alors j'ai decidement pas de chance

  3. #23
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 33
    Points : 21
    Points
    21
    Par défaut
    Salut,

    Tout d'abord felicitations pour l'article!
    Je développe une application GWT 2.0 - GXT (ExtGWT) - GWT-SL.
    J'essaye ainsi de mettre en place la sécurité avec Spring security.

    Je configure un des mes services avec l'annotation @Secured("ROLE_ADMIN"). Puis j'essaye d'accéder à ce service en étant loggé comme User et l'exception suivante est levée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    [WARN] Exception while dispatching incoming RPC call
    java.lang.RuntimeException: com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract com.extjs.gxt.ui.client.data.PagingLoadResult com.webtiss.avenance.demo.client.action.DriverAction.getAll(com.extjs.gxt.ui.client.data.PagingLoadConfig) throws com.webtiss.avenance.demo.client.exception.ServiceSecurityException' threw an unexpected exception: org.springframework.security.AccessDeniedException: Access is denied
    	at org.gwtwidgets.server.spring.GWTRPCServiceExporter.handleExporterProcessingException(GWTRPCServiceExporter.java:384)
    	at com.webtiss.avenance.demo.server.spring.GWTRPCSecuredServiceExporter.handleExporterProcessingException(GWTRPCSecuredServiceExporter.java:43)
    	at org.gwtwidgets.server.spring.GWTRPCServiceExporter.processCall(GWTRPCServiceExporter.java:353)
    	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:224)
    	at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
    	at org.gwtwidgets.server.spring.GWTRPCServiceExporter.handleRequest(GWTRPCServiceExporter.java:407)
    	at org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter.handle(HttpRequestHandlerAdapter.java:49)
    	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
    	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:809)
    	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
    	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:511)
    ...
    Mes fichiers sont-ils mal configurés ou dois-je surcharger la méthode "handleExporterProcessingException" dans la classe "GWTRPCSecuredServiceExporter" pour attraper l'exception?

    Dernière question, de quelle manière puis-je procéder pour afficher/cacher des parties de mon ihm en fonction du role loggé?

    Merci
    Tom

  4. #24
    Membre averti
    Profil pro
    Lead Tech Agile
    Inscrit en
    Septembre 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Lead Tech Agile

    Informations forums :
    Inscription : Septembre 2004
    Messages : 316
    Points : 417
    Points
    417
    Par défaut
    AccessIsDenied ca veut dire que ton utilisateur n'a pas le droit. C'est un problème Spring ça.

    Pour attraper proprement l'exception au niveau IHM :
    1 - l'exception doit être déclaré dans la partie cliente
    2 - tu dois bien définir sur chaque interface Rpc qu'il throw cette exception

    Perso je te conseille d'encapsuler toutes les exceptions au niveau du service Rpc pour ne renvoyé qu'une exception connu du côté client et qui puisse afficher des messages clair à l'utilisateur.

    -------------------
    Pour afficher / cacher en fonction du role de l'utilisateur :
    1 - l'IHM doit connaitre ce role, donc tu dois envoyer côté client un objet qui représente ca et le garder en cache.
    2 - Au moment où tu construis l'IHM, tu test le role et en fonction tu affiche ou non les éléments.

  5. #25
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 33
    Points : 21
    Points
    21
    Par défaut
    Ok merci pour ces réponses...

    Une dernière chose peux-tu me mettre sur la voie pour gérer le cache au niveau client?

    Merci

  6. #26
    Rédacteur

    Homme Profil pro
    Geek entrepreneur
    Inscrit en
    Novembre 2004
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Geek entrepreneur

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 224
    Points : 2 373
    Points
    2 373
    Par défaut
    Tu fais référence à ta question :

    Dernière question, de quelle manière puis-je procéder pour afficher/cacher des parties de mon ihm en fonction du role loggé?
    C'est évoqué dans l'article. Tu peux utiliser un affichage conditionnel (mais du coup tu charges quand même une partie de l'IHM pour rien) ou alors tu peux utiliser des contrôles qui pourront se remplir dynamiquement

    Par exemple un onglet d'un tab panel chargé par ajax :

    - http://www.java2s.com/Code/Java/GWT/...anelExtGWT.htm

    De plus j'ai pas suivi GWT 2.0 mais il était question de pouvoir charger des bouts de javascript tardivement ce qui permettait de charger des parties de l'IHM uniquement à la demande.

  7. #27
    Membre régulier
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 47
    Points : 116
    Points
    116
    Par défaut
    Bonjour tout le monde,

    merci pour ce tutoriel Hugo. Je rencontre un souci mais j'ai sans doute loupé quelque chose: l'intégration du plugin maven-gwt. Je ne vois pas comment opérer, j'ai tenté l'import de tes projet dans mon eclipse en passant par Maven mais j'ai l'impression qu'il ne m'a pas importé le plugin maven-gwt (et le lien création d'un projet SmartGWT avec Maven est mort), du coup ça me pose problème (échec au moment du build Maven). J'avoue que je ne suis pas très familier avec Maven :/

    Merci d'avance pour une éventuelle aide.

    EDIT: bon, j'ai en gros identifié mon problème: mon jar pour maven-googlewebtoolkit-plugin-2.0-rc1 n'est pas bon. Malheureusement, je ne le retrouve pas dans http://gwt-maven.googlecode.com/svn/...p.gwt/plugins/. Je vais faire un tour chez codehaus

    EDIT2: j'ai récupéré les sources du plugin sur http://gwt-maven.googlecode.com/svn/...p.gwt/plugins/ et ai produit un jar, grâce à Maven justement en taguant en RC1, ça semble mieux se passer au moment du lancement de cargo.

  8. #28
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 3
    Points : 3
    Points
    3
    Par défaut
    pourriez vous m'indiquer le lien afin de telecharger le projet svp

  9. #29
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2004
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Merci pour ce bel article ! Il va m'être d'une grande utilité pour utiliser Spring Security ! (il y a cependant quelques adaptations à faire si on utilise Spring 3)

    BREF, je suis en train de développer mon application GWT, non pas avec Magen, mais avec l'aide du plugin de Google pour Eclipse pour ce qui est de la structure du projet.

    Je ne sais pas comment tu as fait pour pouvoir utiliser 2 fichiers de module gwt.xml !! Je dois également créer une page html de login puis une page html contenant l'entièreté de l'application => 2 gwt.xml pour pouvoir à chaque fois avoir un contenu différent sur chacune des pages.

    Le problème est que je n'arrive pas à ce que Eclipse prenne en compte le second fichier gwt.xml... ET de fait, il ne crée pas le second fichier nocache.js . Il y a une configuration à faire ?

    Quelqu'un a-t-il déjà rencontrer ce problème ? Hugo pourrait p-e m'aider...

    Une solution serait d'utiliser les Hyperlink, mais cela ne me tente pas trop, surtout si je veux sécuriser l'accès à la page principale de l'application.

    Merci

  10. #30
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par niamor007 Voir le message
    Merci pour ce bel article ! Il va m'être d'une grande utilité pour utiliser Spring Security ! (il y a cependant quelques adaptations à faire si on utilise Spring 3)
    Je suis en train de monter une même architecture avec Spring 3 et je n'Arrive pas à faire marcher Spring Security. Les intercept-url ne semble pas avoir d'effet et je peux accéder à n'importe quelle page de mon application sans passer par le login. Par contre au niveau des services cela semble fonctionner car lors d'un appel si je ne me suis pas bien identifié avant il me dit qu'il n'a pas trouvé d'info d'autentification.
    Est-ce que tu pourrais poster ton applicationContext-security (qui est je pense la clé du problème pour moi) ? Ou du moins me donner une piste des adaptations que tu as faites ?

    Citation Envoyé par niamor007 Voir le message
    BREF, je suis en train de développer mon application GWT, non pas avec Magen, mais avec l'aide du plugin de Google pour Eclipse pour ce qui est de la structure du projet.

    Je ne sais pas comment tu as fait pour pouvoir utiliser 2 fichiers de module gwt.xml !! Je dois également créer une page html de login puis une page html contenant l'entièreté de l'application => 2 gwt.xml pour pouvoir à chaque fois avoir un contenu différent sur chacune des pages.

    Le problème est que je n'arrive pas à ce que Eclipse prenne en compte le second fichier gwt.xml... ET de fait, il ne crée pas le second fichier nocache.js . Il y a une configuration à faire ?

    Quelqu'un a-t-il déjà rencontrer ce problème ? Hugo pourrait p-e m'aider...

    Une solution serait d'utiliser les Hyperlink, mais cela ne me tente pas trop, surtout si je veux sécuriser l'accès à la page principale de l'application.

    Merci
    Pour ça je dirais que lorsque tu lances la compilation de ton projet tu dois sélectionner tous les modules d'entrée (Entry Point Modules) tout simplement (dans la fenêtre de GWT Compile).

    Pour ma part je rencontre aussi un autre problème avec Gilead. Je me retrouve encore avec l'exception concernant sur PersistentBag. Pourtant j'ai bien recalqué toute la configuration, je n'ai aucune erreur de compilation ou quoi mais impossible de communiquer avec le service des projets... Là encore, toute aide serait la bienvenue

    En tout cas un grand merci à Hugo pour avoir partagé ce super tuto sur la mise en place d'une solution complète autour de GWT

  11. #31
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2004
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par thorgrim2002 Voir le message
    Je suis en train de monter une même architecture avec Spring 3 et je n'Arrive pas à faire marcher Spring Security. Les intercept-url ne semble pas avoir d'effet et je peux accéder à n'importe quelle page de mon application sans passer par le login. Par contre au niveau des services cela semble fonctionner car lors d'un appel si je ne me suis pas bien identifié avant il me dit qu'il n'a pas trouvé d'info d'autentification.
    Est-ce que tu pourrais poster ton applicationContext-security (qui est je pense la clé du problème pour moi) ? Ou du moins me donner une piste des adaptations que tu as faites ?
    Voici mon adaptation pour le applicationContext-Security.xml :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
    	xmlns:security="http://www.springframework.org/schema/security"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://www.springframework.org/schema/beans 
    			http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
    			http://www.springframework.org/schema/security 
    			http://www.springframework.org/schema/security/spring-security-3.1.xsd">
     
    <security:http entry-point-ref="authenticationEntryPoint" auto-config="true" create-session="always" access-denied-page="/index.html" >
     
    		<security:intercept-url pattern="/cvuman.html" access="ROLE_ADMIN"/>
    		<security:form-login login-page="/index.html" default-target-url='/cvuman.html' always-use-default-target='true'/>
    		<security:session-management session-fixation-protection="none">
        		<security:concurrency-control error-if-maximum-exceeded="true" max-sessions="1"/>
      		</security:session-management>
    	</security:http>
     
     
    	<bean id="authenticationEntryPoint" class="org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint">
     		<property name="loginFormUrl" value="/index.html"/>
     		<property name="forceHttps" value="false"/>
    	</bean>
     
           <bean id="dummyAuthenticationProvider"
    		class="be.ac.ulg.security.core.DummyAuthenticationProvider">
    	</bean>
     
    	<security:authentication-manager alias="authenticationManager">
      			<security:authentication-provider ref="dummyAuthenticationProvider"/>
    	</security:authentication-manager>
     
    	<security:global-method-security
    		secured-annotations="enabled" jsr250-annotations="disabled" />
     
    </beans>
    J'ai exactement le même problème que toi, même avec l'adaptation a Spring 3.1. Je peux accéder à la page protégée cvuman.html sans même être identifié => sans avoir de rôle... Par contre, la sécurité liée aux appels RPC semble fonctionner... Je suis preneur aussi d'une explication.


    Citation Envoyé par thorgrim2002 Voir le message
    Pour ça je dirais que lorsque tu lances la compilation de ton projet tu dois sélectionner tous les modules d'entrée (Entry Point Modules) tout simplement (dans la fenêtre de GWT Compile).
    Ah, c'était tout simple... Merci à toi J'utilisais le Run as Web Application pour compiler. Ici avec GWT Compile, ça prend beaucoup plus de temps mais ça fonctionne !

  12. #32
    Membre averti
    Profil pro
    Lead Tech Agile
    Inscrit en
    Septembre 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Lead Tech Agile

    Informations forums :
    Inscription : Septembre 2004
    Messages : 316
    Points : 417
    Points
    417
    Par défaut
    Si vous souhaitez sécuriser vos page sans forcément utiliser spring-security vous trouverez un exemple de sécurisation par un simple filtre http sur le svn du framework http://gwtop.tuxfamily.org/

    En gros j'utilise un simple filtre http (SecurityFilter) sur l'ensemble des requetes. En général, dedans j'implémente une authetifiaction par websso. Mais on peut implémenter ce que l'on veut en fait.

    Ensuite, une fois que l'utilisateur à été setter dans un threadLocal j'utilise l'aop pour gérer les droits d'accès aux services avec des annotations @RolesAllowed que j'introspect dans mon aop.

  13. #33
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par niamor007 Voir le message
    Voici mon adaptation pour le applicationContext-Security.xml :
    Merci, je vais me lancer dans le comparatif et qui sait peut être trouvera-t-on la réponse au fait qu'on peut accéder à toutes les pages de nos applis...

    Citation Envoyé par niamor007 Voir le message
    Ah, c'était tout simple... Merci à toi J'utilisais le Run as Web Application pour compiler. Ici avec GWT Compile, ça prend beaucoup plus de temps mais ça fonctionne !
    Si tu veux pas tout recompiler à chaque fois, tu vas dans les run configurations d'Éclipse, tu sélectionnes ton app google et tu as un onglet GWT dans lequel tu peux pareillement sélectionner les modules à prendre en compte et lancer.

    Quand à moi je rattaque ma bataille sur le PersitentBag d'Hibernate... Si quelqu'un a une idée

  14. #34
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Citation Envoyé par pvoncken Voir le message
    Si vous souhaitez sécuriser vos page sans forcément utiliser spring-security vous trouverez un exemple de sécurisation par un simple filtre http sur le svn du framework http://gwtop.tuxfamily.org/

    En gros j'utilise un simple filtre http (SecurityFilter) sur l'ensemble des requetes. En général, dedans j'implémente une authetifiaction par websso. Mais on peut implémenter ce que l'on veut en fait.

    Ensuite, une fois que l'utilisateur à été setter dans un threadLocal j'utilise l'aop pour gérer les droits d'accès aux services avec des annotations @RolesAllowed que j'introspect dans mon aop.
    Ça pourrait certainement être plus simple en effet, j'ai même envisagé une autentification toute simple de Tomcat, mais que voulez vous, je suis libre de mettre ce que je veux dans l'appli que je commence alors autant en profiter pour essayer des choses encore inconnues

    EDIT : J'ai re-regardé avec les yeux mieux ouverts et effectivement ça pourrait être intéressant de tester mais je ne peux point pour une raison conne : putain d'ordi de travail. Pas possible de faire de checkout du svn à cause du gentil proxy dont je connais pas les settings

  15. #35
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Bon, ça avance tout doucement

    J'ai enfin réussi à (presque) me débarrasser des histoires de PersistentBag de Hibernate. Pour ça, j'ai dû rajouter une propriété au bean proxyStore :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    	<bean id="proxyStore" class="net.sf.gilead.core.store.stateless.StatelessProxyStore">
           <property name="proxySerializer">
                <bean class="net.sf.gilead.core.serialization.GwtProxySerialization"/>
            </property>
    	</bean>
    Depuis, je peux enregistrer des projets dans la base et les lire, mais malgré tout j'ai encore cette exception (PersitentBag) qui apparait. Je pense que c'est l'enregistrement de la liste d'auteurs dans la table project_authors qui marche pas, mais je ne vois pas comment régler le problème. Je pensait avoir réglé tout problème de sérialisation avec le changement ci-dessus, mais en fait non, tant pis on va chercher encore

    Pour ce qui est de Spring Security par contre, pas d'avancée. Nos configurations sont identiques et j'ai testé pas mal de possibilités, les intercept-url ne prennent pas effet. Creusons encore un peu et on verra bien.

  16. #36
    Membre averti
    Profil pro
    Lead Tech Agile
    Inscrit en
    Septembre 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : Lead Tech Agile

    Informations forums :
    Inscription : Septembre 2004
    Messages : 316
    Points : 417
    Points
    417
    Par défaut
    Pour regler le persistentBag tu dois utiliser la méthode clone de Gilead sur ton objet à serializer.

    Le persistentBag est un proxy qu'hibernate applique à un attribut qui est défini en Lazy Loading.

    Ce proxy ne peut pas être serialiser, il faut soit charger les objets réel, soit mettre cet attribut à null suivant si tu en as besoin ou pas côté client. C'est ce que fait la méthode clone du proxyStore de Gilead. Mais c'est un algo qui tu peux également appliqué à la main.

  17. #37
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Allo !

    Merci pour les explications autour du persistentBag. En fait je m'en suis finalement sorti en reprenant la configuration de zéro, et je me suis rendu compte que tout était de travers à la base Après avoir bien relu la doc de GWT-SL et Gilead, tout est rentré dans l'ordre.

    Enfin, tout ou presque... J'ai encore un problème, toujours avec la fameuse liste d'auteurs, une basse histoire de ClassCastException. J'ai bien pris le temps d'en discuter avec notre amis Google, et j'ai testé toutes les solutions trouvées (changer de List en Set et autres) mais sans succès. Si quelqu'un a une autre piste, je suis preneur une fois encore

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    2011-03-02 09:46:36,531 INFO [PersistentBeanManager] - Transient object : com.desjardins.dtp.cccms.model.Project@1f
    Hibernate: insert into PROJECT (DESCRIPTION, NAME, URL) values (?, ?, ?)
    2011-03-02 09:46:36,563 ERROR [BeanPopulator] - 
    propertyName=authors
    readerMethod=public java.util.Set com.desjardins.dtp.cccms.model.Project.getAuthors()
    setterMethod=public void com.desjardins.dtp.cccms.model.Project.setAuthors(java.util.Set)
    fromBean=com.desjardins.dtp.cccms.model.Project@29
    toBean=com.desjardins.dtp.cccms.model.Project@29
     
    java.lang.RuntimeException: java.lang.ClassCastException: net.sf.gilead.pojo.gwt.collection.MapParameter cannot be cast to java.lang.String
    	at net.sf.gilead.core.beanlib.clone.ClonePropertyFilter.propagate(ClonePropertyFilter.java:219)
    	at net.sf.beanlib.provider.BeanPopulator.doit(BeanPopulator.java:186)
    	at net.sf.beanlib.provider.BeanPopulator.processSetterMethod(BeanPopulator.java:172)
    	at net.sf.beanlib.provider.BeanPopulator.populate(BeanPopulator.java:269)
    	at net.sf.beanlib.provider.replicator.ReplicatorTemplate.populateBean(ReplicatorTemplate.java:194)
    	at net.sf.beanlib.provider.replicator.BeanReplicator.replicateBean(BeanReplicator.java:187)
    	at net.sf.beanlib.hibernate3.Hibernate3JavaBeanReplicator.replicateBean(Hibernate3JavaBeanReplicator.java:71)
    	at net.sf.gilead.core.beanlib.clone.CloneClassBeanReplicator.replicateBean(CloneClassBeanReplicator.java:129)
    	at net.sf.beanlib.provider.replicator.ReplicatorTemplate.replicateByBeanReplicatable(ReplicatorTemplate.java:144)
    	at net.sf.beanlib.provider.replicator.ReplicatorTemplate.replicate(ReplicatorTemplate.java:139)
    	at net.sf.beanlib.provider.BeanTransformer.transform(BeanTransformer.java:231)
    	at net.sf.beanlib.hibernate.HibernateBeanReplicator.copy(HibernateBeanReplicator.java:134)
    	at net.sf.gilead.core.LazyKiller.clone(LazyKiller.java:258)
    	at net.sf.gilead.core.LazyKiller.detach(LazyKiller.java:212)
    	at net.sf.gilead.core.PersistentBeanManager.clonePojo(PersistentBeanManager.java:392)
    	at net.sf.gilead.core.PersistentBeanManager.clone(PersistentBeanManager.java:254)
    	at net.sf.gilead.gwt.GileadRPCHelper.parseReturnValue(GileadRPCHelper.java:157)
    	at org.gwtwidgets.server.spring.gilead.GileadRPCServiceExporter.invokeMethodOnService(GileadRPCServiceExporter.java:151)
    	at org.gwtwidgets.server.spring.GWTRPCServiceExporter.processCall(GWTRPCServiceExporter.java:403)
    	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248)
    	at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
    	at org.gwtwidgets.server.spring.GWTRPCServiceExporter.handleRequest(GWTRPCServiceExporter.java:472)
    	at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
    	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
    	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
    	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
    	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
    	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
    	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
    	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
    	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
    	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    	at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
    	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    	at org.mortbay.jetty.Server.handle(Server.java:324)
    	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
    	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
    	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
    	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
    	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
    	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
    	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
    Caused by: java.lang.ClassCastException: net.sf.gilead.pojo.gwt.collection.MapParameter cannot be cast to java.lang.String
    	at net.sf.gilead.pojo.java5.legacy.LightEntity.addProxyInformation(LightEntity.java:86)
    	at net.sf.gilead.core.store.stateless.StatelessProxyStore.storeProxyInformations(StatelessProxyStore.java:152)
    	at net.sf.gilead.core.beanlib.clone.ClonePropertyFilter.propagate(ClonePropertyFilter.java:209)
    	... 45 more
       [WARN] Exception while dispatching incoming RPC call
    java.lang.RuntimeException: java.lang.RuntimeException: java.lang.ClassCastException: net.sf.gilead.pojo.gwt.collection.MapParameter cannot be cast to java.lang.String
    	at org.gwtwidgets.server.spring.GWTRPCServiceExporter.handleExporterProcessingException(GWTRPCServiceExporter.java:449)
    	at org.gwtwidgets.server.spring.GWTRPCServiceExporter.processCall(GWTRPCServiceExporter.java:418)
    	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248)
    	at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
    	at org.gwtwidgets.server.spring.GWTRPCServiceExporter.handleRequest(GWTRPCServiceExporter.java:472)
    	at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
    	at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:790)
    	at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:719)
    	at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:644)
    	at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:560)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
    	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
    	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
    	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
    	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
    	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
    	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    	at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
    	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
    	at org.mortbay.jetty.Server.handle(Server.java:324)
    	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
    	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
    	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
    	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
    	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
    	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
    	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)
    Caused by: java.lang.RuntimeException: java.lang.ClassCastException: net.sf.gilead.pojo.gwt.collection.MapParameter cannot be cast to java.lang.String
    	at net.sf.gilead.core.beanlib.clone.ClonePropertyFilter.propagate(ClonePropertyFilter.java:219)
    	at net.sf.beanlib.provider.BeanPopulator.doit(BeanPopulator.java:186)
    	at net.sf.beanlib.provider.BeanPopulator.processSetterMethod(BeanPopulator.java:172)
    	at net.sf.beanlib.provider.BeanPopulator.populate(BeanPopulator.java:269)
    	at net.sf.beanlib.provider.replicator.ReplicatorTemplate.populateBean(ReplicatorTemplate.java:194)
    	at net.sf.beanlib.provider.replicator.BeanReplicator.replicateBean(BeanReplicator.java:187)
    	at net.sf.beanlib.hibernate3.Hibernate3JavaBeanReplicator.replicateBean(Hibernate3JavaBeanReplicator.java:71)
    	at net.sf.gilead.core.beanlib.clone.CloneClassBeanReplicator.replicateBean(CloneClassBeanReplicator.java:129)
    	at net.sf.beanlib.provider.replicator.ReplicatorTemplate.replicateByBeanReplicatable(ReplicatorTemplate.java:144)
    	at net.sf.beanlib.provider.replicator.ReplicatorTemplate.replicate(ReplicatorTemplate.java:139)
    	at net.sf.beanlib.provider.BeanTransformer.transform(BeanTransformer.java:231)
    	at net.sf.beanlib.hibernate.HibernateBeanReplicator.copy(HibernateBeanReplicator.java:134)
    	at net.sf.gilead.core.LazyKiller.clone(LazyKiller.java:258)
    	at net.sf.gilead.core.LazyKiller.detach(LazyKiller.java:212)
    	at net.sf.gilead.core.PersistentBeanManager.clonePojo(PersistentBeanManager.java:392)
    	at net.sf.gilead.core.PersistentBeanManager.clone(PersistentBeanManager.java:254)
    	at net.sf.gilead.gwt.GileadRPCHelper.parseReturnValue(GileadRPCHelper.java:157)
    	at org.gwtwidgets.server.spring.gilead.GileadRPCServiceExporter.invokeMethodOnService(GileadRPCServiceExporter.java:151)
    	at org.gwtwidgets.server.spring.GWTRPCServiceExporter.processCall(GWTRPCServiceExporter.java:403)
    	... 27 more
    Caused by: java.lang.ClassCastException: net.sf.gilead.pojo.gwt.collection.MapParameter cannot be cast to java.lang.String
    	at net.sf.gilead.pojo.java5.legacy.LightEntity.addProxyInformation(LightEntity.java:86)
    	at net.sf.gilead.core.store.stateless.StatelessProxyStore.storeProxyInformations(StatelessProxyStore.java:152)
    	at net.sf.gilead.core.beanlib.clone.ClonePropertyFilter.propagate(ClonePropertyFilter.java:209)
    	... 45 more
    [ERROR] 500 - POST /application/ProjectService.rpc (127.0.0.1) 57 bytes
       Request headers
          Host: 127.0.0.1:8888
          Connection: keep-alive
          Referer: http://127.0.0.1:8888/Application.html
          Accept: */*
          User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.13 (KHTML, like Gecko) Chrome/9.0.597.98 Safari/534.13
          Accept-Encoding: gzip,deflate,sdch
          Accept-Language: fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
          Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3
          Cookie: JSESSIONID=13xxiiv3yn0bj
          Content-Length: 258
          Origin: http://127.0.0.1:8888
          X-GWT-Module-Base: http://127.0.0.1:8888/application/
          Content-Type: text/x-gwt-rpc; charset=UTF-8
          X-GWT-Permutation: 0C1FB6348A1A3A8A097D80511B0F976C
       Response headers
          Content-Type: text/plain

  18. #38
    Membre à l'essai
    Inscrit en
    Mars 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 11
    Points : 10
    Points
    10
    Par défaut
    Bon, quelques avancées dans ce monde de fous Fort de mon expérience avec GWT-SL / Gilead qui étaient configurés disons, de manière non optimale, je me suis attelé un peu à Spring Security (je tournais trop en rond avec les histoire de ClassCastException ci-dessus).

    Le piste fût donc bonne puisque en redétaillant la configuration et en suivant une paire de tutos sur le net, je me suis rendu compte de deux choses :

    1 - les balises filters du web.xml avaient foutu le camp (certainement lors d'un nettoyage de ma part un peu trop vigoureux...). J'ai donc remis les lignes suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    	<filter>
    		<filter-name>springSecurityFilterChain</filter-name>
    		<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    	</filter>
     
    	<filter-mapping>
    		<filter-name>springSecurityFilterChain</filter-name>
    		<url-pattern>/*</url-pattern>
    	</filter-mapping>
    2 - Mes règles "d'interception" dans le applicationContext-security.xml étaient fort probablement dans le mauvais ordre et trop restricitves, je suis donc revenu à de quoi de bien simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	<security:http entry-point-ref="authenticationEntryPoint" create-session="always" access-denied-page="/index.html">
    		<security:intercept-url pattern="/Application.html" access="ROLE_USER"/>
    		<security:form-login login-page="/index.html" />
    	</security:http>
    Et là miracle, tout marche comme prévu Il ne me reste donc plus qu'une chose à régler, cette histoire de CastException. Avant d'autres aventures bien sûr

  19. #39
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2004
    Messages : 12
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par thorgrim2002 Voir le message
    Bon, quelques avancées dans ce monde de fous Fort de mon expérience avec GWT-SL / Gilead qui étaient configurés disons, de manière non optimale, je me suis attelé un peu à Spring Security (je tournais trop en rond avec les histoire de ClassCastException ci-dessus).

    Le piste fût donc bonne puisque en redétaillant la configuration et en suivant une paire de tutos sur le net, je me suis rendu compte de deux choses :

    1 - les balises filters du web.xml avaient foutu le camp (certainement lors d'un nettoyage de ma part un peu trop vigoureux...). J'ai donc remis les lignes suivantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    	<filter>
    		<filter-name>springSecurityFilterChain</filter-name>
    		<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
    	</filter>
     
    	<filter-mapping>
    		<filter-name>springSecurityFilterChain</filter-name>
    		<url-pattern>/*</url-pattern>
    	</filter-mapping>
    2 - Mes règles "d'interception" dans le applicationContext-security.xml étaient fort probablement dans le mauvais ordre et trop restricitves, je suis donc revenu à de quoi de bien simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	<security:http entry-point-ref="authenticationEntryPoint" create-session="always" access-denied-page="/index.html">
    		<security:intercept-url pattern="/Application.html" access="ROLE_USER"/>
    		<security:form-login login-page="/index.html" />
    	</security:http>
    Et là miracle, tout marche comme prévu Il ne me reste donc plus qu'une chose à régler, cette histoire de CastException. Avant d'autres aventures bien sûr
    Wah! Merci beaucoup, ça marche bien ! J'avais un peu laissé tomber la sécurité pour le moment. J'ai un petit soucis de récupération d'une collection d'objets avec Gilead. C'est en fait le même problème que toi je pense, sauf que j'utilise un Set au lieu d'un Bag. La description de mon problème figure ici : http://www.developpez.net/forums/d10...t/#post5818486

  20. #40
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 8
    Points : 8
    Points
    8
    Par défaut Projet GWT SPRING HIBERNATE
    Bonjour Hugo,
    Je me prépare à commencer le développement d'un projet J2EE pour le développement d'une d'une gestion. Les outils seront GWT, SPRING et HIBERNATE. Si vous me donnez de petits conseils pour mener à bien mon développement. Exemple:
    - Par quoi commencer, implémentation de la base données ou les interfaces?
    - par quelle couche commencer?
    - comment passez du diagramme de classe à la base de données?

    Merciii infiniment ...

Discussions similaires

  1. [MVC] Spring, hibernate, Spring MVC --> déploiement
    Par pigpen dans le forum Spring Web
    Réponses: 3
    Dernier message: 06/06/2011, 09h07
  2. Probleme maven pom.xml Spring Hibernate
    Par shenzy dans le forum Spring
    Réponses: 1
    Dernier message: 17/01/2011, 09h55
  3. Réponses: 1
    Dernier message: 02/12/2010, 20h59
  4. Réponses: 0
    Dernier message: 01/12/2009, 11h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo