Applet na web  XML
Índice dos Fóruns » Desenvolvimento Web
Autor Mensagem
gbazilio
Thread.start()

Membro desde: 05/04/2006 21:08:36
Mensagens: 27
Offline

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:


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?
seufagner
JavaEvangelist
[Avatar]

Membro desde: 06/05/2005 16:33:09
Mensagens: 447
Localização: Rio de Janeiro - RJ
Offline

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 <applet> 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 <object>

@seufagner
seufagner.com.br
"Simplicidade é a maior forma de sofisticação"
Leonardo Da vinci
[Email] [WWW]
gbazilio
Thread.start()

Membro desde: 05/04/2006 21:08:36
Mensagens: 27
Offline

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?
afura
Debugger

Membro desde: 30/10/2004 18:53:48
Mensagens: 62
Offline

Cara!

Você precisa fazer o seguinte

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!
[MSN]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

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

Membro desde: 05/04/2006 21:08:36
Mensagens: 27
Offline

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
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

gbazilio wrote:pq ñ usar applet para acessar banco de dados diretamente?

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.

Se eu usar um servlet para fazer o seviço de comunicação com o banco de dados, acho q cairia no mesmo problema...

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

como ele acessaria o banco de dados firebird na web?

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

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

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


[WWW]
gbazilio
Thread.start()

Membro desde: 05/04/2006 21:08:36
Mensagens: 27
Offline

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?
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

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).
[WWW]
gbazilio
Thread.start()

Membro desde: 05/04/2006 21:08:36
Mensagens: 27
Offline

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
 
Índice dos Fóruns » Desenvolvimento Web
Ir para:   
Powered by JForum 2.1.8 © JForum Team