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 :

Configurer Apache de GWT


Sujet :

GWT et Vaadin Java

  1. #1
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 62
    Par défaut Configurer Apache de GWT
    Salut tout le monde,

    J'ai une question sur comment je peux modifier le timout de Apache fourni avec gwt ?

    Merci pour vos aides.

  2. #2
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 62
    Par défaut
    je crois que ça revient à donner un timeout à mon callback de type AsyncCallback<String>, comment faire je n'ai absolument aucune idée !

    Si vous en avez quelques unes je suis preneur .

  3. #3
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 62
    Par défaut

  4. #4
    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
    Par défaut
    Tu veux parler de Jetty (gwt 1.6) ou de Tomcat (gwt 1.5) ?

  5. #5
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 62
    Par défaut
    j'ai installé gwt 1.6 et j'utilise hostedMod, je crois entendu parler de Tomcat fourni avec.

    Comme je rencontre un problème avec une requête HTTP coté serveur :

    Je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	fileURL = new URL(query);	
        	InputStream iStream = null;
    		HttpURLConnection myConnection = (HttpURLConnection) fileURL.openConnection();
            try {
            	myConnection.connect();
            	iStream = myConnection.getInputStream();
    ça marche bien lorsque le traitement ne prend que 20 secondes à peu près. dès que le traitement dépasse ce 20 secondes j'obtiens une IOException car je fais myConnection.getInputStream(); alors qu'il est vide, je me suis dis peut être si je pourrai configurer mon apache fourni avec GWT mais je ne l'ai pas trouvé dans le fichier d'installation.
    Merci.

  6. #6
    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
    Par défaut
    Si tu utilises gwt , c'est jetty qui est utilisé en hosted mode et il n'y a pas d'apache.

    Maintenant, dans le code (côté serveur) que tu nous montre, tu ouvre une connexion http sur une url.
    Est-ce que cette url commence par http://locahost, dans ce cas, c'est bien jetty qui te fourni la ressource et il y a peut être un problème de config.

    Si cette url commence par autre chose, il faudrait voir du côté du serveur http qui délivre cette ressource, c'est lui qui est a paramétré.

    En tout cas, ça n'a pas l'air d'un problème gwt mais plutôt serveur http (jetty si localhost ou autre)

  7. #7
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 62
    Par défaut
    Tout à fait ma requête commence bien par localhost.

    la voilà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://localhost/monAlias/prog.exe/Service1?callBack=Information&parameters=
    mais j'ai une architecture un petit peu bizarre :

    coté serveur GWT je lance une requête HTTP en java classique, si le temps d'exécution de ma requête est petit ça marche sinon lorsque je fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    iStream = myConnection.getInputStream();
    avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    fileURL = new URL(query);	
        	InputStream iStream = null;
    		HttpURLConnection myConnection = (HttpURLConnection) fileURL.openConnection();
    ça me lève une exception :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "http://localhost/monAlias/prog.exe/Service1?callBack=Information&parameters="  false timed out.
    J'ai trouvé un code pour les requête HTTP à partir du 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
    19
    20
    21
    22
    23
    24
    25
    	public void doGetWithTimeout(String url) {
    		 	        RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, url);
     
    		 	        try {
    		 	          builder.setTimeoutMillis(1);
     
    		 	          builder.sendRequest( "Content-type: text/xml", new RequestCallback() {
    		 	            public void onError(Request request, Throwable exception) {
    		 	              if (exception instanceof RequestTimeoutException) {
    		 	                  Window.alert("Timeout: " +
    		 	                		  ((RequestTimeoutException)exception).getTimeoutMillis() + "msec.");       
     
    		 	              } else {
    		 	                  Window.alert("Exception: " + exception.getMessage());
    		 	              }
    		 	            }
     
    		 				public void onResponseReceived(Request request, Response response) {
    		 					System.out.println("######## Response HTTP :" + response.getText());
    		 				}
    		 	          });
    		 	        } catch (RequestException e) {
    		 	          Window.alert("Failed to send the request: " + e.getMessage());
    		 	        }
    		 	      }
    mais il me signale que ma requête n'est pas bien formée !

  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
    Par défaut
    C'est quoi l'exception qui te délivre "http://localhost/monAlias/prog.exe/Service1?callBack=Information&parameters=" false timed out.

    Tu n'as rien d'autre que ce message, la trace de l'exception par ex. ?

  9. #9
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 62
    Par défaut
    voilà la trace de l'exception avec le premier cas lorsque je fais myConnection.getInputStream() :

    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
     
    java.io.IOException: http method GET against URL http://localhost/monAlias/prog.exe/Service1?callBack=Information&parameters=  timed out.
    	at com.google.appengine.api.urlfetch.URLFetchServiceImpl.handleApplicationException(URLFetchServiceImpl.java:56)
    	at com.google.appengine.api.urlfetch.URLFetchServiceImpl.fetch(URLFetchServiceImpl.java:30)
    	at com.google.apphosting.utils.security.urlfetch.URLFetchServiceStreamHandler$Connection.fetchResponse(URLFetchServiceStreamHandler.java:378)
    	at com.google.apphosting.utils.security.urlfetch.URLFetchServiceStreamHandler$Connection.getInputStream(URLFetchServiceStreamHandler.java:278)
    	at com.exemple.server.HttpQuery.getResponseQuery(HttpQuery.java:31)
    	at com.exemple.server.GreetingServiceImpl.greetServer(GreetingServiceImpl.java:27)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    	at java.lang.reflect.Method.invoke(Unknown Source)
    	at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:527)
    	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:166)
    	at com.google.gwt.user.server.rpc.RemoteServiceServlet.doPost(RemoteServiceServlet.java:86)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:713)
    	at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
    	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
    	at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43)
    	at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
    	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
    	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:712)
    	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
    	at com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:54)
    	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
    	at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:306)
    	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
    	at org.mortbay.jetty.Server.handle(Server.java:313)
    	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506)
    	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:844)
    	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:644)
    	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:205)
    	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
    	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396)
    	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:442)

    Mais ça c'est lorsque j'utlise l'appel à une application distante via un serveur Apache, et ça marche lorsque le traitement n'est pas lourd.

    Je me demande est ce qu'on peut faire des requêtes à un serveur Apache à partir de mon client GWT type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    http://localhost/monAlias/prog.exe/Service1?callBack=Information&parameters=
    Car avec le deuxième code que j'ai poster ou j'utilise "RequestBuilder ", il m'affiche le message suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    The URL http://localhost/monAlias/prog.exe/Service1?callBack=Information&parameters= is invalid or violates the same-origin security restriction

  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
    Par défaut
    J'ai bien fait de te demander la trace complète car tu es un sacré coquin , tu ne m'avais pas dit que tu utilisais Google App Engine !!!

    Pour appeler à partir du client GWT une URL d'un autre domaine, pour des question de sécurité (XSS), tu dois ajouter une whilelist pour éviter des warnings.
    Avec GAE, j'ai bien peur que ce soit encore plus restrictif et que tu ne puisses pas à partir du client attaquer une url d'un autre domaine ...

    Pour appeler à partir du serveur Java une autre url, tu peux faire ce que tu veux.
    Avec GAE, il te faut passer par l'API des URL Fetch comme tu sembles le faire (et qui semble marcher lorsque le traitement est léger).
    Sinon, tu devrais lire la page :
    The URL Fetch service waits up to 5 seconds for the remote server to respond. If the server does not respond before the fetch deadline, the request fails, and an exception is thrown.
    Ce qui semble être ton cas non ?

    C'est critiquable mais compréhensible : A quoi sert une application GAE scalable (qui répond vite !!!) si tu fais appel à des ressources lentes.

  11. #11
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 62
    Par défaut
    C'est critiquable mais compréhensible : A quoi sert une application GAE scalable (qui répond vite !!!) si tu fais appel à des ressources lentes.
    Je ne sais pas en fait les types des applications GWT, et précisément GAE, tu peux m'éclaircir s.t.p est ce que mon choix n'est pas correct ? ou bien il ne tiendra pas la route si c'est le cas alors quel type d'application de GWT je dois utiliser.
    Je suis preneur.

    Merci d'avance

  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
    Par défaut
    Il faut distinguer deux choses :

    - GWT : une techno pour faire des applications web riches

    - GAE : un outil pour déployer certaines applications web sur l'infrastructure de google.


    GWT simplifie le développement d'interface web ajax dans le browser du client mais côté serveur, tu fais tout ce que tu veux ... (il faudra après déployer ton application dans un serveur d'application Java)

    GAE offre une solution de déploiement d'application web "gratuite" et limitée. Ce qui fait que même si on peux faire pas mal de chose, on ne peut pas tout faire non plus ... Il y a pas mal de limitations quand même, certaines liées à l'infrastructure du cloud, d'autres liées à la jeunesse du service.

    La question à te poser est-ce que tu veux faire ?
    • Que doit elle faire ? (des besoins spécifiques peuvent exclure GAE de l'équation parce que c'est pas possible dessus)
    • A qui se destine l'application ?
    • Comment tu vas la déployer ?


    Avec le plugin de google (et cela peut induire en erreur), tu peux choisir :
    • faire une application GWT/GAE : Tu fais ton client en GWT. La partie serveur peut tout faire ce qui est autorisé par GAE (voir les limitations de GAE: pas de base de données relationnelles, pas de thread, pas de socket, ...)
    • faire une application GAE seule : Tu fais ton client avec des JSP/servlet. La partie serveur peut tout faire ce qui est autorisé par GAE.
    • faire une application GWT seule : Tu fais ton client en GWT. La partie serveur peut tout faire mais il te faut un serveur Java (Tomcat, Jetty, Glassfish, WebLogic, JBoss, ...) installé sur une machine.

  13. #13
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 62
    Par défaut
    faire une application GWT seule : Tu fais ton client en GWT. La partie serveur peut tout faire mais il te faut un serveur Java (Tomcat, Jetty, Glassfish, WebLogic, JBoss, ...) installé sur une machine.
    c'est ça ce que je pense faire, car j'ai installé le plugin eclipse pour gwt win 1.6.4, j'ai google !-> web application Project

    mon application contient le client et le serveur, et ils communiquent via l'interface Asynchrone, je le compile en hostedMod . Et je n'ai pas encore fait le déploiement et je compte le faire sur Apache 2.2.


    Tout ça n'a rien à voir avec GAE. c'est du GWT classique non?


    alors la question est ce que le 5 sec et 1Mo comme limite de taille de réponse reste aussi limite pour GWT ?
    Si oui comment les modifiés .

    Merci

  14. #14
    Membre averti
    Inscrit en
    Mai 2009
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 62
    Par défaut
    Merci benwit infiniment.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Apache] Configuration apache, probleme
    Par Filikili dans le forum Apache
    Réponses: 4
    Dernier message: 03/05/2006, 23h49
  2. [EasyPHP] Configurer Apache pour des accées distants
    Par Fathallah dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 09/03/2006, 19h06
  3. Configuration Apache distant
    Par nah_wah dans le forum Installation
    Réponses: 3
    Dernier message: 09/01/2006, 23h10
  4. Configuration Apache
    Par LordBob dans le forum Apache
    Réponses: 6
    Dernier message: 25/11/2005, 19h26
  5. Pb de configuration, apache
    Par Bernard 2005 dans le forum Apache
    Réponses: 4
    Dernier message: 09/05/2005, 22h52

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