sql >> Databasteknik >  >> RDS >> Mysql

GWT-databasåtkomst utan RPC

Det finns 2,5 anledningar till att du inte kan använda gwt för att komma åt MySQL direkt.

Anledning #1.GWT är kompilerad till Javascript. Du måste öppna en socket till databasservern. GWT tillåter inte att du öppnar ett uttag. Faktum är att ingen oförstärkt webbläsare (före tillkomsten av html5) kan öppna en socket. Men du kan öppna en socket med Flash actionscript eller HTML 5 javascript.

Orsak #2.OK, låt oss säga att du använde HTML5-sockets. Och du tillbringade sex månader med att skriva i Javascript en JDBC-anslutning. Men din websocket skulle fortfarande behöva adressera en servlet på servern som skulle hjälpa din websocket att upprätta en beständig anslutning - och mysql kan inte utföra en sådan etablering.

Orsak #3.SLD - SOP-begränsning:(Second Level Domain Same Origin Policy) Standardwebbläsaren begränsar sina sidor till att endast kunna begära och inkludera innehåll från samma andranivådomän (SLD) som servern som förutsatt att sidan till webbläsaren. Toppdomäner (och en och en halv toppnivå) är som .com, .org, .net, .me.us eller .co.uk. Så domännamn som google.com, fbi.gov, mit.edu är andranivådomäner. Även om mail.google.com skulle vara en domän på tredje nivå. Därför skulle GWT endast fungera inom gränserna för en SLD. Din webbserver måste också vara tillgänglig på samma SLD som din mysql-server.

SLD-SOP och tunnlingskrav är att stänga ett säkerhetshål som kunde ha tillåtit vilken tom-rick-or-mary som helst att logga in på ditt system via din webbläsare. Tunnelering krävs alltid för att en webbläsare ska kunna ansluta till en annan server än en http-server. Tunneling är när en webbläsare utnyttjar webbservern som en yenta (jiddisch för busy-body/go-between/match-maker) för att komma till en annan server.

Du har inget annat val än att använda GWT-RPC. Du kanske inte vill använda RPC, då kan du använda RequestBuilder, eller Script-Include eller RequestFactory. Men de är alla fortfarande olika sätt att tunnla. http://h2g2java.blessedgeek.com /2011/06/gwt-requestbuilder-vs-rpc-vs-script.html .

Det finns en anledning till varför du kan ansluta till din databasserver från din gwt-klient:Din databasserver måste köra httpd-anslutningsmotorn. Det vill säga, din gwt-app skulle komma åt db-servern via http. Jag är inte bekant med vilken relationsdatabas som har en http-åtkomst tillgänglig. Troligtvis skulle du behöva fråga thro xml eller json.

Ett företag som jag hade arbetat för skapade dock vår egen http-tjänst för att tillåta "direkt" klientåtkomst. "direkt" är en felaktig benämning eftersom vi använde tomcat. Det är fortfarande tunnling. Alla databasföretag som erbjuder "direkt" http-åtkomst tunnelerar fortfarande. Tunneldrivning - ingen flykt från det.

Du kan utöka webbläsaren med Flash och skriva en Flash-applikation istället för att använda GWT. Om direktåtkomst är så viktigt för dig måste du överge GWT och utveckla i Flash och köra en httpd-motor för din databasserver.



  1. mysql lagrad procedur är långsammare 20 gånger än standardfrågan

  2. Subquery returnerar mer än 1 rad - MySQL

  3. Effektivt avgöra om ett företag är öppet eller inte baserat på butikens öppettider

  4. MySQLi förberedde uttalanden som visar fel på grund av att MySQLnd inte har installerats