Problema de Socket (Java+Flex) <policy-file-request/> Erro #2048 [Resolvido]

postei no forum de RIA, mas acho q poucas pessoas acessam aquele forum e peço desculpas pelo ‘flood’,

e como muito mais pessoas acessam aqui, talvez alguem saiba a solução ^^ ##

estou com um problema com o ‘Security’ do Flash, na hora em q o XMLSocket (Flex) vai se conectar com o Socket (Java)

tenho um dominio DDNS: alucardeck.mine.nu
rodo o apache tomcat 6.0 e no ROOT dele tenho o:
policyFile.xml e o crossdomain.xml
(na verdade tenho duvida de qual nome deve ser o certo e acabei colocando os 2)
onde ambos contem o seguinte:

<?xml version="1.0"?>

Sim, está acessando na porta 80, como deveria ser.

logo, se o meu servidor estiver ligado na hora que vcs acessarem:
http://alucardeck.mine.nu/policyFile.xml ou …/crossdomain.xml
vcs conseguirão ver o arquivo lah…

feito isso, ligo minha aplicação de Servidor (Java) que instancia um objecto Socket na porta ‘alta’ 19809.

e em seguida rodo minha aplicação Flex pelo browser no seguinte link:
http://alucardeck.mine.nu/GenesisWars/
entao o aplicativo em Flex eh iniciado,
a classe XMLSocket() eh instanciada da seguinte maneira:

xmlsock = new XMLSocket(); // em seguida todos os listeners são adicionados corretamente Security.loadPolicyFile("http://alucardeck.mine.nu/crossdomain.xml"); // ou .../policyFile.xml xmlsock.connect('alucardeck.mine.nu',19809);

feito isso…
recebo no Console do meu Servidor:

Client conectou.

recebeu (201.42.129.127)

vi na net que é normal o Flex mandar esse ao tentar a conexão, indicando que ele exige um XML com o policyFile.xml em forma de String como resposta.
então envio do Java para o Flex a seguinte String:

<?xml version="1.0"?>

e entao… NADA acontece…
e um Security Error dispara no Flex após uns 5~10 segundos.

realmente nao sei mais oq fazer… jah pesquisei todos os lugares… e tem pessoas com esse erro, mas a solução deles nao resolveu a minha =/
jah tentei colocar a aplicação em Flex na pasta ROOT tb e nada…

quando eu rodo tudo isso direto em localhost… o aplicativo funciona perfeitamente.
entao sei que não é erro de ‘configuração’ entre os Sockets… jah q eles se comunicam de forma perfeita aqui.
o que ferra mesmo é quando mando pro servidor, essa porcaria de Security =[

alguem tem uma resposta?
Obrigado =]

OPa
cara printa o conteudo do XML no socket mesmo, 'e assim que eu fa’co, ele so vai solicitar o policy-file-request quando o cliente flex estiver rodando em um host diferente do servidor que ele esta tentando comunicar, por ex no cliente dentro do browser.

Ronaldo

[quote=rrigoni]OPa
cara printa o conteudo do XML no socket mesmo, 'e assim que eu fa’co, ele so vai solicitar o policy-file-request quando o cliente flex estiver rodando em um host diferente do servidor que ele esta tentando comunicar, por ex no cliente dentro do browser.

Ronaldo[/quote]

opa vlw a dica… mas nao funcionou =[

continua acontecendo o seguinte…

recebo um no socket da porta 843…
e entao respondo com o XML todo…
logo em seguida de minha resposta… eu recebo um outro no socket da porta 19809…
no qual tambem respondo com o XML todo…

e entao… aguardo alguns segundos e dah o Security Error…

alguem sabe oq mais posso fazer? eh a unica coisa me impedindo de lançar o aplicativo na web =[

ahh depois de 1 semana preso nisso, finalmente entendi o problema…
pra quem tiver o mesmo erro #2048 futuramente vai a dica:

logo após vc aceitar a conexão Socket no seu servidor Java:

Socket s = socketServer.accept();

vc deve mandar imediatamente o policy-file.xml pelo

PrintWriter pw = new PrintWriter(s.getOutputStream()); pw.write(policyFile); pw.flush();

e qdo eu digo imediatamente… eh pra vc mandar antes de fazer qualquer coisa com o seu Socket…

algo que eu nao fazia antes… jah q logo após aceitar a conexão, eu ainda instanciava 2 classes (ClientSender e ClientListener) onde ambas jah começavam a fazer a leitura do InputStream/OutputStream do Socket, e só entao eu mandar o arquivo xml.
e parece que vc nao pode fazer leitura do que chega do Client no seu Servidor, antes de mandar o policyFile.xml, se não simplesmente dah tudo errado e o FlashPlayer entra em [color=violet]modo viadagem[/color] e não aceita mais nenhum policyFile enviado mais tarde

[Resolvido] ^^

Amigão estou com o mesmo problema que vc passou, poderia me mandar um demo do que vc fez

agradeço desde já

flwss galera quem tiver alguma solução tmbm agradeço bastante

flws