Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Acesso ao banco de dados GWT sem RPC


Existem 2,5 razões pelas quais você não pode usar o gwt para acessar diretamente o MySQL.

Razão #1.GWT é compilado em Javascript. Você precisa abrir um soquete para o servidor de banco de dados. O GWT não permite que você abra um soquete. Na verdade, nenhum navegador não aumentado (antes do advento do html5) é capaz de abrir um soquete. Mas você pode abrir um soquete usando o Actionscript do Flash ou o HTML 5 javascript.

Razão #2.OK, digamos que você usou sockets HTML5. E você passou 6 meses escrevendo em Javascript uma conectividade JDBC. Mas, seu websocket ainda precisaria endereçar um servlet no servidor que ajudaria seu websocket a estabelecer uma conexão persistente - e o mysql é incapaz de realizar tal estabelecimento.

Razão #3.SLD - Restrição SOP:(Política de mesma origem de domínio de segundo nível) O navegador padrão restringe suas páginas para poder solicitar e incluir apenas conteúdo do mesmo domínio de segundo nível (SLD) que o servidor que forneceu essa página ao navegador. Os domínios de nível superior (e de nível superior e meio) são como .com, .org, .net, .me.us ou .co.uk. Portanto, nomes de domínio como google.com, fbi.gov, mit.edu são domínios de segundo nível. Enquanto, mail.google.com seria um domínio de terceiro nível. Portanto, o GWT funcionaria apenas dentro dos limites de um SLD. Seu servidor web também deve estar acessível no mesmo SLD que seu servidor mysql.

O requisito SLD-SOP e de encapsulamento é fechar uma brecha de segurança que poderia ter permitido que qualquer tom-rick-or-mary fizesse login no seu sistema através do seu navegador. O encapsulamento é sempre necessário para que um navegador se conecte a um servidor diferente de um servidor http. Tunneling é quando um navegador explora o servidor web como um yenta (iídiche para corpo ocupado/intermediário/criador de partidas) para chegar a outro servidor.

Você não tem escolha a não ser usar o GWT-RPC. Talvez você não queira usar RPC, então você pode usar RequestBuilder, ou Script-Include ou RequestFactory. Mas todos eles ainda são meios diversos de tunelamento. http://h2g2java.blessedgeek.com /2011/06/gwt-requestbuilder-vs-rpc-vs-script.html .

Há uma razão pela qual você pode se conectar ao seu servidor de banco de dados a partir de seu cliente gwt:Seu servidor de banco de dados deve executar o mecanismo de conexão httpd. Ou seja, seu aplicativo gwt acessaria o servidor db através de http. Não estou familiarizado com qual banco de dados relacional tem um acesso http disponível. Muito provavelmente, você teria que consultar thro xml ou json.

No entanto, uma empresa para a qual trabalhei criou nosso próprio serviço http para permitir acesso "direto" ao cliente. "direct" é um nome impróprio porque usamos o tomcat. É ainda tunelamento. Qualquer empresa de banco de dados que ofereça acesso http "direto" ainda está fazendo um túnel. Túneis - não há como escapar disso.

Você pode aumentar o navegador com Flash e escrever um aplicativo Flash em vez de usar o GWT. Se o acesso direto for tão essencial para você, você teria que abandonar o GWT e desenvolver em Flash e executar um mecanismo httpd para seu servidor de banco de dados.