sql >> Base de Datos >  >> RDS >> Mysql

Acceso a base de datos GWT sin RPC

Hay 2.5 razones por las que no puede usar gwt para acceder directamente a MySQL.

Razón #1.GWT está compilado en Javascript. Debe abrir un socket en el servidor de la base de datos. GWT no le permite abrir un socket. De hecho, ningún navegador no mejorado (antes de la llegada de html5) puede abrir un socket. Pero puede abrir un socket usando Flash actionscript o HTML 5 javascript.

Razón #2.OK, digamos que usó sockets HTML5. Y te pasaste 6 meses escribiendo en Javascript una conectividad JDBC. Pero, su websocket aún necesitaría dirigirse a un servlet en el servidor que ayudaría a su websocket a establecer una conexión persistente, y mysql no puede realizar tal establecimiento.

Motivo n.º 3. SLD - Restricción de SOP:(Política del mismo origen del dominio de segundo nivel) El navegador estándar restringe sus páginas para que solo pueda solicitar e incluir contenido dentro del mismo dominio de segundo nivel (SLD) que el servidor que proporcionó esa página al navegador. Los dominios de nivel superior (y de nivel superior y medio) son como .com, .org, .net, .me.us o .co.uk. Entonces, los nombres de dominio como google.com, fbi.gov, mit.edu son dominios de segundo nivel. Mientras que mail.google.com sería un dominio de tercer nivel. Por lo tanto, GWT solo funcionaría dentro de los límites de un SLD. Su servidor web también debe ser accesible en el mismo SLD que su servidor mysql.

El requisito de SLD-SOP y tunelización es cerrar un agujero de seguridad que podría haber permitido que cualquier tom-rick-or-mary inicie sesión en su sistema a través de su navegador. La tunelización siempre es necesaria para que un navegador se conecte a un servidor que no sea un servidor http. La tunelización es cuando un navegador explota el servidor web como un yenta (yiddish para entrometido/intermediario/casamentero) para llegar a otro servidor.

No tiene más remedio que usar GWT-RPC. Quizás no desee usar RPC, entonces podría usar RequestBuilder, Script-Include o RequestFactory. Pero todos ellos siguen siendo diversos medios de excavación de túneles. http://h2g2java.blessedgeek.com /2011/06/gwt-requestbuilder-vs-rpc-vs-script.html .

Hay una razón por la que puede conectarse a su servidor de base de datos desde su cliente gwt:su servidor de base de datos debe ejecutar el motor de conexión httpd. Es decir, su aplicación gwt accedería al servidor db a través de http. No estoy familiarizado con qué base de datos relacional tiene un acceso http disponible. Lo más probable es que tenga que consultar a través de xml o json.

Sin embargo, una empresa para la que había trabajado creó nuestro propio servicio http para permitir el acceso "directo" al cliente. "directo" es un nombre inapropiado porque usamos tomcat. Todavía está haciendo un túnel. Cualquier empresa de base de datos que ofrezca acceso http "directo" sigue haciendo túneles. Túneles:no hay escapatoria.

Puede aumentar el navegador con Flash y escribir una aplicación Flash en lugar de usar GWT. Si el acceso directo es tan esencial para usted, tendría que abandonar GWT y desarrollar en Flash y ejecutar un motor httpd para su servidor de base de datos.