Installazione e configurazione della Web Logic Platform Parte 2 - Web Logic Server e JDBC R. Turco
In questa seconda parte esaminiamo i passi che permettono permettono di amministrare le connessioni JDBC al database, attraverso Web Logic Server, e riuscire ad ottenere buone prestazioni. Naturalmente se le risorse messe a disposizione da Web Logic non sono, poi, utilizzate dai sorgenti java sviluppati, allora tale vantaggio non viene affatto sfruttato.
J2EE services for JDBC BEA Web Logic Server fornisce i seguenti servizi J2EE per JDBC:
Connection Pool; Multipools; DataSources; TxDataSources; JDBC Data Source Factories.
Web Logic dà la possibilità di avere a disposizione un insieme di connessioni già pronte all’uso senza necessità di gestirne l’apertura e la chiusura da software ottenendone un vantaggio prestazionale.
Drivers I driver di tipo 1 sono dei bridge ODBC-JDBC non presi in considerazione nella platform. I driver di tipo 2 sono dei Java wrapper wrapper su librerie C/C++ native native del database. Tutti i driver di tipo 2 richiedono l’installazione del client del database. I driver di tipo 3 sono dei proxy perché disaccoppiano client e database (multitier) e permettono di gestire le risorse di database d atabase centralmente in Web Logic Server. I driver di tipo 4 sono pure Java e usano protocolli di rete per comunicare col dataserver. BEA offre driver di tipo 2, 3 e 4. I driver 2 e 4 sono tipicamente two-tier, i driver 3 sono multitier. I driver di tipo 3 sono: , abilitano l’uso di load balancing e del de l failover quando configurati in un cluster RMI driver di Web Logic. -side ad applicazioni come servlet, jsp, Pool Driver, abilita all’uso di connection pool server -side ejb. Il pool Driver può anche essere usato da un’applicazione java standalone in un two -tier. JTS Driver, abilita all’uso di transazioni distribuite attraverso server multipli con una sola istanza di database. Gli ultimi due sono solo server-side. 1
Configurare e usare un Connection Pools Un connection pool può essere acceduto attraverso un DataSource oppure un TxDataSource e generalmente generalmente sono usati in tal caso driver di tipo 2 o 4. La configurazione di un connection pool può essere fatta attraverso l’Administration Console. Acceduti alla consolle, sulla parte destra “Services Configuration”, basta cliccare “Connection pool” di JDBC e “Configure a new JDBC connection pool”. Da qui si seleziona il tipo di database (ad esempio Oracle) e il tipo di driver. Se la versione che cerchiamo non esiste è evidente la necessità di scaricare dalla BEA o dalla società del database il driver che ci interessa. Dopo si inseriscono: Il nome della connessione (es: ConnectPoolOracleAppl1 ConnectPoolOracleAppl1 ); Il database name Host name Port Database username Database password Dopodiché o si effettua il test per la connessione (consigliato), (consigliato), oppure si salta e si fa la creazione ed il deploying del JDBC Connection pool (se la connessione è corretta).
Configurare e usare un MultiPools Un multipools è un meta-pool, cioè un insieme di connection pool e fornisce load balancing o alta disponibilità, in riferimento ai connection pools che contiene. Il Multipool è, quindi, adatto per carichi elevati. La configurazione può essere fatta attraverso l’Administration Console. Acceduti alla consolle, sulla parte destra “Services Configuration”, basta cliccare “Multipool” di JDBC e “Configure a new JDBC Multipool”. Viene chiesto: Nome del Multipool Algoritmo da utilizzare, tra High-Availability Hi gh-Availability e Load Balancing Con un algoritmo di Alta disponibilità il tutto è visto come una lista ordinata e quando è richiesta una connessione i connection pool del Multi- Multi- pool sono esaminati nell’ordine fino a trovare un DataSource disponibile. Un algoritmo di Load balancing, invece, distribuisce le connessione per ogni connection pool bilanciandole. Dal Pools tab si ottiene la lista di connection pool da inserire nel Multipool. Ricordare di fare Apply. Dopo occorre fare “Target and Deploy” sul server che serve. 2
Connection pool e Multi-pool sono più che sufficienti nel 99% dei casi.
Configurare e usare DataSource I DataSource sono un arricchimento ulteriore di Java. I Datasources sono i building block dei connection pool e, quindi, per stabilire la connettività ad un database con essi occorre crearne uno per ogni connection pool creato. La configurazione può essere fatta fa tta attraverso l’Administration Console. Acceduti alla consolle, sulla parte destra “Services Configuration”, basta cliccare “DataSources” di JDBC e “Configure a new JDBC DataSources”. Viene chiesto: Nome del DataSource Il path JNDI dove si trova Honor global transaction, transaction, da segnare se si è in una XA transaction transaction Emulate two-phase commit, per un non XA-driver Dopodiche va creato, poi dal Targets tab va scelto il server target, il connection pool a cui associare il DataSource. Nelle Advanced Options è possibile impostare: “ Row Prefetched enabled ” (true/false), che può migliorare le performance di WebLogic facendogli facendogli prefetchare righe multiple in una ResultSet; “ Row prefetch size”, che determina il numero di righe da prefetchar e tra 2 e 65536 tuple; “Stream chunk size ”, il numero di byte letti da WebLogic da uno stream, varia da 1 byte a 65536 byte, con un default di 256 byte.
Configurare e usare TxDataSource Il txDatasource è un DataSource capace di sostenere transazioni distribuite.
Configurare e usare JDBC Datasource Factories I JDBC DataSource Factories sono usati dagli EJB per stabilire connessioni ad un database con un connection pool. La configurazione può essere fatta attraverso l’Administration Console. Acceduti alla consolle, sulla parte d estra “Services Configuration”, basta cliccare “DataSource Factories” di JDBC e “Configure a new JDBC DataSources Factory”. Viene chiesto: Nome del DataSource Factory Database Username Database Password URL, quella per connettersi al database Driver Class Name Factory Name Alla fine va creato il Datasource Factory.
3
Usare un connection pool da JDBC Innanzitutto si carica il driver weblogic.jdbc.pool.Driver
Class.forName(“weblogic.jdbc.pool.Driver”).newIstance(); Poi si crea la connessione: connessione: con = Driv erManager.getConnection”jdbc:weblogic:pool:MyServletPool”, dbUser, dbPsswd);
Usare un DataSource da JDBC Un esempio è: Context ctx = new InitialContext(ht); javax.sql.Datasource ds = (javax.sql.Datasource) ctx.lookup(“MyServletDataSource”); java.sql.Connection con = ds.getConnection();
Conclusioni Spesso un amministratore sapendo come i programmi sono stati fatti può migliorare l’attività di esercizio, come nel caso dei multipool.
Esercitazioni Provate a creare un multi-pool ed una servlet che legge attraverso jdbc una tabella Oracle.
Ringraziamenti Ringraziamo coloro che intenderanno fornire ulteriori indicazioni e suggerimenti .
4