JApplet - Conectar com banco de dados

4 respostas
A

Bom dia…eu to fazendo um programa em JApplet, pra acessar um banco de dados e me trazer um registro…

Na hora em q eu conecto com o banco ele da erro de permissão…

estou usando

url: ja classe sun.jdbc.odbc.JdbcOdbcDriver

se alguem ja passou por esse problema…dar uma força ai…

abraços

4 Respostas

H

O problema da permissão é que o Applet não pode acessar nenhum arquivo em disco.
O Applet vai ser carregado no browser do Usuário, portanto, o Banco de Dados precisa ser distribuído.

Você vai ter que desenvolver um código que seja o Servidor do Banco de Dados, responsável por inserção, consulta, etc, e seu Applet será o Cliente, portanto sempre que for preciso fazer uma operação no banco seu applet vai fazer um acesso remoto ao computador que possua o seu programa servidor sendo executado.

Para fazer isso você pode dar uma olhada em RMI.
Qualquer dúvida é só falar!

A

só pra confirmar…

quando eu tento conectar com o banco de dados…
da esse erro

access denied (java.lang.RuntimePermission accessClassInPackage.sun.jdbc.odbc) 2

vou dar uma pesquisada no RMI então…

A

Vamos lá...

fiz um exemplo de RMI pra testar..mas to com alguns probleminhas....

o que eu faço depois de ter os codigos implementados

javac *.java
rmic ServidorMat
rmiregistry // Nessa aqui tranca
java ArrancaServidor
java Cliente

se eu não dar o rmiregistry

da um erro:
java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is:
        java.net.ConnectException: Connection refused: connect

InterfaceServidorMat .java

import java.rmi.*;

public interface InterfaceServidorMat extends Remote
{
    public double soma(double a, double b) throws RemoteException;
    public double subtrai(double a, double b) throws RemoteException;
    public double multiplica(double a, double b) throws RemoteException;
    public double divide(double a, double b) throws RemoteException;
}

ServidorMat.java

import java.rmi.*;
    import java.rmi.server.*;

    public class ServidorMat extends UnicastRemoteObject implements InterfaceServidorMat
    {
        public ServidorMat() throws RemoteException
        {
            System.out.println("Novo Servidor instanciado...");
        }

        public double soma(double a, double b) throws RemoteException
        {
            return a+b;
        }

        public double subtrai(double a, double b) throws RemoteException
        {
            return a-b;
        }

        public double multiplica(double a, double b) throws RemoteException
        {
            return a*b;
        }

        public double divide(double a, double b) throws RemoteException
        {
            return a/b;
        }

    }
ArrancaServidor.java
import java.rmi.*;


public class ArrancaServidor
{
    public static void main(String argv[])
    {
        try
        {
            System.out.println("Arrancando servidor...");
            Naming.rebind("ServidorMat_1", new ServidorMat());
        }
        catch (Exception e)
        {
            System.out.println("Ocorreu um problema no arranque do servidor.\n"+e.toString());
        }
    }
}
Cliente.java
import java.rmi.*;


public class Cliente
{
	public Cliente()
	{

		System.out.println("Arrancando o Cliente...");
		// Vamos tentar ir aceder ao Servidor de Registos para recolher a interface
		try
		{
 //			msi = (InterfaceServidorMat) Naming.lookup("rmi://192.168.8.106/ServidorMat_1");
 			msi = (InterfaceServidorMat) Naming.lookup("rmi://127.0.0.1/ServidorMat_1");
		}
		catch (Exception e)
		{
			System.out.println("Falhou o arranque do Cliente.\n"+e);
			System.out.println("Certifique-se que tanto o Servidor de Registos como a Aplicação Servidora estão a correr correctamente.\n");
			System.exit(0);
		}

	}


	public double area(double a, double b) throws RemoteException
	{
		 return msi.multiplica(a,b);
	}

	public double perimetro(double a, double b) throws RemoteException
	{
		double metade = msi.soma(a,b);
		return msi.multiplica(2.0,metade);
	}

	public static void main (String[] argv)
	{
		Cliente c = new Cliente();
		try
		{
			System.out.println("Area: " + c.area(20.0,40.0));
			System.out.println("Perimetro: " + c.perimetro(20.0,40.0));
		}
		catch (Exception e)
		{
			System.out.println("Excepção durante chamadas remotas:" +e);
		}
	}

	private InterfaceServidorMat msi; // A interface para o objecto remoto
}

Pode me dar uma luz do q eu to fazendo errado??

A

Problema resolvido…

eu não tava fazendo o rmiregistry direito…

abraços

Criado 14 de abril de 2007
Ultima resposta 16 de abr. de 2007
Respostas 4
Participantes 2