CORSO DI JSP

<< Indice

FAQ su Java/JSP e Oracle

Domande

  1. Il compilatore Java non vede la classe Classe.class
  2. Fatto il passo 1 ma il compilatore Java non vede ancora la classe Classe.class
  3. Ho aggiunto il percorso fino al package nella CLASSPATH ma il compilatore non trova le classi.
  4. Mi da errore Java: column index not valid
  5. ORA-01536: space quota exceeded for tablespace 'USERS'
  6. Ho scritto una classe ma Tomcat non la vede.
  7. Ho messo il file in /opt/tomcat/webapps/ROOT/ ma non funziona.
  8. Ho ricompilato la classe ma l'applicazione JSP non cambia
  9. Devo eseguire due query in uno script ma ne esegue solo 1
  10. Mi da' errore org.apache.jasper.JasperException: Eccezione IO: The Network Adapter could not establish the connection
  11. Mi da' errore org.apache.jasper.JasperException: oracle.jdbc.driver.OracleDriver
  12. Non ho il file classes12.jar nella dotazione dei files
  13. Vorrei far girare una stored procedure lanciandola da JSP
  14. Come si fa a centrare verticalmente il contenuto di un box?
  15. JSP mi ritorna questo errore Oracle ORA-00600: codice errore INT., argom.: [ttcgcshnd-1], [0], [], [], [], [], [], []
  16. Tomcat parte solo se spengo Oracle.
  17. Mi da' errore ORA-00911:carattere non valido
  18. Da SQLPLUS una SELECT mi ritorna 3 righe, da JSP nessuna

