Integracja JBoss-a z Eclipsem już za nami jednak by spokojnie pisać aplikacje Java EE pozostało kilka rzeczy do zrobienia. Najpierw zdefiniujemy JBoss-owi DataSource, czyli naszą bazę danych. Ja zdecydowałem się na PostgreSQL, Bartek na MySQL.
Wchodzimy najpierw do folderu z JBoss-em (dalej nazywany jboss_home) następnie
docs\examples\jca
i kopiujemy stąd przykładowy plik konfguracyjny naszej bazy. W moim przypadku postgres-ds.xml, dla tych co wybrali MySQL mysql-ds.xml. Plik ten wklejamy do jboss_home\server\default\deploy\
. Zajrzyjmy do środka. Dla postgresa powinien wyglądać mniej więcej tak:<datasources>Po kolei co jest co :
<local-tx-datasource>
<jndi-name>PostgresDS</jndi-name>
<connection-url>jdbc:postgresql://[servername]:[port]/[databasename]</connection-url>
<driver-class>org.postgresql.Driver</driver-class>
<user-name>x</user-name>
<password>y</password>
<!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->
<metadata>
<type-mapping>PostgreSQL 7.2</type-mapping>
</metadata>
</local-tx-datasource>
</datasources>
jndi-name
jest to nazwa pod jaką zostanie zarejestrowana w JBoss-ie nasza baza.connection-url
jest to powiedzmy link do naszej bazy. Zamiast[servername]
wpisujemy 127.0.0.1 ew localhost (lub adres serwera, na którym mamy serwer bazy), zamiast[port]
wpisujemy port, na którym nasłuchuje nasza baza (dla postrgresa defaultowo 5432),[database]
nazwa naszej bazy danych. U mnie wygląda to tak:jdbc:postgresql://127.0.0.1:5432/pz2 .
driver class
mówi JBoss-owi jakiego rodzaju sterowników (o tym za chwile) ma szukać.user-name
ipassword
już tłumaczyć chyba nie trzeba.
Sterowniki. Dla PostgreSQL dostępne pod http://jdbc.postgresql.org/download.html. Dla Javy 1.6 wybieramy wersje sterownika JDBC4, a dla pozostałych (obecnie serwery aplikacji obsługują do 1.5 więc wersja dla nas) JDBC3.
Dla MySQL http://dev.mysql.com/downloads/connector/j/5.1.html wybieramy *.tar.gz lub *.zip. Pobrane pliki *.jar (w wypadku MySQL należy wypakować i z głównego folderu skopiować connector) wrzucamy do
jboss_home\server\default\lib\
Uff po tym wszystkim tworzymy projekt EAR tak jak zwykliśmy to robić, z warstwą biznesową i webową. Zostały nam do wykonania jeszcze dwie rzeczy.
W
EarContent\META-INF\
tworzymy plik jboss-api.xml i wpisujemy:
<jboss-app>
<loader-repository>
MojProjekt:archive=ProjektEAR.ear
</loader-repository>
</jboss-app>
Gdzie:
MojProjekt
jest to napis który w pewien sposób identyfikuje nasz projekt w JBossie (tych, którzy chcą się dowiedzieć więcej odsyłam do dokumentacji JBoss-a, a ProjektEAR.ear jest to nazwa dla zbudowanego projektu ProjektEAR
przez eclipse-a (np. projekt EAR o nazwie asd po zbudowaniu da plik asd.ear).Potem w części EJB musimy wyedytować plik persistence.xml (standardowo w
ejbModule\META-INF\
) u mnie wygląda tak.Z tego wszystkiego interesuje nas:
<?xml version="1.0" encoding="UTF-8"?>
<persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence
http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
<persistence-unit name="ProjektEJB">
<provider>org.hibernate.ejb.HibernatePersistence</provider>
<jta-data-source>java:/PostgresDS</jta-data-source>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.PostgreSQLDialect"/>
<property name="hibernate.hbm2ddl.auto" value="update"/>
</properties>
</persistence-unit>
</persistence>
name="ProjektEJB"
nazwa części biznesowej projektu (akurat moja to ProjektEJB)jta-data-source
nazwa jndi naszej bazy danych skąd to wziąść? Nazwę podaliśmy w pliku postgres-ds.xml lub mysql-ds.xml (w pliku może być zdefiniowana więcej niż jedna baza!).
Przedrostek java:/ jest związany z jndi, które mnie odrzucało od poprzednich wersji JBossa więc pominę co to, a powiem, że musi tu być i kropka.hibernate.dialect
mówi Hibernate-owi jakim "dialektem" SQL-a ma się posługiwać w komunikacji z bazą danych. Dla PostgreSQL jest toorg.hibernate.dialect.PostgreSQLDialect
dla MySQL5.0org.hibernate.dialect.MySQL5Dialect
(pełna lista tu).hibernate.hbm2ddl.auto
w jaki sposób hibernate "zachowuje się" w naszej bazie. Przy ustawieniucreate-drop
w momencie rozruchu tworzy tabele, ale gdySessionFactory
kończy swój żywot (czyli jak wyłączymy naszą aplikacje) sprząta po sobie w bazie. Jeśli chcemy zachować swoje dane musimy ustawićcreate
lubupdate
. Idąc za materiałem znalezionym w internecie użyłemupdate
.
Reszta pozostaje bez zmian (pełną liste properties można znaleźć na tej stronie). W tym momencie możemy już pisać encje, beany mając dostęp do wstrzyknięć zależności i wszystkiego co Java EE nam zapewnia.
A tutaj macie prosty projekt działający pod JBossem i bazą PosrtgreSQL. Jako, że to projekt z Eclipse może być konieczne ponowne ustawienie zależności. Czyli:
A następnie:
W razie problemów pisać w komentarzach co się dzieje.
Życzę milej zabawy.
Drzazga:
W celu przeglądania wyników naszej pracy na bazie danych możemy posłużyć się phpMyAdmin albo zestawem programów prosto od Suna MySql Tools. Konfiguracja i przeglądanie zawartości bazy jest dosyć proste, więc nie będę się rozpisywał.
Jeśli wybraliście Postgresa to wraz z nim instaluje się pgAdmin III, w którym będziecie zarządzać bazą. HF
To dziala! az sie boje:P
OdpowiedzUsuńDobra robota, oby tak dalej;)
moglibyscie zuplodowac swoj dzialajacy projekt jeszcze raz?
OdpowiedzUsuńwiem ze to bylo ponad 4 lata temu, ale wasz artykul jest niezwykle przydatny :)
Milo to słyszeć :)
UsuńProponowałbym jednak rozejrzeć się trochę po świeższej blogosferze.
Od tamtej pory sporo się uprościło i na przykład nie trzeba mieć 3 projektów by stworzyć prostą aplikacje z dostępem do warstw danych i webowej. Wystarczy sam WAR.
A taki prosty projekt już można stworzyć za pomocą archetypów mavena (np. webapp-javaee6 ).