Newsgroup: it.comp.java
Titolo: Domanda da niubbo su web application

Ciao a tutti,
ho una web application multi-database fatta con Hibernate che è distribuita 
a più clienti, i quali hanno diversi tipi di database (Postgres, db2, 
mysql).
All'interno dell'applicazione esiste un file xml con un parametro di 
configurazione di hibernate ("dialetto" del database).
Il problema è che ogni volta che ricreo il .war dell'applicazione devo 
ricordarmi di modificare il file di configurazione impostando il "dialetto" 
corretto per quel cliente.
Mi chiedevo quindi se nelle specifiche web J2EE 2.4 non fosse previsto il 
concetto di parametro "stringa" che l'application server (Tomcat, 
Websphere, ecc. ecc.) possa rendere disponibile alla mia applicazione.
In questo modo farei definire all'interno dell'application server del 
cliente tale parametro, che conterrà il nome del dialetto.
Quando l'applicativo parte potrebbe reperire tale parametro e impostarlo 
nella sessione di Hibernate.
In questo modo  il war sarà uguale per tutti i miei clienti senza 
distinzione di sorta.
E' possibile questa cosa?
Grazie!
D. 

 ha scritto:

CHe sappia io no, anche perchè quando parte x la prima volta chi decide
che dialetto usare ?
Ti conviene fare un file hibernate.cfg.xml, con all'interno tutti i vari
dialetti commentati e poi decommenti quello che ti interessa 
-- 
Alfonso

 > E' possibile questa cosa?
Certo (almeno su WebSphere): puoi definire variabili d'ambiente sul
Server a cui poi accedi con la classe System

 Websphere, ecc. ecc.) possa rendere disponibile alla mia applicazione.
Si può fare: con i parametri di contesto, con i parametri di
inizializzazione o con le voci di ambiente. Per consigliarti però
bisognerebbe che tu ci dicessi alcune cose circa l'architettura della
tua applicazione, in particolare la sicurezza, se sull'application
server girano anche altre applicazioni, se hai usato framework
particolari e quando e dove viene istanziato il SessionFactory..

 particolari e quando e dove viene istanziato il SessionFactory..
In realtà ho approfittato di questo caso specifico per fare una domanda più 
generica, che è la seguente:
1) Le specifiche "Java Servlet 2.4 specification " prevedono la possibilità 
di passare un parametro stinga dall'application server all'applicazione web?
Grazie,
D.

 di passare un parametro stinga dall'application server all'applicazione web?
Ah! Allora la risposta è si, nei modi che ho specificato prima (AFAIK)
:D

 :D
Perfetto, avresti per caso un link dove si spiega come si leggono 
dall'applicativo questi parametri e sorattutto come si impostano in un 
application Server (a me interessano per ora  solo Tomcat e Websphere).
Grazie!
D. 

 D.
Si impostano (credo) tutti nel web.xml, per cui documentati sul formato
di quel file. Con google trovi moltissimi risultati, e poi naturalmente
c'è la specifica servlet! Essendo il file di configurazione delle
webapp della specifica J2EE, è indipendente dall'application
server/server container che utilizzi ;)

 server/server container che utilizzi ;)
Eh ma allora se le devo impostare nel web.xml tanto vale che le metto 
nell'hibernate.cfg.xml.
Io invece cercavo un posto esterno al mio .war dove impostare queste 
variabili tipo come si fa per le risorse JNDI (nell'applicativo è utilizzato 
il nome logico, mentre nell'application server sono configurati i nomi 
"fisici" delle connessioni, comprensivi di indirizzo ip del database server 
e nome utente e password).
Mi sembra strano che nessuno abbia mai avuto un'esigenza del genere... boh.
D. 

 variabili tipo come si fa per le risorse JNDI
In tomcat 5 il contesto di una web app può essere esternalizzato in un
file XML da collocare in <TOMCAT_HOME>/conf/catalina/localhost. Puoi
usare questo file per configurare le tue risorse.
Tuttavia, non so se è proprio la specifica che permette tale
esternalizzazione o piuttosto una feature di tomcat, ma credo la
seconda.

 seconda.
A me in effetti interessava qualcosa di "standard" che andasse bene su 
qualsiasi application server.
Comunque grazie per la info!