Applet na web

9 respostas
gbazilio

Boa noite,

Tenho um applet que acessa banco de dados firebird.
Consigo rodar ele na mesma máquina que estou rodando o firebird. Mas quero que ele rode em qualquer máquina q tenha acesso a web. O que preciso fazer para isso acontecer?

Qdo rodo a partir de outra máquina, aparece o seguinte erro:

ClassNotFoundException: org.firebirdsql.jdbc.FBDriver

Como faço para o applet ficar disponível na web, sem esse problema?

O que a máquina cliente precisa ter para acessar o applet?
Preciso instalar o firebird na máquina de quem for usar o applet?
Se precisar, tem como colocar os driver direto dentro do .jar?

9 Respostas

gbazilio

eu fiz isso, mas ñ deu certo…
coloquei todos os arquivos .jar do firebird dentro da pasta junto com os arquivos .class e empacotei td…
e essa tag applet eu fiz extamente do jeito q vc falou…
mas ñ sei aonde está o problema…
oq pode ser?

A

Cara!

Você precisa fazer o seguinte

&lt;applet codebase="applets/meus_applets" archive="lib1.jar, lib2.jar, lib3.jar" code=“applet1.class” height=“400” width=“400”></applet>

codebase é a pasta onde se encontram os .class e os .jar utilizados pelo seu applet.

archive são os .jar que você deseja adicionar ao classpath deste applet em específico

e code vc já manja né!

Espero ter ajudado!

T

Não use applets para acessar diretamente bancos de dados. Deixe essa função com um web container (ex. Tomcat).

gbazilio

pq ñ usar applet para acessar banco de dados diretamente?
Se eu usar um servlet para fazer o seviço de comunicação com o banco de dados, acho q cairia no mesmo problema…

como ele acessaria o banco de dados firebird na web?

o servidor de hospedagem deve ter suporte a banco de dados firebird?? como funciona isso?

Como que o servlet ia acessar um banco de dados na web, onde ñ instalamos nda, já que os drivers do firebird precisam ser instalados na máquina (localhost) para que o acesso funcione?

Essas perguntas devem ser simples de responder, mas eu estou realmente comçando nessa área de web e java em geral!!

Abraços

T

Você tem problemas com deployment (como o tal jar que deve ser distribuído e posto em um lugar especial, e o applet que deve ser assinado etc.).
Além disso você pode ter um problema de acabar esgotando as conexões com o banco de dados (por exemplo, se a conexão é aberta no “start” do applet mas não é fechada por algum motivo, então a conexão acaba ficando “pendurada”).
Outro problema é se você estiver hospedando o applet e o banco de dados em lugares diferentes, aí você teria de abrir portas no firewall, o que não é recomendado quando se usa bancos de dados.

Não porque

  • servlets não precisam ser assinados
  • é só um lugar para você fazer a tal configuração, não em N lugares
  • você pode usar um connection pool no seu web container, que economiza conexões do banco e deixa o processo mais rápido

Você teria de fazer suas transações (não usar ResultSet; talvez no máximo WebRowSet que é uma forma serializada em XML do resultset)

Nesse caso seu servidor de hospedagem deveria hospedar o banco também.

gbazilio

Aco q vou dar uma olhada em servlets entaum, mas enquanto ñ olho…
voltando ao problema do applet…

acho q consegui fazer o cliente achar os drivers, mas agora o problema é o seguinte…qdo o clietne tenta acessar o applet ( no acaso o applet acessaria o bd nesse momento) uma exceção de segurança é disparada…

  • access denied -
    Porém o applet já está assinado…tanto que o qdo abro ele a partir da máquina do cliente, ele pergunta se quero mesmo rodar o applet que é assinado por tal pessoa (no caso eu).

Usei os seguintes passos para assinar o applet:

  1. jar cvf Teste.jar *.class - crie o jar aki

  2. keytool -genkey -alias assinar -keystore chave - criei a chave aki

  3. jarsigner -keystore chave -signedjar sTeste.jar Teste.jar assinar - assinei o jar aki

oq deve estar acontecendo??? pode me ajudar?

T

Todos os jars que sua aplicação usa (mesmo os do driver) devem estar assinados. (Não tem problema se você mesmo assinar o jar do driver).

gbazilio

thingol…
vc resolveu meu problema kra…
brigadão mesmo…até agora tava travado nisso, pelo menos disso passou, vamos ver quais serão os próximos problemas…uahuhauha
mas tive akele problema com o firewall que vc citou em uma das mensagens…tive q desabilitar o firewall pra poder rodar o applet.

kra…agora voltando a falar de servlet…surgiram varias duvidas

pq servlet ñ teria q desabilitar o firewall? e pq no servlet a conexão ñ fica “pendura” se eu ñ fecha-la por algum motivo?

Um kra falou q se eu fizer essa conexão applet-database, eu deixo a porta do banco aperta pra qualquer um, mas se eu fizer applet-servlet-database, ñ tem esse problema…pq isso??

outra coisa…eu de qualquer maneira teria de assinar os drivers do firebird pra poder rodar o servlet, certo? pq o servlet e os drivers ficariam no endereço de hospedagem…ta certo??

se fosse um banco de dados grande, como eu faria para poder, de qualquer lugar, ter acesso a ele através de um servlet? nesse caso o banco de dados ñ iria para o servidor de hospedagem da página, certo?? entaum como funciona??

Abraços

seufagner

Cara… voce precisa empacotar o driver e todas as dependencias do applet em um arquivo .jar… este que corresponderá a distribuição do applet.

Se tua view for html ou utilize esta linguagem, voce adiciona uma tag o atributo “archive” com o valor correspondente ao URL do jar que contem o applet, e o “code” indicando a classe que estende Applet…

lembre que os novos padroes estabelecidos pelo w3c depreciaram esta tag… eles indicam o uso de

Criado 27 de dezembro de 2006
Ultima resposta 27 de dez. de 2006
Respostas 9
Participantes 4