Glassfish, jak każdy serwer aplikacji (SA), pozwala definiować pulę połączeń bazodanowych. Na potrzeby jednego z małych projektów próbowałem zaprzęgnąć testową bazę danych, która przechowywałaby informacji wyłącznie w pamięci w czasie działania instancji SA. Jest to bardzo wygodne podczas prowadzenia rozwoju aplikacji, ponieważ nie trzeba zajmować się konfiguracją bazy danych i dbaniem o jej "czystość" po kolejnych przyrostach funkcjonalności. Idealnie do tego zadania nadaje się HSQLDB z trybem "mem". W trybie pamięciowy tworzona jest struktura bazy, a dane zapamiętywane tylko przez okres uruchomienia bazy w maszynie wirtualnej. Kiedy maszyna jest wyłączana automatycznie wszystkie dane są tracone. Jak wspomniałem wcześniej takie działanie ma swoje plusy tylko w określonych sytuacjach.
Jak skonfigurować połączenia w Glassfish, aby wykorzystywały HSQLDB w trybie "mem"? Pierwszym krokiem jest zaopatrzenie się w jar'a bazą HSQLDB. Na pewno można ją znaleźć na stronach jej twórców. Ściągniętego jar'a należy wgrać do odpowiedniego katalogu w utworzonej domenie Glassfish'a. Według dokumentacji mogą to być katalogi: /lib lub /lib/ext . Po dograniu biblioteki startujemy domenę i przechodzimy do konsoli administracyjnej (np. http://localhost:4848). Następnie w zakładce Resources->JDBC->Connection Pools tworzymy nową pulę połączeń (przycisk New). Nowemu połączeniu nadajemy nazwę i wskazujemy jego typ jako javax.sql.DataSource.
Zatwierdzamy zmiany przyciskiem Next. W kolejnym oknie podajemy nazwę klasy implementującej interfejs DataSource dostarczonej przez HSQLDB: org.hsqldb.jdbc.jdbcDataSource. W tym miejscu należy się drobna uwaga odnośnie wersji bazy danych. Zauważyłem, że podany wyżej interfejs od wersji 2.0 nazywa się org.hsqldb.jdbc.JDBCDataSource. Proszę zwrócić uwagę jaką wartość się tutaj podaje. Jeżeli podczas testowania połączenia wyskoczy błąd informujący o tym, że nie można odnaleźć klasy należy zwrócić uwagę na podanie poprawnej nazwy klasy implementującej DataSource.
Ostatnim etapem jest podanie dodatkowych parametrów połączenia bez których nie uda się uruchomić instancji HSQLDB. Poniżej lista parametrów oraz ich wartości:
- User=sa
- Password=()
- driverClass=org.hsqldb.jdbcDriver
- database=jdbc:hsqldb:mem:testname
Wprowadzone dane potwierdzamy przyciskiem Finish. Po przejściu w szczegóły nowo utworzonej puli wykonać należy test poprawności połączenia - przycisk Ping.
Często popełnianym błędem jest niewrzucenie biblioteki do odpowiedniego katalogu w domenie glassfish, przez co sygnalizowany jest błąd o braku możliwości odnalezienie klasy implementującej interfejs DataSource. Zwrócić należy również uwagę na dodatkowe parametry za pomocą których można skonfigurować pulę.
Skoro udało się skonfigurować pulę połączeń to można wrócić do pisania funkcjonalności wykorzystujących DataSource oparte o te pule ;-)
Brak komentarzy:
Prześlij komentarz