View Full Version : [JAVA/Applet] Accedere ad un db da applet...
franksisca
23-01-2008, 11:21
ho problemi....ovviamente :D
public void init(){
Button bb=new Button("Apri");
bb.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent arg0) {
JOptionPane.showMessageDialog(null , "eccodi");
try {
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //driver ODBC generale, per collegarsi a qualsiasi database
JOptionPane.showMessageDialog(null , "connessione al jdbc");
/*****
*
* A QUESTO PUNTO SI BLOCCA
*
******/
Connection db = DriverManager.getConnection("jdbc:odbc:nomedatabase");
JOptionPane.showMessageDialog(null , "database");
} catch (SQLException e) {
JOptionPane.showMessageDialog(null ,""+e.getMessage());
} catch (ClassNotFoundException e) {
JOptionPane.showMessageDialog(null ,""+e.getMessage());
}
JOptionPane.showMessageDialog(null , "connessione NON riuscita...");
}
});
IN PRATICA NON MI CARICA IL DRIVER....SECONDO VOI PERCHè???
COME DEVO PROCEDERE???
banryu79
23-01-2008, 11:36
Potresti postare la javaconsolle? Vorrei vedere che eccezione ti da, se ne solleva una.
Accedere a un database tramite driver JDBC-ODBC da una applet implica un po' di cosucce che hanno a che fare con la sicurezza, se non ricordo male.
Mi pare che sia necessario utilizzare un driver JDBC di Tipo 4...
Prova a cercare con google qualche articolo della Sun
A proposito, a che db si deve connettere la tua applet? :confused:
franksisca
23-01-2008, 11:49
Potresti postare la javaconsolle? Vorrei vedere che eccezione ti da, se ne solleva una.
Accedere a un database tramite driver JDBC-ODBC da una applet implica un po' di cosucce che hanno a che fare con la sicurezza, se non ricordo male.
Mi pare che sia necessario utilizzare un driver JDBC di Tipo 4...
Prova a cercare con google qualche articolo della Sun
A proposito, a che db si deve connettere la tua applet? :confused:
si deve connettere ad un db "particolare"...che ancora non conosco....il fatto è che non mi dà errori nella console :eek: :eek: :eek:
ora sto facendo delle prove in locale....grazie comunque per l'attenzione;)
franksisca
23-01-2008, 11:58
ok...sono mongoloide (non di origini, ma di cervello...) ecco il log
Java Plug-in 1.6.0_03
Uso della versione JRE 1.6.0_03 Java HotSpot(TM) Client VM
Directory principale utente = C:\Documents and Settings\franksisca
----------------------------------------------------
c: cancella finestra console
f: finalizza oggetti nella coda di finalizzazione
g: recupera spazio
h: visualizza questo messaggio di aiuto
l: esegui dump dell'elenco classloader
m: stampa utilizzo memoria
o: attiva registrazione eventi
p: ricarica configurazione proxy
q: nascondi console
r: ricarica configurazione criteri
s: esegui dump delle proprietà del sistema e dell'installazione
t: esegui dump dell'elenco thread
v: esegui dump dello stack del thread
x: cancella cache classloader
0-5: imposta livello di traccia su <n>
----------------------------------------------------
access denied (java.lang.RuntimePermission accessClassInPackage.sun.jdbc.odbc)
java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.jdbc.odbc)
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.checkPackageAccess(Unknown Source)
at sun.applet.AppletSecurity.checkPackageAccess(Unknown Source)
at sun.applet.AppletClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at net.smartlab.applet.Database.connetti(Database.java:35)
at net.smartlab.applet.TestApplet$1.actionPerformed(TestApplet.java:29)
at java.awt.Button.processActionEvent(Unknown Source)
at java.awt.Button.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
false
java.lang.NullPointerException
at net.smartlab.applet.Database.eseguiQuery(Database.java:85)
at net.smartlab.applet.TestApplet$1.actionPerformed(TestApplet.java:32)
at java.awt.Button.processActionEvent(Unknown Source)
at java.awt.Button.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-2" java.lang.NullPointerException
at net.smartlab.applet.TestApplet$1.actionPerformed(TestApplet.java:38)
at java.awt.Button.processActionEvent(Unknown Source)
at java.awt.Button.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
probabilemnte hai ragione tu....dev vedere come mi devo gestire la sicurezza....hai qualche link da suggerirmi???
banryu79
23-01-2008, 15:32
Se nessuno ti sa dare dritte allora cerca info nel sito della Sun:
ho inserito "applet" + "database", ecco il risultato della ricerca locale al sito:
-> link (http://onesearch.sun.com/search/onesearch/index.jsp?qt=applet+%2B+database&x=0&y=0&charset=utf-8&col=developer-reference&cs=false&rt=true)
Poi, casomai servisse, qui c'è il link (http://developers.sun.com/product/jdbc/drivers)alla pagina della raccolta di driver Jdbc nel sito della Sun.
Ciao :)
morskott
23-01-2008, 20:22
Vedi pure se non hai dimenticato di inizializzare qualcosa, vedo pure una NullPointerException. Il driver ODBC nel pannello di controllo l'hai settato, vero?
franksisca
23-01-2008, 21:12
connessione è fatta....sbagliavo io na cosa semplice, manca ora la gestione delle firme...se ho problemi vi faccio sapere
franksisca
24-01-2008, 16:28
Java Plug-in 1.6.0_03
Uso della versione JRE 1.6.0_03 Java HotSpot(TM) Client VM
Directory principale utente = C:\Documents and Settings\franksisca
----------------------------------------------------
c: cancella finestra console
f: finalizza oggetti nella coda di finalizzazione
g: recupera spazio
h: visualizza questo messaggio di aiuto
l: esegui dump dell'elenco classloader
m: stampa utilizzo memoria
o: attiva registrazione eventi
p: ricarica configurazione proxy
q: nascondi console
r: ricarica configurazione criteri
s: esegui dump delle proprietà del sistema e dell'installazione
t: esegui dump dell'elenco thread
v: esegui dump dello stack del thread
x: cancella cache classloader
0-5: imposta livello di traccia su <n>
----------------------------------------------------
access denied (java.lang.RuntimePermission accessClassInPackage.sun.jdbc.odbc)
java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.jdbc.odbc)
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.checkPackageAccess(Unknown Source)
at sun.applet.AppletSecurity.checkPackageAccess(Unknown Source)
at sun.applet.AppletClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClassInternal(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at net.smartlab.applet.Database.connetti(Database.java:35)
at net.smartlab.applet.TestApplet$1.actionPerformed(TestApplet.java:29)
at java.awt.Button.processActionEvent(Unknown Source)
at java.awt.Button.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
java.lang.NullPointerException
at net.smartlab.applet.Database.eseguiQuery(Database.java:85)
at net.smartlab.applet.TestApplet$1.actionPerformed(TestApplet.java:32)
at java.awt.Button.processActionEvent(Unknown Source)
at java.awt.Button.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-2" java.lang.NullPointerException
at net.smartlab.applet.TestApplet$1.actionPerformed(TestApplet.java:38)
at java.awt.Button.processActionEvent(Unknown Source)
at java.awt.Button.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
+ un errore dovuto ai diritti di accesso, giusto???
franksisca
26-01-2008, 09:12
boyz.....il mio ultimo problema sembra ostico ( o meglio, sono io in questo periodo ostico di cervello...), ma nella guida per firmare le applet si parla di jar.....come faccio a far caricare un jar come applet???
franksisca
26-01-2008, 22:53
ho firmato l'applet (molto semplice in realtà), ma mi dà ancora problemi di accesso al db......sempre lo stesso errore di sopra.....a cosa è dovuto secondo voi???
chi mi può aiutare???
^TiGeRShArK^
27-01-2008, 08:46
ma quando carichi l'applet ti chiede la conferma di esecuzione facendoti visualizzare il certificato?
In quel caso, se tu accetti l'esecuzione, non dovresti avere problemi...forse a meno di conflitti con il .policy file specificato nella home.
Con java web start settare delle policy personalizzate è una cavolata...
Con le applet sinceramente non mi ricordo come si possa fare.
..Ma è proprio necessario usare un'applet? :fagiano:
Se non devi integrare il contenuto per forza in una pagina web, secondo me ti conviene *assolutamente* usare Java Web Start.
franksisca
27-01-2008, 09:10
ma quando carichi l'applet ti chiede la conferma di esecuzione facendoti visualizzare il certificato?
In quel caso, se tu accetti l'esecuzione, non dovresti avere problemi...forse a meno di conflitti con il .policy file specificato nella home.
Con java web start settare delle policy personalizzate è una cavolata...
Con le applet sinceramente non mi ricordo come si possa fare.
..Ma è proprio necessario usare un'applet? :fagiano:
Se non devi integrare il contenuto per forza in una pagina web, secondo me ti conviene *assolutamente* usare Java Web Start.
pultroppo è necessario (non scelgo io ;) ).....comunque si, mi fà salvare il certificato, e con un db di prova va bene.....
mi dici come settare il policy, non l'ho mai fatto e non saprei da dove partire
usi sybase???
mi dà uno strano errore anella clausola where, mi dà errore sull' '='.....il che è strano
franksisca
27-01-2008, 09:21
connessione fatta (i misteri dell'informatica, ho rifatto tutta la procedura di firma e, il jar e l'html daccapo e funziona).
ora mi connetto al database, quando pero vado a fare una query mi dà questo errore :
java.sql.SQLException: [Sybase][ODBC Driver][Adaptive Server Anywhere]Syntax error or access violation: near 'as' in ..._tb_alu_alunni [as] tab, sissi_tb_usr_...
at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)
at sun.jdbc.odbc.JdbcOdbc.SQLExecDirect(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcStatement.execute(Unknown Source)
at sun.jdbc.odbc.JdbcOdbcStatement.executeQuery(Unknown Source)
at net.smartlab.applet.Database.eseguiQuery(Database.java:109)
at net.smartlab.applet.TestApplet$1.actionPerformed(TestApplet.java:21)
at java.awt.Button.processActionEvent(Unknown Source)
at java.awt.Button.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Exception in thread "AWT-EventQueue-2" java.lang.NullPointerException
at net.smartlab.applet.TestApplet$1.actionPerformed(TestApplet.java:32)
at java.awt.Button.processActionEvent(Unknown Source)
at java.awt.Button.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
franksisca
27-01-2008, 09:23
questa è la query...+ "SELECT tab.fs_alu_id,"
+ "tab.fs_alu_matr, tab.fs_alu_cogn, tab.fs_alu_nome,"
+ " tab.fd_alu_dtn, tab.fs_alu_sex, tab.fs_alu_citt_id,"
+ "tab.fs_alu_indi, tab.fs_alu_cap, tab.fs_alu_com_id, "
+ "tab.fs_alu_tel, tab.fs_alu_annot, tab.fs_alu_email,"
+ "tab.fs_alu_tel2, comuni.fs_comuni_pr"
+ "FROM sissi_tb_alu_alunni as tab, sissi_tb_usr_comuni as comuni"
+ "WHERE comuni.fs_comuni_pr= tab.fs_alu_com_id"
+ "");
banryu79
27-01-2008, 11:59
Prova a cambiare questa linea
+ "SELECT tab.fs_alu_id,"
+ "tab.fs_alu_matr, tab.fs_alu_cogn, tab.fs_alu_nome,"
+ " tab.fd_alu_dtn, tab.fs_alu_sex, tab.fs_alu_citt_id,"
+ "tab.fs_alu_indi, tab.fs_alu_cap, tab.fs_alu_com_id, "
+ "tab.fs_alu_tel, tab.fs_alu_annot, tab.fs_alu_email,"
+ "tab.fs_alu_tel2, comuni.fs_comuni_pr"
+ "FROM sissi_tb_alu_alunni as tab, sissi_tb_usr_comuni as comuni"
+ "WHERE comuni.fs_comuni_pr= tab.fs_alu_com_id"
+ "");
così
+ "FROM sissi_tb_alu_alunni tab, sissi_tb_usr_comuni comuni"
oppure così
+ "FROM sissi_tb_alu_alunni = tab, sissi_tb_usr_comuni = comuni"
franksisca
27-01-2008, 13:17
la seconda l'ho provata, la terza no.....provo e ti faccio sapere
franksisca
27-01-2008, 22:16
allora, l'applet accede....funziona tutto, ho solo qualche problema con sybase che non riesco a risolvere:
questa query mi dà problemi:Vector v = db.eseguiQuery(""
+ "SELECT "
+ "fs_alu_id,"
+ "fs_alu_matr, "
+ "fs_alu_cogn, "
+ "fs_alu_nome,"
+ "fd_alu_dtn, "
+ "fs_alu_sex, "
+ "fs_alu_citt_id,"
+ "fs_alu_indi,"
+ "fs_alu_cap, "
+ "fs_alu_com_id, "
+ "fs_alu_tel, "
+ "fs_alu_annot, "
+ "fs_alu_email,"
+ "fs_alu_tel2 "
+ "tb_usr_comuni.fs_comuni_pr "
"FROM tb_alu_alunni "// , tb_usr_comuni "
+ "WHERE tb_usr_comuni.fs_comuni_pr = fs_alu_com_id"
+ "");
questa no (ho commentato il codice che dovrebbe darmi problemi, e infatti funziona!!!)Vector v = db
.eseguiQuery(""
+ "SELECT "
+ "fs_alu_id,"
+ "fs_alu_matr, "
+ "fs_alu_cogn, "
+ "fs_alu_nome,"
+ "fd_alu_dtn, "
+ "fs_alu_sex, "
+ "fs_alu_citt_id,"
+ "fs_alu_indi,"
+ "fs_alu_cap, "
+ "fs_alu_com_id, "
+ "fs_alu_tel, "
+ "fs_alu_annot, "
+ "fs_alu_email,"
+ "fs_alu_tel2 "
//+ "tb_usr_comuni.fs_comuni_pr "
+ "FROM tb_alu_alunni "// , tb_usr_comuni "
//+ "WHERE tb_usr_comuni.fs_comuni_pr = fs_alu_com_id"
+ "");
secondo voi???
franklyn
15-01-2009, 23:42
scusate l'intromissione... ma evito di aprire un nuovo 3d :
accedere ad un database con un applet non è molto sicuro, in quanto se si decompila i .class dell'applet è possibile risalire alle credendiali di accesso al db.
giusto ?
e se l'utente che utilizzo ha dei limiti sulle operazioni che può fare sul db, in questo modo sarei in una buona condizione di sicurezza ?
inoltre, firmare l'applet in questo modo è corretto ?
http://www.max74.it/blog/2007/11/signed-jar.html
grazie 1000!
^TiGeRShArK^
16-01-2009, 01:20
scusate l'intromissione... ma evito di aprire un nuovo 3d :
accedere ad un database con un applet non è molto sicuro, in quanto se si decompila i .class dell'applet è possibile risalire alle credendiali di accesso al db.
giusto ?
e se l'utente che utilizzo ha dei limiti sulle operazioni che può fare sul db, in questo modo sarei in una buona condizione di sicurezza ?
inoltre, firmare l'applet in questo modo è corretto ?
http://www.max74.it/blog/2007/11/signed-jar.html
grazie 1000!
no, è comunque un'operazione da evitare dato che almeno l'accesso in lettura lo si può ottenere facilmente..
certo che se non hai dati sensibili te ne puoi fregare.. ma non la vedo molto bella come soluzione... :stordita:
franklyn
16-01-2009, 08:41
no, è comunque un'operazione da evitare dato che almeno l'accesso in lettura lo si può ottenere facilmente..
certo che se non hai dati sensibili te ne puoi fregare.. ma non la vedo molto bella come soluzione... :stordita:
ok, nemmeno se l'applicazione di cui parlo gira in una intranet ? quindi un ambiente più o meno "sicuro" ?
^TiGeRShArK^
16-01-2009, 08:45
ok, nemmeno se l'applicazione di cui parlo gira in una intranet ? quindi un ambiente più o meno "sicuro" ?
se il db non continene dati sensibili e l'utente che usi ha accesso solo in lettura può anche andare bene...
diversamente io preferirei trovare un altra soluzione...
chessò...
banalmente potresti scrivere sul server la classe che si occupa di fare tutte le connessioni al DB e tu con la tua applet fai le richieste a questa classe anzichè accedere direttamente al DB.....
Se la pensi bene in questo modo potresti ottenere un buon livello di sicurezza imho...
franklyn
16-01-2009, 09:07
se il db non continene dati sensibili e l'utente che usi ha accesso solo in lettura può anche andare bene...
diversamente io preferirei trovare un altra soluzione...
chessò...
banalmente potresti scrivere sul server la classe che si occupa di fare tutte le connessioni al DB e tu con la tua applet fai le richieste a questa classe anzichè accedere direttamente al DB.....
Se la pensi bene in questo modo potresti ottenere un buon livello di sicurezza imho...
ok! grazie 1000 ;)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.