FLEX + PHP + JAVA SERVLET [RESOLVIDO]  XML
Índice dos Fóruns » RIA - Flex, JavaFX e outros
Autor Mensagem
EugenioMonteiro
JavaTeenager
[Avatar]

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

[MSN]
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/
[WWW]
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
EugenioMonteiro
JavaTeenager
[Avatar]

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

[MSN]
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
EugenioMonteiro
JavaTeenager
[Avatar]

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

[MSN]
 
Índice dos Fóruns » RIA - Flex, JavaFX e outros
Ir para:   
Powered by JForum 2.1.8 © JForum Team