June20
Premesso che questo post (e tutti gli errori che ne seguono) nasce a causa dell’uso “improprio” di JDeveloper. Vediamo come importare una nostra “vecchia” applicazione, avendo a disposizione solo la relativa cartella.
1) Per visualizzare l’applicazione su JDeveloper:
dall’Application Navigator cliccare su “Add to Application” e selezionare successivamente il file .jws relativo
2) Qualora non lo fosse, connettere Jdeveloper al database oracle (utilizzato da quella applicazione).
Bene! Con due semplici passaggi abbiamo importato tutti i processi desiderati nella nostra nuova applicazione… ma siamo sicuri che funzioni tutto? Testiamolo!
Dal pannello “Apllication Navigator”; clicchiamo col tasto destro sul nome delle varie Application Module dei nostri progetti (bastera’ farlo per una sola AM per package , il motivo lo scoprirete presto ma in ogni caso consiglio vivamente di inserire le AM relative a database uguali in un package apposito, non mischiatele mai ai relativi View Object) e selezioniamo la voce “Test”; Nella nuova finestra cosi’ aperta sara’ possibile, dopo aver scelto il Database da utilizzare, navigare tra i risultati dei vari ViewObject contenuti nell’ AM.
Se potete navigare il modulo senza problemi, risparmiatevi di leggere oltre!
Se invece visualizzare errori del tipo:
JBO-30003: Il pool delle applicazioni (.11AA546B406) non è riuscito ad estrarre un modulo applicativo a causa delleccezione riportata di seguito: oracle.jbo.JboException: JBO-29000: JBO-29000: Bad version number in .class file
forse potrete trovare la soluzione al vostro problema qui di seguito.
Questa tipologia di errori (JBO-30003), a detta della documentazione ufficiale di Oracle, è causata da impossibilita’ , da parte dell’applicazione, di accedere al Database.
Come è possibile una cosa del genere se abbiamo gia’ configurato correttamente la connessione tra l’applicazione ed il database?
A quanto pare le Application Module dei progetti importati continuano a mantenere informazioni memorizzate in fase di compilazione!
Conferma di quanto detto la potrete avere consultando il file “bc4j.xcfg” , localizzato nel package della vostra AM sotto la cartella “common”, il quale contiene ancora nomi e password (criptata) dei precedenti database.
Il file è consultabile anche da JDeveloper stesso: Cliccare sul nome dell’AM ; nel pannello “Structure” apparira’ il relativo schema ad albero; sotto la cartella Source ci sara’ il nostro file, cliccatelo per visualizzarlo!
Soddisfatta la vostra curiosita’?! Bene! Perche’ da qui il file verra’ aperto in sola lettura!
SOLUZIONI:
Si potrebbe andare a modificare il file a manina… ma cosa inserire nel campo “password” ? Copiare dall’omonima riga di un “bc4j.xcfg” appartenente ad una AM funzionante che utilizza lo stesso DB?
Purtroppo non è cosi’ semplice… La password viene crittografata considerando altri fattori ancora a me ignoti… (AM di View Object su DB uguali utilizzano password differenti se situate in package differenti).
Fortunatamente la soluzione è meno intuitiva ma molto piu’ semplice!
Considerando che le AM condividono lo stesso fie di configurazione con tutte le altre AM appartenenti allo stesso pkg…
ci bastera’ creare una nuova AM per sovrascrivere con successo il file incriminato!
P.S: In ogni caso è vivamente consigliato di eseguire una ricompilazione di tutta l’applicazione!
Eliminate manualmente tutti i file .class contenuti nelle directory iportate; dopo di che’, dal pannello “Application Navigator” di JDeveloper, clicchiamo col tasto destro sul nome dell’applicazione e selezioniamo “Rebuild”