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 :

Pb // appel RPC


Sujet :

GWT et Vaadin Java

  1. #1
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 68
    Points : 47
    Points
    47
    Par défaut Pb // appel RPC
    Bonjour,

    je développe une application avec le framework GWT. J'ai déjà eu de nombreux problèmes que j'ai réussi à surmonter (et grâce à certains d'entre vous parfois )

    J'ai de nouveau un problème. J'utilise un appel RPC pour me connecter à une base de données MySQL. J'ai bien ajouté ce service dans le <mon_appli>.gwt.xml et lors de son appel sous IE j'ai l'url suivante qui est appelée : project.Application//servicesDistants et donc une page inexistante à cause du superbe // que je n'arrive pas à expliquer.

    Si quelqu'un a déjà été confronté à ce problème?

    Merci d'avance


  2. #2
    Membre actif

    Inscrit en
    Août 2002
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Août 2002
    Messages : 302
    Points : 285
    Points
    285
    Par défaut
    Bonjour,
    Un petit aperçu de ton <mon_appli>.gwt.xml et tes mappings de servlet peuvent nous aider.

  3. #3
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 68
    Points : 47
    Points
    47
    Par défaut
    En voici la totalité:

    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
     
    <module>
     
          <!-- Inherit the core Web Toolkit stuff.                        -->
          <inherits name='com.google.gwt.user.User'/>   
     
         <!-- Inherit the GWTExt Toolkit library configuration.	  -->
    	  <inherits name='com.gwtext.GwtExt' />
     
     
    	  <inherits name="com.google.gwt.i18n.I18N"/>
     
         <!-- <inherits name="com.google.gwt.user.theme.perso.Perso"/> -->
    	  <inherits name="com.google.gwt.user.theme.standard.Standard"/> 
    	  <!-- inherits name="com.google.gwt.user.theme.chrome.Chrome" /-->
    	  <!-- <inherits name="com.google.gwt.user.theme.dark.Dark"/> -->
     
    	 <!-- Available Services -->
     
    	 <servlet class="project.server.ServicesDistantsImpl" path="/servicesDistants"/>
     
     
          <!-- Specify the app entry point class.                         -->
          <entry-point class='project.client.Application'/>
     
          <!-- Specify the application specific style sheet.              -->
          <stylesheet src='Application.css' />
     
          <stylesheet src="js/ext/resources/css/ext-all.css" />
    	  <script src="js/ext/adapter/ext/ext-base.js" />
    	  <script src="js/ext/ext-all.js" />
     
    </module>
    Je n'ai pas fais de mapping dans le web.xml. Est ce obligatoire?


    Petite précision, mon interface a ce morceau de code :

    @RemoteServiceRelativePath("/servicesDistants")
    et ça marche ne mode hosted

  4. #4
    Membre actif

    Inscrit en
    Août 2002
    Messages
    302
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Août 2002
    Messages : 302
    Points : 285
    Points
    285
    Par défaut
    Non le mapping n'est pas obligatoire mais je vois vraiment pas d'où peut venir ton problème.

  5. #5
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 68
    Points : 47
    Points
    47
    Par défaut
    Ce n'est pas grave je vais patienter voir si d'autres ont eu ce problème. Merci quand même

  6. #6
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 68
    Points : 47
    Points
    47
    Par défaut
    J'ai résolu mon problème de '//' mais maintenant que j'ai la bonne URL, mon serveur me renvoi toujours une erreur 404...

    Je récapitule mon développement :

    - j'ai mon interface côté client (avec le @RemoteServiceRelativePath())

    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
    @RemoteServiceRelativePath("servicesDistants")
    public interface ServicesDistants extends RemoteService 
    	{
    	//connexion BDD avec retour si OK
    	public Boolean connexionBDD();
    	//execution requete avec retour sous forme d'une liste de tableau de String pour la liste des taches
    	public List<String[]> executionBDDtaches(String requete);
    	//execution requete avec retour d'un String qui comporte les droits de l'utilisateur loggé ou vide si pas ds bdd
    	public String executionBDDlogin(String requete);
    	//ferneture connexion BDD avec retour si OK
    	public Boolean fermetureBDD();
     
    	//enregistrement d'un nouveau groupe en base
    	public Boolean enregistrerGroupeBDD(String groupe);
    	//enregistrement d'un nouveau user en base
    	public Boolean enregistrerUserBDD(String login,String password, String nom, String prenom, String mail, String role);
    	//récupération liste de groupe
    	public List<String> recuperationGroupeBDD();
     
    	}
    - j'ai mon interface asynchrone côté client

    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
    public interface ServicesDistantsAsync 
    	{
    	//connexion base de données
    	public void connexionBDD(AsyncCallback<Boolean> callback);
    	//execution requete base de données
    	public void executionBDDtaches(String requete, AsyncCallback<List<String[]>> callback);
    	//execution requete avec retour d'un String qui comporte les droits de l'utilisateur loggé ou vide si pas ds bdd
    	public void executionBDDlogin(String requete,  AsyncCallback<String> callback);
    	//fermeture connexion base de données
    	public void fermetureBDD(AsyncCallback<Boolean> callback);
    	//enregistrement d'un nouveau groupe en base
    	public void enregistrerGroupeBDD (String groupe, AsyncCallback<Boolean> callback);
    	//enregistrement d'un nouveau user en base
    	public void enregistrerUserBDD(String login, String password, String nom, String prenom, String mail, String role, AsyncCallback<Boolean> callback);
    	//récupération liste de groupe
    	public void recuperationGroupeBDD(AsyncCallback<List<String>> callback);
     
    	}
    - j'ai l'implémentation côté serveur (que je vous épargne)

    - j'instancie bien une instance de mon service

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    	public static ServicesDistantsAsync serviceDistant = null;
    	public ServicesDistantsAsync getServicesDistantsInstance() 
    		{
    	    if (serviceDistant == null) 
    	    	{
    	    	// Instantiate the service 
    	    	serviceDistant = (ServicesDistantsAsync) GWT.create(ServicesDistants.class);
    	    	((ServiceDefTarget)serviceDistant).setServiceEntryPoint( GWT.getModuleBaseURL() + "servicesDistants");
    	    	System.out.println(GWT.getModuleBaseURL() + "servicesDistants");
    	        }
    	    return serviceDistant;
    		}
    - j'ai ajouté la class et le path dans le <mon_appli>.gwt.xml

    Mon URL est bonne et je peux accéder à mon service en mode hosted. Mais erreur 404...

    Si quelqu'un a déjà eu ce problème.

    Merci

  7. #7
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    Puisque tu utilises les annotations, je suppose que tu es en gwt 1.6
    Déclarer la servlet dans le module n'est plus nécessaire, ce qui compte, c'est qu'elle soit déclarée dans le fichier web.xml.


    Pour un service de Login dans Application :

    com/developpez/login/client/LoginService.java

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    @RemoteServiceRelativePath("login")
    public interface LoginService
    extends           RemoteService
    {
        String getUserEmail();
    }
    com/developpez/login/client/LoginServiceAsync.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public interface LoginServiceAsync
    {
        void getUserEmail(AsyncCallback<String> callback);
    }
    com/developpez/login/server/LoginServiceImpl.java
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    public class LoginServiceImpl
    extends      RemoteServiceServlet
    implements   LoginService
    {
    public String getUserEmail()
        {
            // Votre code
        }
    }
    com/developpez/login/client/Application.java
    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
    public class Application
    implements   EntryPoint
    {
        private final LoginServiceAsync loginService = GWT.create(LoginService.class); 
     
        public void onModuleLoad()
        {
            loginService.getUserEmail(new AsyncCallback<String>()
            {
                @Override
                public void onFailure(Throwable caught)
                {
                    Window.alert(caught.toString());
                }
     
                @Override
                public void onSuccess(String email)
                {
                    Window.alert(email);
                }
            }
        }
    }
    Dans mon module Application.gwt.xml, je ne déclare rien de particulier pour le service RPC mais
    noter le paramètre rename-to qui va me créer un sous dossier "application" dans le dossier war et qui est utilisé en préfixe du path des servlets dans le web.xml.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE module PUBLIC "-//Google Inc.//DTD Google Web Toolkit 1.6.4//EN" "http://google-web-toolkit.googlecode.com/svn/tags/1.6.4/distro-source/core/src/gwt-module.dtd">
    <module rename-to='application'>
      <inherits name='com.google.gwt.user.User'/>
      <inherits name='com.google.gwt.user.theme.standard.Standard'/>
      <entry-point class='com.developpez.login.client.Application'/>
    </module>
    Dans le fichier war/META-INF/web.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
     
    <?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_3.dtd">
    <web-app>
     
      <welcome-file-list>
        <welcome-file>Application.html</welcome-file>
      </welcome-file-list>
     
      <servlet>
        <servlet-name>loginServlet</servlet-name>
        <servlet-class>com.developpez.login.server.LoginServiceImpl</servlet-class>
      </servlet>
     
      <servlet-mapping>
        <servlet-name>loginServlet</servlet-name>
        <url-pattern>/application/login</url-pattern>
      </servlet-mapping>
     
    </web-app>

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.

  8. #8
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    Citation Envoyé par CcHhUu Voir le message
    Je n'ai pas fais de mapping dans le web.xml. Est ce obligatoire?
    Citation Envoyé par nanous
    Non le mapping n'est pas obligatoire mais je vois vraiment pas d'où peut venir ton problème.
    Tu m'étonnes que tu ne vois pas le problème !
    C'est obligatoire !
    Bon, je comprend quand même pourquoi tu dis cela alors explications :

    Avant GWT 1.6 :
    Les servlets des services RPC doivent être déclarés dans le fichier du module et ces déclarations servent à GWT pour le hosted mode.
    Aussi, si vous n'en mettez pas dans le web.xml, ce n'était dès lors pas obligatoire tant que l'application GWT n'était pas déployée !
    Pour Tomcat, je suis presque sûr à 99% que c'était obligatoire d'avoir le mapping des servlets dans son web.xml car une fois compilé (le fichier du module gwt.xml, on s'en tamponne)

    A partir de GWT 1.6 :
    Ils ont simplifié tous cela et comme on a une arborescence de war, il FAUT déclarer les servlets de services RPC dans le descripteur de déploiement (web.xml) et c'est dans le fichier du module que ce n'est pas obligatoire (si on en met, je me demande même s'il continue de s'en servir !?!)

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.

  9. #9
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 68
    Points : 47
    Points
    47
    Par défaut
    Bonjour,

    J'ai bien ajouté le mapping dans le descripteur de déploiement mais j'ai toujours mon erreur 404 qui me dis que mon /servicesDistants n'est pas disponible...

    Voici le code de mon mapping et pour le reste je l'ai déjà posté au dessus.

    Je ne comprends vraiment pas qu'elle est mon problème.

    Merci pour votre aide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        <servlet>
        	<servlet-name>servicesDistants</servlet-name>
        	<servlet-class>project.server.ServicesDistantImpl</servlet-class>
        </servlet>
        <servlet-mapping>
       		<servlet-name>servicesDistants</servlet-name>
        	<url-pattern>/servicesDistants</url-pattern>
        </servlet-mapping>

  10. #10
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    Si tu lis mon exemple entièrement (ok, il faut scroller pour voir mon web.xml), tu verras que ma servlet /login est préfixée par le nom de l'application, nom qui est indiqué dans l'attribut rename-to de mon module.

    Si tu n'indiques pas d'attribut rename-to, ce doit être le nom complet du module par défaut.
    Je te conseille de mettre un attribut rename-to et de préfixer ta servlet par ce nom. Regarde dans mon exemple (c'est "application").

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.

  11. #11
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 68
    Points : 47
    Points
    47
    Par défaut
    Je ne comprends pas bien. Est ce que le mot "application" dans ton rename-to est pris au hazard (et donc juste utilisé à la compil puis après géré grâce au web.xml) ou est ce qu'il doit avoir une valeur particulière?

    Parce que j'ai essayé et ça ne marche pas. Je ne peut même plus lancer mon appli en mode hosted

    Mon web.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
    <!DOCTYPE web-app PUBLIC
     "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
     "http://java.sun.com/dtd/web-app_2_3.dtd" >
     
    <web-app>
    	<display-name>GWT-Maven-Archetype</display-name>	
     
     
    <!--  a partir de GWT 1.6 il faut mettre les services RPC ici  -->
     
        <servlet>
        	<servlet-name>servicesDistants</servlet-name>
        	<servlet-class>project.server.ServicesDistantImpl</servlet-class>
        </servlet>
        <servlet-mapping>
       		<servlet-name>servicesDistants</servlet-name>
        	<url-pattern>/application/servicesDistants</url-pattern>
        </servlet-mapping>
     
     
     
    	<welcome-file-list>
    		<welcome-file>index.html</welcome-file>
    	</welcome-file-list>
    </web-app>

    Mon Application.gwt.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
    37
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
     
    <module rename-to='application'>
     
          <!-- Inherit the core Web Toolkit stuff.                        -->
          <inherits name="com.google.gwt.user.User"/>   
     
         <!-- Inherit the GWTExt Toolkit library configuration.	  -->
    	  <inherits name="com.gwtext.GwtExt"/>
     
     
    	  <inherits name="com.google.gwt.i18n.I18N"/>
    	  <!-- permutation pour avoir les widgets en français : pas utilisé pour le moment mais utile!!-->
    	  <!-- extend-property name="locale" values="fr"/-->
     
         <!-- <inherits name="com.google.gwt.user.theme.perso.Perso"/> -->
    	  <inherits name="com.google.gwt.user.theme.standard.Standard"/> 
    	  <!-- inherits name="com.google.gwt.user.theme.chrome.Chrome" /-->
    	  <!-- <inherits name="com.google.gwt.user.theme.dark.Dark"/> -->
     
    	 <!-- Available Services -->
    	 <!-- il ne s'agit pas vraiment d'une servlet mais c'est implémenté tout comme -->
    	 <servlet class="project.server.ServicesDistantsImpl" path="/servicesDistants"/>
    	 <!-- servlet dans le web.xml -->
     
          <!-- Specify the app entry point class.                         -->
          <entry-point class="project.client.Application"/>
     
     
          <!-- Specify the application specific style sheet.              -->
          <stylesheet src="Application.css"/>
     
          <stylesheet src="js/ext/resources/css/ext-all.css"/>
    	  <script src="js/ext/adapter/ext/ext-base.js"/>
    	  <script src="js/ext/ext-all.js"/>
     
    </module>

  12. #12
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    Depuis que gwt1.6 a modifié la structure d'un projet gwt, au lieu d'en mettre partout, il génére les fichiers d'un module gwt dans un sous dossier du dossier war.

    Ce sous dossier de war a par défaut (il me semble) le nom long du module gwt.
    Ce nom peut être redéfini avec l'attribut rename-to.
    Tu mets ce que tu veux du moment où ça ne rentre pas en conflit avec un autre module et que ça respecte leur schema xml (il faut probablement éviter les caractères bizarres)
    Moi, j'ai mis "application".
    Ce qui a pour effet de mettre les fichier générés par gwt dans un dossier "application" dans le dossier war.
    Ensuite, il ne faut pas oublié de préfixé dans mon servlet mapping :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <servlet-mapping>
        <servlet-name>loginServlet</servlet-name>
        <url-pattern>/application/login</url-pattern>
      </servlet-mapping>

    Tu peux mettre autre chose que application mais comme tu as fait, c'est bon.

    Normale que ça ne fonctionne pas en hosted mode car dans ton fichier de module, tu as :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <!-- Available Services -->
    	 <!-- il ne s'agit pas vraiment d'une servlet mais c'est implémenté tout comme -->
    	 <servlet class="project.server.ServicesDistantsImpl" path="/servicesDistants"/>
    	 <!-- servlet dans le web.xml -->
    • Enlève ce morceau de code
    • ou met en commentaire ce morceau de code
    • ou si tu veux le laisser, essaye de mettre /application/servicesDistants dans le path.

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.

  13. #13
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 68
    Points : 47
    Points
    47
    Par défaut
    Je vais tester mais lorsque je retire la déclaration dans le Apllication.gwt.xml je n'ai plus de service RPC de disponible.

    Je test et je te redis.

  14. #14
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    Es si tu le laisses en rajoutant "/application" dans ton path (3° solution), ça ne fonctionne pas ?

    Peut être parce que tu utilises un plugin autre que celui de GWT ?
    Cypal par exemple ?

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.

  15. #15
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 68
    Points : 47
    Points
    47
    Par défaut
    J'utilise maven.

    Et quand je mets le rename-to='application', il me renomme ma base du projet avec 'application' (le but recherché) mais ça fait qu'il se perd et ne trouve plus le Application.nocache.js...

    Je pense que mon problème n'est peut être pas là. L'erreur qui m'est retournée semble plus venir de mon serveur Tomcat dont voici sa réponse :

    Etat HTTP 404 - /LIACO2-1.0-SNAPSHOT/project.Application/servicesDistants

    type Rapport d'état

    message /LIACO2-1.0-SNAPSHOT/project.Application/servicesDistants

    description La ressource demandée (/LIACO2-1.0-SNAPSHOT/project.Application/servicesDistants) n'est pas disponible.

    Ce n'est qu'une suggestion parce que j'ai un autre projet (en 1.5.3) où j'ai un service RPC et où je n'ai pas du passer par tous ces paramétrages.

  16. #16
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    Je suis perdu avec tout tes trucs ...

    c'est quoi qui marche pas ?

    En mode hosted ? ou une fois déployé ?

    Et maven, tu t'en sers pour quoi ?

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.

  17. #17
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 68
    Points : 47
    Points
    47
    Par défaut
    C'est vrai que moi aussi je me perds tellement j'ai essayé de solution.
    J'utilise le plugin MavenGWT pour Eclipse , GWT 1.6.4.
    En mode hosted aucun problème.
    Lorsque je lance la génération du war avec maven et que je déploie celui-ci sur mon serveur Tomcat, les services RPC me renvoit une erreur 404 (comme je l'ai mis précédemment).
    Mon url pour attaquer mon service est bonne. Mais le serveur me dis que la ressources n'est pas disponible.

    Désolé c'est vrai que c'était pas clair mon affaire

  18. #18
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    Ok, ça fonctionne en hosted mode.

    Mais le 404, c'est pendant la génération de ton war ou après ?

    Autrement dit, as tu un war ?

    Si la réponse est oui, tu le déploies dans un tomcat ?
    Et quelle est ton arborescence dans le dossier webapps de Tomcat ?

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.

  19. #19
    Membre du Club
    Inscrit en
    Mai 2009
    Messages
    68
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 68
    Points : 47
    Points
    47
    Par défaut
    Je déploie bien mon war et mon appli se lance bien. C'est au moment où j'utilise une méthode distante que j'ai l'erreur 404.

    Et j'ai pas de web-app dabns mon war....

    J'ai :

    - META-INF
    - project.Application
    - project.Application-aux
    - WEB-INF
    - index.html

  20. #20
    Rédacteur
    Avatar de benwit
    Profil pro
    dev
    Inscrit en
    Septembre 2004
    Messages
    1 676
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 676
    Points : 4 265
    Points
    4 265
    Par défaut
    Je parlai de dossier webapps dans tomcat et pas dans ton war.

    Car lorsque tu déploie ton war dans tomcat :

    - Le dossier CheminVersTonTomcat/webapps/ qui contient les applications web est généralement accessible par http://NomDuHost:8080/

    - Ensuite, tu as ton application dans un dossier (généralement le nom du war)
    tu accèdes donc à l'application par http://NomDuHost:8080/NomAppli
    et là, c'est la racine de l'application

    - Ensuite, on retrouve le contenu de ton war :
    META-INF
    project.Application
    project.Application-aux
    WEB-INF
    index.html

    Et dans le web.xml de WEB-INF,
    si tu as utiliser @RemoteServiceRelativePath("servicesDistants"), tu dois avoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        <servlet>
        	<servlet-name>servicesDistants</servlet-name>
        	<servlet-class>project.server.ServicesDistantImpl</servlet-class>
        </servlet>
        <servlet-mapping>
       		<servlet-name>servicesDistants</servlet-name>
        	<url-pattern>/project.Application/servicesDistants</url-pattern>
        </servlet-mapping>

    Tout le monde savait que c'était impossible. Il est venu un imbécile qui ne le savait pas et qui l'a fait. Marcel PAGNOL
    On ne savait pas que c'était impossible, alors on l'a fait. John Fitzgerald KENNEDY.
    L'inexpérience est ce qui permet à la jeunesse d'accomplir ce que la vieillesse sait impossible. Paul (Tristant) BERNARD
    La meilleure façon de prédire l'avenir, c'est de l'inventer.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Erreur GWT Appel RPC
    Par miya dans le forum GWT et Vaadin
    Réponses: 16
    Dernier message: 11/03/2010, 15h49
  2. Appel RPC impossible avec des StringBuffer ?
    Par M€lK!oR dans le forum GWT et Vaadin
    Réponses: 7
    Dernier message: 04/12/2009, 17h36
  3. Appels RPC RemoteObject en parallèle?
    Par ®om dans le forum Flex
    Réponses: 2
    Dernier message: 22/07/2009, 09h44
  4. Réponses: 6
    Dernier message: 30/12/2008, 19h44
  5. comment faire un appel RPC dans Command
    Par groupe dans le forum GWT et Vaadin
    Réponses: 7
    Dernier message: 27/06/2008, 11h36

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