Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [JAVA E SQLSERVER]pubblicazione applicazione java su server remoto

    Ciao, ho un problema ad utilizzare un applicazione java da client remoto.L'applicazione deve connettersi ad un database SQLServer per accedere direttamente alle tabelle.In locale funziona tutto perfettamente tramite una connessione odbc ma se provo ad utilizzare l'applicazione da remoto con una applet o una java web start mi restituisce questo errore:

    java.sql.SQLException: [Microsoft][Driver Manager ODBC] Nome origine dati non trovato e driver predefinito non specificato.

    at sun.jdbc.odbc.JdbcOdbc.createSQLException(Unknown Source)

    at sun.jdbc.odbc.JdbcOdbc.standardError(Unknown Source)

    at sun.jdbc.odbc.JdbcOdbc.SQLDriverConnect(Unknown Source)

    at sun.jdbc.odbc.JdbcOdbcConnection.initialize(Unknow n Source)

    at sun.jdbc.odbc.JdbcOdbcDriver.connect(Unknown Source)

    at java.sql.DriverManager.getConnection(Unknown Source)

    at java.sql.DriverManager.getConnection(Unknown Source)

    Qualcuno ha un idea su come configurare la connessione odbc in modo che non funzioni solo in locale??
    Grazie
    Non piangere per ciò che hai sbagliato ma per quello che non hai fatto per paura di sbagliare.

  2. #2
    credo (ma sono pronto a qualsiasi smentita) che il problema sia nella localizzazione del database. hai un database che è accessibile dall'esterno? usi dns? hai un router che magari ti blocca gli accessi esterni?

    io, visto quell'errore, partirei da questo punto.

    inoltre, volendo, puoi provare a farlo lavorare in "remoto" virtualmente, installando una virtualmachine (quindi indirizzo ip fisico diverso ma comunque interno alla lan) e vedere se in questo modo funziona.

  3. #3
    Ovviamente se vuoi usare ODBC devi avere il DSN configurato nel PC dove è eseguita l'applicazione.

    Dovresti usare invece JDBC ed includere i driver di connessione direttamente nell'applicazione così da non dover installare driver ODBC sul PC client.
    lolide
    Java Programmer

    Informati

  4. #4
    infatti configurando il dsn nel pc dove è eseguita l'applicazione naturalmente funziona tutto!Come posso fare a includere i driver jdbc direttamente nell'applicazione?
    Ho scaricato i driver jdbc 4.0 per sql server e li ho inclusi nel file .jar dell'applicazione ma non funziona...
    Non piangere per ciò che hai sbagliato ma per quello che non hai fatto per paura di sbagliare.

  5. #5
    ora ci lavoro un pò e provo a utilizzare jdbc..
    Non piangere per ciò che hai sbagliato ma per quello che non hai fatto per paura di sbagliare.

  6. #6
    Rieccomi.

    Ho armeggiato con stringhe di connessioni a destra e a manca ma non ne vengo fuori.
    Ora la stringa di connessione che utilizzo è questa:

    codice:
    jdbc:sqlserver://NomeServer\\NomeIstanza;databaseName=DbName;user=MyUsername;password=MyPassword;
    Ho creato una paginetta html dove richiamo la mia applet:
    codice:
    <HTML> <APPLET CODE="ProvaApplet.class" ARCHIVE="ZenaSigned.jar" WIDTH="600" HEIGHT="600"> </APPLET> </HTML>
    Ho impostato il mio IIS in modo da richiamare la pagina html con un url di questo tipo: http://192.168.1.23/pagina.htm dove XXX è l'ip della mia macchina nella rete locale.
    Mi viene aperta la prima form, dove l'utente inserisce username e password.
    La seconda form che viene aperta è quella che effettua la connessione al SQL SERVER che sta sullo stesso pc dove risiede la pagina start.htm, ovvero la macchina con IP 192.168.1.23.
    L'errore che viene riportato è questo:
    codice:
    java.sql.SQLException: No suitable driver found for jdbc:sqlserver://NomeServer\NomeIstanza;databaseName=DbName;user=MyUsername;password=MyPassword;
    Se lancio lo stesso progetto da NetBeans inutile dire che tutto funziona regolarmente e la connessione al DB viene effettuata.

    Non so più dove sbattere la testa.
    Ed allora la sbatto qua...

    Devo impostare qualcosa di particolare in SQL SERVER?
    Verificare qualche permesso?
    Includere qualcosa nell'applet?
    E se si come?

    Grazie

    Ciao!
    Non piangere per ciò che hai sbagliato ma per quello che non hai fatto per paura di sbagliare.

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    SQL Server è piuttosto subdolo per quanto riguarda le istanze.
    Se la porta standard di SQL Server è configurata per connettersi automaticamente ad una particolare istanza di database, allora il NomeIstanza non deve essere specificato (attenzione: non è "facoltativo" è propio obbligatorio non metterla!).

    Di conseguenza, se la porta standard di SQL Server è configurata per agganciare automaticamente un'istanza di database, la connection-string va fatta in questo modo:

    codice:
    jdbc:sqlserver://NomeServer;databaseName=DbName;user=MyUsername;password=MyPassword
    Non chiedermi perchè... Microsoft ha le sue paturnie.

    Al contrario, se sono configurate più porte diverse per la connessione a SQL Server, allora (e qui è logico) l'istanza va obbligatoriamente specificata... e, chiaramente, il sistema controllerà che la porta specificata sia abilitata per accogliere connessioni verso quell'istanza.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    Ho provato a togliere il nome dell'istanza ma mi da sempre lo stesso errore.
    Ho provato anche a fare partire l'applicazione con una java web start invece che con una applet..quando la avvio esce una finestra che dice:
    L'applicazione contiene codice con firma e senza firma,bloccare i componenti potenzialmente non sicuri?
    Se premo si mi da lo stesso codice di errore di prima, se invece premo no mi causa questa eccezione:
    codice:
    Exception in thread "AWT-EventQueue-0" java.lang.ExceptionInInitializerError at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1305) at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:991) at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827) at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012) 
     Caused by: java.security.AccessControlException: access denied ("java.util.PropertyPermission" "java.home" "read") at java.security.AccessControlContext.checkPermission(Unknown Source) at java.security.AccessController.checkPermission(Unknown Source) at java.lang.SecurityManager.checkPermission(Unknown Source)

    devo dare qualche permesso particolare alla mia applicazione?
    Non piangere per ciò che hai sbagliato ma per quello che non hai fatto per paura di sbagliare.

  9. #9
    Rieccomi.
    Dopo aver fatto varie prove ora sono sicuro che il problema sta nella visibilità della libreria sqljdbc4.jar perchè se provo ad aggiungerla "fisicamente" nella cartella lib\ext la applet dal mio pc funziona. se però provo a farla partire da un altro client mi da il solito errore driver not found.
    Quindi devo trovare il modo di aggiungere la libreria sqljdbc4.jar come risorsa della mia applet..come posso fare?
    con questo comando non funziona:
    <APPLET CODE="ProvaApplet.class" ARCHIVE="ZenaSigned.jar" WIDTH="600" HEIGHT="600">

    Help!!
    Grazie!!
    Non piangere per ciò che hai sbagliato ma per quello che non hai fatto per paura di sbagliare.

  10. #10
    Rieccomi.
    Dopo aver fatto varie prove ora sono sicuro che il problema sta nella visibilità della libreria sqljdbc4.jar perchè se provo ad aggiungerla "fisicamente" nella cartella lib\ext la applet dal mio pc funziona. se però provo a farla partire da un altro client mi da il solito errore driver not found.
    Quindi devo trovare il modo di aggiungere la libreria sqljdbc4.jar come risorsa della mia applet..come posso fare?
    con questo comando non funziona:
    <APPLET CODE="ProvaApplet.class" ARCHIVE="ZenaSigned.jar" WIDTH="600" HEIGHT="600">

    Help!!
    Grazie!!
    Non piangere per ciò che hai sbagliato ma per quello che non hai fatto per paura di sbagliare.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.