aplikacje-bd-w02.pdf

(439 KB) Pobierz
Kurs programowania aplikacji bazodanowych - Wykład 2
Poł¡czeniezapomoc¡JNDIiDataSource
Pulepoł¡cze«
KlasyRowSet
Wi¡zaniedanych
Kursprogramowaniaaplikacjibazodanowych
Wykład 2
Paweł Rajba
InstytutInformatyki
UniwersytetWrocławski
PawełRajba Kursprogramowaniaaplikacjibazodanowych
351962372.003.png 351962372.004.png
Poł¡czeniezapomoc¡JNDIiDataSource
Pulepoł¡cze«
KlasyRowSet
Wi¡zaniedanych
Planwykładu
Poł¡czenie za pomoc¡ JNDI i DataSource
Pule poł¡cze«
Klasy RowSet
Wi¡zanie danych
PawełRajba Kursprogramowaniaaplikacjibazodanowych
351962372.005.png
Poł¡czeniezapomoc¡JNDIiDataSource
Pulepoł¡cze«
KlasyRowSet
Wi¡zaniedanych
Poł¡czeniezapomoc¡JNDIiDataSource
Krótki wst¦p do usług katalogowych
Dotychczas w celu uzyskania obiektu klasy Connection
wykorzystywali±my DriverManager.getConnection(URL)
Lepszym sposobem jest wykorzystanie JNDI i interfejsu
DataSource
Scenariusz post¦powania:
Najpierw tworzymy ¹ródło danych z wykorzystaniem interfejsu
DataSource
Nast¦pnie, gdzie± w jakich± usługach katalogowych ten
DataSource kojarzymy z przyjazn¡ nazw¡ (robimy tzw. bind )
Powy»szedwapunktys¡zwyklewykonywaneprzez
administratorówbezudziałuprogramistów
W aplikacji tworzymy kontekst powi¡zany z tymi usługami
katalogowymi i pobieramy poprzez przyjazn¡ nazw¦
zarejestrowany tam wcze±niej DataSource (robimy tzw.
lookup )
PawełRajba Kursprogramowaniaaplikacjibazodanowych
351962372.006.png
Poł¡czeniezapomoc¡JNDIiDataSource
Pulepoł¡cze«
KlasyRowSet
Wi¡zaniedanych
Poł¡czeniezapomoc¡JNDIiDataSource
Co zrobi¢, »eby za pomoc¡ klasy DataSource dosta¢ obiekt
klasy Connection ?
Tworzymy obiekt DataSource za pomoc¡ ju» konkretnej
implementacji interfejsu DataSource
wprzypadkuDBMSOraclewykorzystamyklas¦
oracle.jdbc.pool.OracleDataSource
wprzypadkuDBMSSQLServerwykorzystayklas¦
com.microsoft.sqlserver.jdbc.SQLServerDataSource
Ustawiamy parametry podstawowe parametry: adres serwera,
port, nazw¦ u»ytkownika, hasło, nazw¦ bazy danych
Wywołujmy funkcj¦ DataSource.getConnection() lub
DataSource.getConnection(Stringusername,String
password)
Dodatkowo mo»emy ustawi¢ lub pobra¢ obiekt, który jest
odpowiedzialny za zapisywanie logów
voidsetLogWriter(PrintWriterout)
PrintWritergetLogWriter()
PawełRajba Kursprogramowaniaaplikacjibazodanowych
351962372.001.png
Poł¡czeniezapomoc¡JNDIiDataSource
Pulepoł¡cze«
KlasyRowSet
Wi¡zaniedanych
Poł¡czeniezapomoc¡JNDIiDataSource
A w jaki sposób pobra¢ obiekt DataSource z usługi
katalogowej?
Tworzymy obiekt klasy InitialContext
Ustawiamy lokalizacj¦ usługi katalogowej wykorzystuj¡c
funkcj¦ Context.addToEnvironment(StringpropName,
ObjectpropVal)
Pobieramy obiekt klasy DataSource za pomoc¡ metody
Context.lookup(nazwa)
Zalety rozwa»anego rozwi¡zania
Dzi¦ki wykorzystaniu inferfejsu DataSource , pobranie obiektu
Connection jest takie samo dla ka»dego DBMS
Dzi¦ki JNDI , problem utworzenia obiektu DataSource
delegujemy najcz¦±ciej na administratora usługi katalogowej
Kod napisany z wykorzystaniem tego schematu jest bardziej
elastyczny i łatwiejszy do napisania
PawełRajba Kursprogramowaniaaplikacjibazodanowych
351962372.002.png
Zgłoś jeśli naruszono regulamin