Mysql
 sql >> Base de données >  >> RDS >> Mysql

Accès à la base de données GWT sans RPC

Il y a 2,5 raisons pour lesquelles vous ne pouvez pas utiliser gwt pour accéder directement à MySQL.

Raison #1.GWT est compilé en Javascript. Vous devez ouvrir un socket vers le serveur de base de données. GWT ne vous permet pas d'ouvrir un socket. En fait, aucun navigateur non augmenté (avant l'avènement de html5) n'est capable d'ouvrir un socket. Mais vous pouvez ouvrir un socket en utilisant Flash actionscript ou HTML 5 javascript.

Raison #2.OK, disons que vous avez utilisé des sockets HTML5. Et vous avez passé 6 mois à écrire en Javascript une connectivité JDBC. Mais, votre websocket aurait toujours besoin d'adresser un servlet sur le serveur qui aiderait votre websocket à établir une connexion persistante - et mysql est incapable d'effectuer un tel établissement.

Raison #3.SLD - Restriction SOP :(Politique d'origine de domaine de second niveau) Le navigateur standard limite ses pages pour qu'elles puissent uniquement demander et inclure du contenu provenant du même domaine de second niveau (SLD) que le serveur qui fourni cette page au navigateur. Les domaines de premier niveau (et de premier niveau et demi) sont tels que .com, .org, .net, .me.us ou .co.uk. Ainsi, les noms de domaine tels que google.com, fbi.gov, mit.edu sont des domaines de second niveau. Alors que mail.google.com serait un domaine de troisième niveau. Par conséquent, GWT ne fonctionnerait que dans les limites d'un SLD. Votre serveur Web doit également être accessible sur le même SLD que votre serveur mysql.

L'exigence de SLD-SOP et de tunneling est de combler une faille de sécurité qui aurait pu permettre à n'importe quel tom-rick-or-mary de se connecter à votre système via votre navigateur. Le tunneling est toujours nécessaire pour qu'un navigateur se connecte à un serveur autre qu'un serveur http. Le tunneling se produit lorsqu'un navigateur exploite le serveur Web en tant que yenta (en yiddish pour personne occupée/go-between/match-maker) pour accéder à un autre serveur.

Vous n'avez pas d'autre choix que d'utiliser GWT-RPC. Peut-être que vous ne souhaitez pas utiliser RPC, alors vous pouvez utiliser RequestBuilder, ou Script-Include ou RequestFactory. Mais ce sont tous encore des moyens divers de creuser des tunnels. http://h2g2java.blessedgeek.com /2011/06/gwt-requestbuilder-vs-rpc-vs-script.html .

Il existe une raison pour laquelle vous pouvez vous connecter à votre serveur de base de données à partir de votre client gwt :votre serveur de base de données doit exécuter le moteur de connexion httpd. Autrement dit, votre application gwt accéderait au serveur de base de données via http. Je ne sais pas quelle base de données relationnelle dispose d'un accès http. Très probablement, vous devrez interroger via xml ou json.

Cependant, une entreprise pour laquelle j'avais travaillé a créé notre propre service http pour permettre un accès client "direct". "direct" est un abus de langage car nous avons utilisé tomcat. C'est encore du tunnel. Toute entreprise de base de données qui offre un accès http "direct" est toujours tunnellisée. Tunneling - pas d'échappatoire.

Vous pouvez augmenter le navigateur avec Flash et écrire une application Flash plutôt que d'utiliser GWT. Si l'accès direct est si essentiel pour vous, vous devriez abandonner GWT et développer en Flash et exécuter un moteur httpd pour votre serveur de base de données.