Monday, February 28, 2011

Re: connexion SQL impossible depuis servlet

Salut,

premièrement, si tu l'as remarqué, ce groupe de discussion est
anglophone, donc je te conseille pour tes prochains messages de
t'adresser en anglais, tu risques d'avoir plus de réponses :) Si
d'aventure tu ne parlais pas anglais, je te conseille le forum suivant
http://www.developpez.net/forums/f729/java/developpement-web-java/frameworks/gwt/
qui lui est francophone.

Concernant ton souci, je suis aussi tombé dans le panneau à mes débuts
GWT. en fait à la création de ton projet, tu as laissé activée
l'utilisation de l'AppEngine. Il faut savoir que ce mode de
développement sert principalement dans le cas où tu comptes déployer
ton application sur les serveurs App Engine de Google. Dans ce cas-là
l'accès aux données est un petit peu différent d'un accès classique à
une base de données puisque le principe est d'utiliser du mapping
objet plutôt que du sql. Si ton but est d'aller dans ce sens je te
conseille de te renseigner sur les datastores de AppEngine.

Mais je pense que tu vises plutôt un déploiement plus classique vu que
tu parles de Tomcat. Je te conseille donc de désactiver tout
simplement l'utilisation de Google App Engine dans les propriétés de
ton projet (GAE est indépendant de GWT, donc çà ne changera rien à son
execution). En fait l'explication vient du fait que quand tu
développes avec GAE, Eclipse embarque un équivalent au serveur
AppEngine qui est dédié en fonctionnement développement et fonctionne
en sandbox, avec des limitations telles que le blocage d'accès TCP
vers des ports comme celui de ton serveur Mysql.

Cordialement,