Risposte

  1. Il compilatore Java non vede la classe Classe.class
    Verificare di avere inserito il path verso il percorso in cui si trova la classe nella variabile di ambiente CLASSPATH (Win/Linux).
    Attenzione: quando si imposta la variabile CLASSPATH non mettere spazi aggiuntivi prima e dopo l'=.

    Inizio
  2. Fatto il passo 1 ma il compilatore Java non vede ancora la classe Classe.class
    Aggiungere la directory corrente ('.') alla CLASSPATH. Per poter fare riferimento ad una classe da una classe dello stesso package occorre aggiungere la directory corrente al path di ricerca. Ciò ci consente di evitare di aggiungere nominativamente tutte le directory delle varie applicazioni nella CLASSPATH.

    Inizio
  3. Ho aggiunto il percorso fino al package nella CLASSPATH ma il compilatore non trova le classi.
    Se il percorso in cui si trova il package pack1 è
    $CATALINA_HOME/webapps/applicazione/WEB-INF/classes/pack1
    in CLASSPATH citare solo
    $CATALINA_HOME/webapps/applicazione/WEB-INF/classes/
    Inizio
  4. Mi da errore Java: column index not valid
    Se si estraggono i campi per indice, si deve partire da 1.

    Inizio
  5. ORA-01536: space quota exceeded for tablespace 'USERS'
    Gli utenti dei "gruppi" hanno a disposizione 10M nel tablespace USERS e 10M nel tablespace INDX.
    Gli utenti "normali", cioe' Uxxx, hanno a disposizione 5M su USERS e 5M su INDX
    Ogni tabella e ogni indice allocano, al momento della creazione, una estensione di 128K, spazio che verrà utilizzato dai successivi insert. Identica dimensione per ciascun indice (esplicito o implicito riferito al vincolo di chiave primaria o unicita').
    Trigger, sequence, stored procedures, package ecc. non occupano spazio nel tablespace USERS in quanto vengono memorizzati nelle tabelle di sistema che sono mappate nel tablespace SYSTEM.
    L'istruzione per creare gli indici relativi deve specificare che ogni indice va creato su un certo tablespace (va usato INDX):
    			create table tab(
    			  campo1 varchar2(10),
    			  ...
    			  constraint pk_tab primary key (id) using index tablespace INDX
    			);
    			
    oppure separatamente dalla istruzione di create:
    			create index indice1 on tabella(campo) tablespace INDX;
    			alter table tab add constraint un_1 unique(campo1, campo2) using index tablespace INDX;
    			
    Se non viene specificato, l'indice occupa spazio nel medesimo table space della tabella. E' dunque buona norma tenere separati gli indici dalle tabelle.

    Inizio
  6. Ho scritto una classe ma Tomcat non la vede.
    Occorre assicurarsi su alcuni fatti:
    • La classe deve trovarsi nella cartella dell'applicazione <app>/WEB-INF/classes/pack/
    • la classe deve contenere al suo interno la dichiarazione di appartenere al package pack
    • il package dev'essere citato nella classpath, altrimenti il compilatore java non riesce a compilare la servlet.

    Inizio
  7. Ho messo il file in /opt/tomcat/webapps/ROOT/ ma non funziona.
    NON METTETE I FILE IN /opt/tomcat/webapps/ROOT/!!
    Nel desktop dovreste trovare tutti una directory "Tomcat"; lì la vostra applicazione è dentro una directory (ad es. olimpiadi) che va messa dentro webapps. Questa directrory deve contenere anche una sotto directory WEB-INF. Alla fine, riavviate Tomcat.

    Inizio
  8. Ho ricompilato la classe ma l'applicazione JSP non cambia
    Occorre effettuare il reload dell'applicazione; scrivete sulla casella degli indirizzi:
    http://corelli:8080/manager/reload?path=/olimpiadi
    Vi verrà chiesto un accesso protetto; scrivete 'manager' come utente e 'unipd04' come password. Tomcat ricaricherà le classi e vi darà il seguente messaggio
    OK - Reloaded application at context path /olimpiadi
    Se username/password non vanno bene, li potete trovare nel file tomcat/conf/tomcat-users.xml.

    Inizio
  9. Devo eseguire due query in uno script ma ne esegue solo 1
    Occorre dichiarare uno statement per ogni query che si desidera lanciare:
    			conn = DriverManager.getConnection(url,nome,pass);
    			Statement stmt1 = conn.createStatement();
    			Statement stmt2 = conn.createStatement();
    			
    Inizio
  10. Mi da' errore org.apache.jasper.JasperException: Eccezione IO: The Network Adapter could not establish the connection
    Oracle è spento, oppure il TNS listener è spento oppure ancora dovete riguardare i file di configurazione dove scrivete username password e url del database, probabilmente non sono impostati per la vostra configurazione di Oracle. Inizio
  11. Mi da' errore org.apache.jasper.JasperException: oracle.jdbc.driver.OracleDriver:
    Manca il file classes12.jar che contiene il driver thin; scaricalo da qui e mettilo in $CATALINA_HOME/shared/lib Inizio
  12. Non ho il file classes12.jar nella dotazione dei files:
    PER ERRORE IL LINK PUNTAVA SU UN FILE OBSOLETO. Me ne scuso. In questa risorsa è disponibile la versione di Magazzino (no Beans) con il file classes12.jar: questo file però vi suggerisco di metterlo nella directory $CATALINA_HOME/shared/lib/, così il driver JDBC sarà disponibile anche per le altre applicazioni che scriverete (e non solo per Magazzino). Ricordatevi però di modificare la CLASSPATH aggiungendoci il path $CATALINA_HOME/shared/lib/ secondo le indicazioni della guida a JSP. Inizio
  13. Vorrei far girare una stored procedure lanciandola da JSP
    Scaricando il package magazzino.zip si trova all'interno un esempio funzionante di invocazione ed esecuzione di una semplice stored procedure (file categorie_salva_sp.jsp). Lo script di creazione della SP in Oracle è
    CREATE OR REPLACE PROCEDURE Updatecategorie (p_idcategoria IN NUMBER, p_descr IN VARCHAR) AS
    BEGIN
    	UPDATE CATEGORIE
    	SET descr = p_descr
    	WHERE idcategoria = p_idcategoria;
    	COMMIT;
    END;
    /
    

    Per una SP che ha un parametro di uscita invece

    PL/SQL:

    create function snuffed_it_when (VARCHAR) returns integer '
    declare
        poet_id NUMBER;
        poet_age NUMBER;
    begin
        -- first get the id associated with the poet.
        SELECT id INTO poet_id FROM poets WHERE name = $1;
        -- get and return the age.
        SELECT age INTO poet_age FROM deaths WHERE mort_id = poet_id;
        return age;
    end;
    

    JSP

    connection.setAutoCommit(false);
    CallableStatement proc =
        connection.prepareCall("{ ? = call snuffed_it_when(?) }");
    proc.registerOutParameter(1, Types.INTEGER);
    proc.setString(2, poetName);
    cs.execute();
    int age = proc.getInt(2);
    

    Notate l'uso di registerOutParameter per dichiarare il tipo della variabile ritornata (per l'allocazione) e l'istruzione che permette di leggere il risultato proc.getInt. Ulteriori dettagli in http://www.onjava.com Inizio

  14. Come si fa a centrare verticalmente il contenuto di un box?
    Si consulti questo documento HTML e si editi il codice HTML così si vede come funziona.
    Attenzione: la proprietà position se usata annulla l'effetto dell'allineamento. Inizio
  15. JSP mi ritorna questo errore Oracle ORA-00600: codice errore INT., argom.: [ttcgcshnd-1], [0],[], [], [], [], [], []
    Dovete usare il driver thin della versione 10 di Oracle (cercatelo in internet) oppure usare il driver OCI che trovate nella distribuzione di Oracle (dettagli su OCI/thin nelle dispense). Inizio
  16. Dovreste verificare se il listener non si mette in ascolto sulla porta 8080 che è la stessa di Tomcat; in questo caso dovete cambiarne una delle due: per cambiare la porta standard di Tomcat andate su %CATALINA_HOME%/conf/server.xml, cercate "8080" e sostituitelo (nel tag <Connector>) con un diverso numero di porta, provate 7080 ma basta che sia > 1024). %CATALINA_HOME% è la home di TOMCAT, per vederne il valore digitate echo %CATALINA_HOME% in una finestra di DOS (o echo $CATALINA_HOME da una shell Unix).
    Ovviamente, riavviate Tomcat. Inizio

  17. Mi da' errore ORA-00911:carattere non valido
    Togliere il punto_e_virgola alla fine della query. Inizio

  18. Da SQLPLUS una SELECT mi ritorna 3 righe, da JSP nessuna
    Ricordarsi di dare il comando di COMMIT da sql plus quando si caricano i dati. Inizio
  19. Inizio
  20. Inizio
  21. Inizio
  22. Inizio