Pode um Applet acessar um Servlet em outro servidor?

Olá pessoal,

Seguinte… pode um applet, em um servidor apache, funcionando em um portal php… enviar e receber comandos de um Servlet em outro servidor (não na mesma máquina)?

Policy? Signed jar? Impossível?

Obrigado,
Rodrigo

HttpConnection ?

tem sim, inclusive tem um framework que te ajuda nisso, eh o
Jakarta Commons HttpClient

Olá,

@fzampa

Estou usando justamente HttpConnection, e ainda assim tenho exceções AccessDenied;

@rodrigo_gomes

Obrigado pela dica :wink:

Eis a Stack Trace da exceção (estou tentando conectar no IP 192.168.0.8, porta 80, que é o Servidor Tomcat 5.5.9):

java.security.AccessControlException: access denied (java.net.SocketPermission 192.168.0.8:8080 connect,resolve)
at java.security.AccessControlContext.checkPermission(Unknown Source)
at java.security.AccessController.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkPermission(Unknown Source)
at java.lang.SecurityManager.checkConnect(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.<init>(Unknown Source)
at sun.net.www.http.HttpClient.New(Unknown Source)
at sun.net.www.http.HttpClient.New(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at com.clienteui.logica.Comunicador.login(Comunicador.java:56)
at com.clienteui.ui.SuporteUI.init(SuporteUI.java:43)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

Ano passado eu utilizava HttpConnection pra fazer isso que vc está precisando… De dentro da faculdade pra acesso ao servidor (que estava externo) eu não conseguia. Até que mascararam a máquina (liberaram ela no firewall). Depois disso deu certo.

Será se não é o seu caso? Tem alguma coisa entre sua máquina e o servidor? Parece que não, mas isso me consumiu uma semana de dor cabeça :wink:

Olá

Sua applet é assinada? Acho que não e este é o passo que está faltando.

[]s
Luca

Olá,

Realmente, não assinei meu applet. Como devo fazê-lo? (nunca fiz isso antes). Claro, vou procurar referências para aprender, mas tem algum passo específico na distribuição do Applet?

Se alguém puder me fornecer link para um bom tutorial ou artigo, eu agradeço :wink:

Obrigado pela ajuda, pessoal!

Já consegui fazer a assinatura do JAR, tudo funcionando. Muito obrigado à todos!

Olá

OK, beleza! Mas de todo modo incluo abaixo os passos que usei há mais de 3 anos para fazer isto e que quem quiser usar deve conferir estudando em links que pode encontrar no google pesquisando por signed applets ou coisa parecida. Não garanto que esteja tudo certo.

Passos para criar um certificado digital e assinar uma applet usando Java
(Troque todos os campos com SEU ou SUA por seus dados)

  1. Criar a applet normalmente.

  2. Criar a chave com keytool no prompt do DOS

c:\SEUdir>keytool -keystore SEUkeystore.keystore -genkey -keyalg rsa -alias SEUalias
Enter keystore password: SUAsenha
What is your first and last name?
[Unknown]: SEUdominio
What is the name of your organizational unit?
[Unknown]: SEUdepartamento
What is the name of your organization?
[Unknown]: SUAempresa
What is the name of your City or Locality?
[Unknown]: SUAcidade
What is the name of your State or Province?
[Unknown]: SEUestado
What is the two-letter country code for this unit?
[Unknown]: SEUpais
Is CN=SEUdominio, OU=SEUdepartamento, O=SUAempresa, L=SUAcidade, ST=SEUestado, C=SEUpais correct?
[no]: yes

Enter key password for &lt;SEUalias&gt;
(RETURN if same as keystore password): SUAsenhadoalias.

c:\SEUdir>
  1. Exportar a chave com keytool no prompt do DOS:
c:\SEUdir>keytool -export -keystore SEUkeystore.keystore -alias SEUalias -file SEUarquivocontendocertificado.crt
Enter keystore password: SUAsenha
Certificate stored in file &lt;SEUarquivocontendocertificado.crt&gt;

c:\SEUdir>
  1. Crie SEUjar normalmente no prompt do DOS (com ant) ou com ajuda do seu IDE

  2. Assine o jar com jarsigner:

c:\SEUdir>jarsigner -keystore SEUkeystore.keystore SEUJar.jar SEUalias
Enter Passphrase for keystore: SUAsenhadoalias
Enter key password for SEUalias: SUAsenha
c:\SEUdir>
  1. Criar um arquivo .html para usar a applet através do Plugin

No prompt do DOS, usar o HTML Converter (htmlconverter) da mesma versão do Java usado na applet para converter a página feita usando o antigo e obsoleto label APPLET. O HTML Converter funciona do seguinte modo: primeiro copia o arquivo dado para um temporário. Neste arquivo temporário é feita a busca pelo label APPLET e a troca do que está entre os labels <APPLET> e </APPLET> de acordo com o padrão pedido. Se a conversão for bem sucedida, o arquivo original é renomeado como backup e o temporário é salvo com o nome do original.

  1. Para certificados auto assinados ou certificados não aceitos automaticamente pelo browser, é preciso fazer com que o certificado que assina a applet seja reconhecido pelo browser

Isto pode ser feito de 2 modos:

a) Carregar o certificado no Browser do cliente a partir de uma página html lida remotamente e o cliente deve aceitar o certificado
b) Alterar no cliente o aquivo JAVA_HOME/lib/security/cacerts fazendo a importação do certificado (SEUarquivocontendocertificado.crt) para ele.

É isso aí, qualquer dúvida grite!

[]s
Luca

É isso aí, foi isso que fiz seguindo os passos de um pequeno tutorial da web: http://www.icesoft.com/developer_guides/icreader_icebrowser_bean/htmlguide/basics16.html

Novamente, obrigado!