On 28 fév, 23:38, casta040 <fabiencastag...@gmail.com> wrote:
> Bonjour,
> sous ubuntu 10.10, je suis en train de développer un servlet dans une
> "web application project" sous eclipse grace au SDK GWT app engine (2)
> - 1.4.2.
>
> Dans un premier temps j'utilise un appel RPC pour établir la connexion
> avec mon serveur.
> j'execute donc le servlet coté serveur avec le code suivant:
>
> Connection conn = null;
>
>                 // figure out what server this application is being
> hosted on
>                 String url      = "jdbc:mysql://localhost:3306/PMDB";
>                 //String db       = "PMDB";
>                 String driver   = "com.mysql.jdbc.Driver";
>                 String user     = "casta";
>                 String pass     = "monpassword";
>
>                 System.out.println("connection SQL url: " + url);
>
>                 try {
>                         Class.forName(driver).newInstance();
>                         System.out.println("DEBUG MySQL JDBC driver
> loaded ok.");
>                         conn =
> DriverManager.getConnection(url,user,pass);
>                         System.out.println("DEBUG MySQLConnected with
> "+url);
>                 } catch (Exception e) {
>                         // error
>                         System.err.println("DEBUG Mysql Connection
> Error: ");
>
>                         // for debugging error
>                         e.printStackTrace();
>                 }
>
>                 if (conn == null)  {
>                         System.out.println("DEBUG ~~~~~~~~~~ can't get
> a Mysql connection");
>                 }
>
> => dans un premier temps, je souhaite utiliser le host "localhost"
> pour la mise en place. Je verrai dans un 2eme temps pour faire un vrai
> deploiement sur un serveur dédié...
>
> j'obtiens toujours le message "Mysql Connection Error: "
> avec la trace:
>
> connection SQL url: jdbc:mysql://localhost:3306/PMDB
> DEBUG MySQL JDBC driver loaded ok.
> DEBUG Mysql Connection Error:
> com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException:
> Could not create connection to database server.
>         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> Method)
>         at
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAcce ssorImpl.java:
> 57)
>         at
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstru ctorAccessorImpl.java:
> 45)
>         at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
>         at
> com.google.appengine.tools.development.agent.runtime.Runtime.newInstance_(R untime.java:
> 112)
>         at
> com.google.appengine.tools.development.agent.runtime.Runtime.newInstance(Ru ntime.java:
> 120)
>         at com.mysql.jdbc.Util.handleNewInstance(Util.java:407)
>         at com.mysql.jdbc.Util.getInstance(Util.java:382)
>         at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1013)
>         at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
>         at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:982)
>         at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:927)
>         at
> com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:
> 2413)
>         at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:
> 2163)
>         at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:794)
>         at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
>         at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> Method)
>         at
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAcce ssorImpl.java:
> 57)
>         at
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstru ctorAccessorImpl.java:
> 45)
>         at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
>         at
> com.google.appengine.tools.development.agent.runtime.Runtime.newInstance_(R untime.java:
> 112)
>         at
> com.google.appengine.tools.development.agent.runtime.Runtime.newInstance(Ru ntime.java:
> 120)
>         at com.mysql.jdbc.Util.handleNewInstance(Util.java:407)
>         at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:378)
>         at
> com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:
> 305)
>         at java.sql.DriverManager.getConnection(DriverManager.java:620)
>         at java.sql.DriverManager.getConnection(DriverManager.java:200)
>         at com.casta.pm.server.DB_Conn.getConn(DB_Conn.java:68)
>         at com.casta.pm.server.DB_PMDB.getAllJoueurData(DB_PMDB.java:36)
>         at
> com.casta.pm.server.RpcCallServiceImpl.getAllJoueurData(RpcCallServiceImpl. java:
> 28)
>         at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>         at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
> 57)
>         at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImp l.java:
> 43)
>         at java.lang.reflect.Method.invoke(Method.java:616)
>         at
> com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime .java:
> 100)
>         at
> com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:
> 569)
>         at
> com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServi ceServlet.java:
> 208)
>         at
> com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServi ceServlet.java:
> 248)
>         at
> com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(Abstract RemoteServiceServlet.java:
> 62)
>         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:
> 511)
>         at org.mortbay.jetty.servlet.ServletHandler
> $CachedChain.doFilter(ServletHandler.java:1166)
>         at
> com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFi lter.java:
> 58)
>         at org.mortbay.jetty.servlet.ServletHandler
> $CachedChain.doFilter(ServletHandler.java:1157)
>         at
> com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(Trans actionCleanupFilter.java:
> 43)
>         at org.mortbay.jetty.servlet.ServletHandler
> $CachedChain.doFilter(ServletHandler.java:1157)
>         at
> com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFile Filter.java:
> 122)
>         at org.mortbay.jetty.servlet.ServletHandler
> $CachedChain.doFilter(ServletHandler.java:1157)
>         at
> org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
> 388)
>         at
> org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
> 216)
>         at
> org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
> 182)
>         at
> org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
> 765)
>         at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
> 418)
>         at
> com.google.apphosting.utils.jetty.DevAppEngineWebAppContext.handle(DevAppEn gineWebAppContext.java:
> 70)
>         at
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
> 152)
>         at com.google.appengine.tools.development.JettyContainerService
> $ApiProxyHandler.handle(JettyContainerService.java:351)
>         at
> org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
> 152)
>         at org.mortbay.jetty.Server.handle(Server.java:326)
>         at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
> 542)
>         at org.mortbay.jetty.HttpConnection
> $RequestHandler.content(HttpConnection.java:938)
>         at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755)
>         at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
>         at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
>         at
> org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:
> 409)
>         at org.mortbay.thread.QueuedThreadPool
> $PoolThread.run(QueuedThreadPool.java:582)
> Caused by: java.security.AccessControlException: access denied
> (java.net.SocketPermission localhost resolve)
>         at
> java.security.AccessControlContext.checkPermission(AccessControlContext.jav a:
> 342)
>         at
> java.security.AccessController.checkPermission(AccessController.java:
> 553)
>         at java.lang.SecurityManager.checkPermission(SecurityManager.java:
> 549)
>         at com.google.appengine.tools.development.DevAppServerFactory
> $CustomSecurityManager.checkPermission(DevAppServerFactory.java:166)
>         at java.lang.SecurityManager.checkConnect(SecurityManager.java:1048)
>         at java.net.InetAddress.getAllByName0(InetAddress.java:1189)
>         at java.net.InetAddress.getAllByName(InetAddress.java:1128)
>         at java.net.InetAddress.getAllByName(InetAddress.java:1064)
>         at
> com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:
> 244)
>         at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:295)
>         at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:
> 2334)
>         at
> com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:
> 2371)
>         ... 53 more
> DEBUG ~~~~~~~~~~ can't get a Mysql connection
>
> voici un 'tree' de mon war directoty
>
> .
> |-- pm
> |   |-- 0A9476898799A150D840F0B1C3672921.cache.png
> |   |-- 14C623196EE1650CDC1BD9B9B7C2A0B1.cache.html
> |   |-- 396F806CD63ABD414BFBB9D57429F05B.cache.png
> |   |-- 7349FDB32932D195CB90EC6BC6DC7C54.cache.html
> |   |-- 9760B036C3B6E12FF6DEEDC917855221.cache.png
> |   |-- C5E747B45E441FDEB9914E10C75FC19E.cache.html
> |   |-- CD15EC0BBF9CD57F9198FD5C1C37122E.cache.png
> |   |-- clear.cache.gif
> |   |-- D282EA5A7A4EC586F1B603A5CC628B24.cache.html
> |   |-- DF7764EEC1903CD03C9545B354D8D8E4.cache.png
> |   |-- E44767377485D18D6B6864F65BA8EF73.cache.png
> |   |-- EDC7827FEEA59EE44AD790B1C6430C45.cache.png
> |   |-- F56E7158AAD86E64316A2CAD44B27A7E.cache.html
> |   |-- FBAD09E7DE55D6A3CB4ADB32EC54B21F.gwt.rpc
> |   |-- gwt
> |   |   `-- standard
> |   |       |-- images
> |   |       |   |-- corner_ie6.png
> |   |       |   |-- corner.png
> |   |       |   |-- hborder_ie6.png
> |   |       |   |-- hborder.png
> |   |       |   |-- ie6
> |   |       |   |   |-- corner_dialog_topleft.png
> |   |       |   |   |-- corner_dialog_topright.png
> |   |       |   |   |-- hborder_blue_shadow.png
> |   |       |   |   |-- hborder_gray_shadow.png
> |   |       |   |   |-- vborder_blue_shadow.png
> |   |       |   |   `-- vborder_gray_shadow.png
> |   |       |   |-- splitPanelThumb.png
> |   |       |   |-- vborder_ie6.png
> |   |       |   `-- vborder.png
> |   |       |-- standard.css
> |   |       `-- standard_rtl.css
> |   |-- hosted.html
> |   `-- pm.nocache.js
> |-- Pm.css
> |-- Pm.html
> `-- WEB-INF
>     |-- appengine-web.xml
>     |-- classes
>     |   |-- com
>     |   |   `-- casta
>     |   |       `-- pm
>     |   |           |-- client
>     |   |           |   |-- GreetingServiceAsync.class
>     |   |           |   |-- GreetingService.class
>     |   |           |   |-- gui$1.class
>     |   |           |   |-- gui$2.class
>     |   |           |   |-- gui$3.class
>     |   |           |   |-- gui.class
>     |   |           |   |-- JoueurManagement$1.class
>     |   |           |   |-- JoueurManagement.class
>     |   |           |   |-- joueurManagementDetail$1.class
>     |   |           |   |-- joueurManagementDetail
> $callbackAddjoueur.class
>     |   |           |   |-- joueurManagementDetail.class
>     |   |           |   |-- joueurManagementDetail
> $joueurManagementDetailUiBinder.class
>     |   |           |   |-- joueurManagementDetail.ui.xml
>     |   |           |   |-- JoueurManagement
> $getAllJoueurDataCallback.class
>     |   |           |   |-- Pm.class
>     |   |           |   |-- RpcCallServiceAsync.class
>     |   |           |   |-- RpcCallService.class
>     |   |           |   `-- RpcInit.class
>     |   |           |-- Pm.gwt.xml
>     |   |           |-- server
>     |   |           |   |-- createDB.php
>     |   |           |   |-- DB_Conn.class
>     |   |           |   |-- DB_PMDB.class
>     |   |           |   |-- DB_QueryStuff.class
>     |   |           |   |-- GreetingServiceImpl.class
>     |   |           |   |-- RpcCallServiceImpl.class
>     |   |           |   `-- RunMeToTestQuery.class
>     |   |           `-- shared
>     |   |               |-- FieldVerifier.class
>     |   |               |-- JoueurData.class
>     |   |               `-- joueurDataList.class
>     |   |-- log4j.properties
>     |   `-- META-INF
>     |       `-- jdoconfig.xml
>     |-- deploy
>     |   `-- pm
>     |       |-- rpcPolicyManifest
>     |       |   |-- manifests
>     |       |   |   `-- 81E2B41678CF16E60CC4E4BE3D73603E.txt
>     |       |   `-- manifest.txt
>     |       `-- symbolMaps
>     |           |-- 14C623196EE1650CDC1BD9B9B7C2A0B1.symbolMap
>     |           |-- 7349FDB32932D195CB90EC6BC6DC7C54.symbolMap
>     |           |-- C5E747B45E441FDEB9914E10C75FC19E.symbolMap
>     |           |-- D282EA5A7A4EC586F1B603A5CC628B24.symbolMap
>     |           `-- F56E7158AAD86E64316A2CAD44B27A7E.symbolMap
>     |-- lib
>     |   |-- appengine-api-1.0-sdk-1.4.2.jar
>     |   |-- appengine-api-labs-1.4.2.jar
>     |   |-- appengine-jsr107cache-1.4.2.jar
>     |   |-- datanucleus-appengine-1.0.8.final.jar
>     |   |-- datanucleus-core-1.1.5.jar
>     |   |-- datanucleus-jpa-1.1.5.jar
>     |   |-- geronimo-jpa_3.0_spec-1.1.1.jar
>     |   |-- geronimo-jta_1.1_spec-1.1.1.jar
>     |   |-- gwt-servlet.jar
>     |   |-- jdo2-api-2.3-eb.jar
>     |   |-- jsr107cache-1.1.jar
>     |   `-- mysql-connector-java-5.1.15-bin.jar
>     |-- logging.properties
>     `-- web.xml
>
> mon connecteur JDBC mysql-connector-java-5.1.15-bin.jar est bien dans
> le repertoire /lib
>
> j'arrive bien a me connecter a sql  via la commande :
> $>mysql -h localhost -P 3306 -u casta -p PMDB
> sachant que j'ai configuré mysql avec mon my.cf autaurisant toutes les
> adresses ip.
> J'ai aussi activé les logs coté server mysqld=> il ne reçoit jamais la
> requête de connexion. donc le problème semble se produire avant même
> la connexion a mysld....
>
> ayant une box internet dois je autorisé l'utilisation du port 3306?
> (meme j'ai deja essayé et que ça n'a apparment rien changé)
>
> Depuis Eclipse, je lance mon projet avec le raccourci fleche verte qui
> signifie "run as web application"
> Je me pose donc la question quand aux limites d'émulations de serveur
> tomcat via GWT??? cela peut il poser un pb??
> surtout que le meme bout de code mis dans un simple projet java
> fonctionne.. j'établis bien la connexion...
> suis je le premier a rencontrer ce pb?
>
> ça fait une semaine que je suis sur le problème... et je seche
> vraiment!!!!
> HELP !!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
> merci de votre soutien
>
> la prochaine étape pour moi étant d'installer TOMCAT et de lancer tout
> ça depuis tomcat. Mais vu que je n'y connais rien, j'ai peur de créer
> plus de problème de configuration/utilisation tomcat qu'autre chose...
>
> merci
> Fabien

--
You received this message because you are subscribed to the Google Groups "Google Web Toolkit" group.
To post to this group, send email to google-web-toolkit@googlegroups.com.
To unsubscribe from this group, send email to google-web-toolkit+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/google-web-toolkit?hl=en.

No comments:

Post a Comment