| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/01/2010 12:32:53
|
EugenioMonteiro
JavaTeenager
![[Avatar]](/images/avatar/ea7fe912d5c09bd9597f4b03217e8fff.jpg)
Membro desde: 17/11/2007 15:36:32
Mensagens: 176
Offline
|
Tenho um problema com a chamada de um Servlet via Flex. Ao clicar em um botão, o sistema Flex deve chamar um Servlet para enviar um e-mail. Passo os parâmetros pela url. Isso funciona bem, porém quando um usuário externo a rede tenta utilizar essa aplicação, o Flex apresenta erro de violação de segurança e não faz a chamada ao Tomcat. A explicação para isso é óbvia: o aplicativo em flash roda no cliente e o Servlet roda no servidor, como o Tomcat não pode ser acessado externamente, ocorre o erro.
Eu pensei em uma solução. Como aqui o Apache e o Tomcat estão não mesma máquina, eu faria uma chamada via AMFPHP a uma função PHP que, por sua vez chamaria a url do Tomcat. Como eu faria isso, de modo que não seja aberta nenhuma nova janela (página)?
This message was edited 1 time. Last update was at 22/01/2010 07:58:26
|
Analista de T.I.
Universidade Federal de Minas Gerais
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/01/2010 14:19:39
|
fabiophx
Java Ninja
Membro desde: 17/04/2006 14:05:56
Mensagens: 283
Localização: Montenegro-RS
Offline
|
Eugênio,
Pelo q eu entendi a tua aplicação esta na tua máquina de desenvolvimento?
Pelo seguinte, por segurança o Flash Player não permite q o swf acesse outro servidor q não o seu, só é permitido se o servidor externo tem o crossdomain.xml informando q o servido está autorizado.
Qd vc roda do Flex Builder o teu swf pode acessar qq servidor, pq teoricamente vc está num ambiente seguro.
Dá uma olhada na tua estrutura talvez seja isso.
[]s
|
Fabio da Silva
http://fabiophx.blogspot.com/ |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/01/2010 14:40:15
|
henrique.marino
Thread.start()
Membro desde: 29/09/2009 18:12:26
Mensagens: 37
Offline
|
Oi Eugênio
Não existem problemas em acessar um Servlet de uma aplicação Flex, a única coisa que você deve respeitar (como o Fábio falou):
1) Se você acessa a sua aplicação de http://www.meudominio.com/flex/Index.html, a chamada deve ir para http://www.meudominio.com/flex/servlet
2) Caso você deseje acessar outro domínio, o domínio deve permitir esse acesso, dado as políticas de segurança do Flash Palyer. Ex. para acessar um serviço em www.guj.com.br, o domínio deve permitir e para isso utilizamos um arquivo chamado crossdomain.xml
3) Se o domínio não permite o acesso, você poderá fazer atravéz de proxy (verifique as configurações de proxy do BlazeDS), ou seja, a chamada do Flex é feita para o seu dominio que consulta o serviço bloqueado e retorna para o Flex.
Você relatou que o tomcat está bloqueado? Mais o cliente tem acesso a aplicação Flex?
[]s,
|
Henrique F. Marino
www.dclick.com.br
blog.dclick.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/01/2010 15:46:19
|
EugenioMonteiro
JavaTeenager
![[Avatar]](/images/avatar/ea7fe912d5c09bd9597f4b03217e8fff.jpg)
Membro desde: 17/11/2007 15:36:32
Mensagens: 176
Offline
|
henrique.marino wrote:Oi Eugênio
Não existem problemas em acessar um Servlet de uma aplicação Flex, a única coisa que você deve respeitar (como o Fábio falou):
1) Se você acessa a sua aplicação de http://www.meudominio.com/flex/Index.html, a chamada deve ir para http://www.meudominio.com/flex/servlet
2) Caso você deseje acessar outro domínio, o domínio deve permitir esse acesso, dado as políticas de segurança do Flash Palyer. Ex. para acessar um serviço em www.guj.com.br, o domínio deve permitir e para isso utilizamos um arquivo chamado crossdomain.xml
3) Se o domínio não permite o acesso, você poderá fazer atravéz de proxy (verifique as configurações de proxy do BlazeDS), ou seja, a chamada do Flex é feita para o seu dominio que consulta o serviço bloqueado e retorna para o Flex.
Você relatou que o tomcat está bloqueado? Mais o cliente tem acesso a aplicação Flex?
[]s,
Henrique, o Servlet precisa estar exatamente no mesmo diretório do Flex?
O sistema Flex está em
www.meudominio.com.br/sistemas/rotas, e o Servlet está em http://ip_do_meu_domínio:8081/ServidorDeRelatorios/EnvioEmail. O Endereço do Tomcat não pode ser acessado externamente, será preciso liberar acesso externo à porta 8081 para que funcione o crossdomain?
|
Analista de T.I.
Universidade Federal de Minas Gerais
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 21/01/2010 20:46:00
|
henrique.marino
Thread.start()
Membro desde: 29/09/2009 18:12:26
Mensagens: 37
Offline
|
Oi Eugenio,
meudominio.com.br é diferente de 192.168.16.5 (ou o ip) ou até mesmo localhost. Isso fará com que o Flex precise de um crossdomain para funcionar. No seu caso, a configuração do tomcat está a seu alcance, ou seja, você pode colocar o arquivo crossdomain.xml liberando somente meudominio.com.br sem problemas, entendeu?
[]s,
|
Henrique F. Marino
www.dclick.com.br
blog.dclick.com.br |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 22/01/2010 07:30:05
|
EugenioMonteiro
JavaTeenager
![[Avatar]](/images/avatar/ea7fe912d5c09bd9597f4b03217e8fff.jpg)
Membro desde: 17/11/2007 15:36:32
Mensagens: 176
Offline
|
Resolvido, criei o arquivo crossdomain.xml permitindo acesso do ip onde está o sistema Flex e salvei na pasta .../tomcat/webapps/ROOT.
Muito obrigado.
This message was edited 1 time. Last update was at 22/01/2010 07:57:43
|
Analista de T.I.
Universidade Federal de Minas Gerais
|
|
|
 |
|
|