piątek, 30 kwietnia 2010

WebSphere Integration Developer - pierwsze wrażenia.

Przez ostatni tydzień miałem przyjemność pobawić się trochę z narzędziem IBM, tj. WebSphere Integration Developer 7. Musze przyznać, że pierwsze wrażenie jest bardzo pozytywne i oby takie pozostało. W końcu narzędzie komercyjne, w którym wiemy za co płacimy. A za co płacimy? Za wygodę między innymi:)

Dla osób, które nie wiedzą czym jest tak do końca WID, to w telegraficznym skrócie, to taki znany wszystkim Eclipse, ale obudowany sporą warstwą funkcjonalności i udogodnień dodanych przez IBM'a. Praca (no może to małe nadużycie, bo aż tyle w nim nie popracowałem) jest bardzo przyjemna, można stworzyć aplikację bazującą na web servisach praktycznie wyłącznie klikając myszką i nie pisząc żadnego kodu. Wszystko obudowane jest paletami z odpowiedniki kontrolkami, która potem może sobie odpowiednio dostosowywać aby zbudować interesująca nas funkcjonalność.

Na pochwałę zasługuje również zbiór dołączonych do WID'a tutoriali i kursów, które napisane są bardzo przystępny sposób i albo tłumaczą ogólnie teorię związaną z procesami biznesowymi, albo pokazują co jak wyklikać aby jakaś przykładowa aplikacja nam zadziałała.

Niestety muszę być obiektywny i dodać łyżkę przysłowiowego dziegciu, nie mogę do tej pory poprawnie zsynchronizować WID'a z WPS'em. Serwer startuje poprawnie (mogę wejść do konsoli admina) jednak jego status jest cały czas na "starting..." przez co nie mogę np. wypróbować testowania serwisów z poziomu WID'a. Mam nadzieję, że problem ten jednak da się jakoś rozwiązać.

czwartek, 22 kwietnia 2010

Instalacja WebSphere Integration Developer 7 na Red Hat 5

Instalacja WID'a nie była aż tak problematyczna, jak się nastawiłem, mając doświadczenia z WPS'em :) Nie mniej, nie obyło się bez problemów, które postaram się przedstawić i omówić w poniższej notce. Instalację przeprowadziłem na oddzielnej kopii Red Hata, (oprogramowanie VmWare pozwala na zainstalowanie wielu systemów operacyjnych), bałem się głównie, że mogę zepsuć całą moją dotychczasową pracę z WPS'em i tak pewnie by się stało, gdybym pracował na jednym systemie. Ale do rzeczy...

Najważniejsze jest odpowiednie przygotowanie systemu przed i po instalacji.
1. Instalator WID będzie komunikował, że brakuje mu biblioteki libstdc++.so.5, aby rozwiązać ten problem nie wystarczy utworzyć linku symbolicznego z libstdc++.so.6 do libstdc.so.5, tak jak to uczyniłem na początku, co potem spowodowało błędy przy uruchamianiu WID'a takie jak:

"Caused by: java.lang.UnsatisfiedLinkError: 
/home/andrzej/IBM/SDPShared/plugins/com.ibm.cic.licensing.lum.linux_7.0.101.v20090605_0444/os/linux/x86/libi4clntjni.so 

(/usr/lib/libstdc++.so.5: version `CXXABI_1.2' not found (required by 
/home/andrzej/IBM/SDPShared/plugins/com.ibm.cic.licensing.lum.linux_7.0.101.v20090605_0444/os/linux/x86/libi4clntjni.so))"

1.1. Musimy zainstalować libstdc++, aby to zrobić najwygodniej należy najpierw zarejestrować swój system w RHN, używając komendy "rhn_register" z poziomu root'a. Rejestracja będzie pytała o login i hasło do konta użytego m.in. do ściągnięcia systemu.


1.2. Następnie wybieramy Appliaction>Add/Remove Software, wyszukujemy i instalujemy compat-libstdc++-33-3.2.3-61

1.3. Warto upewnić się czy biblioteka fizycznie znajduje się w /usr/lib


2. Przechodzimy do instalacji WID'a. Z poziomu root'a wykonujemy umask 0022, a następnie uruchamiamy ./launchpad.sh. Podczas pracy z kreatorem instalacji zmieniłem jedynie katalog instalacji zamieniając /opt/ na /home/andrzej/
2.1. Instalujemy kolejno WID'a, WAS'a, i środowisko testowe (czas ok. 1-1.5 godzin)


3. Po instalacji musimy zwiększyć liczbę uchwytów do plików. Korzystamy z oficjalnej instrukcji:link. W punkcie 7 plik limits.conf znajdował się w moim przypadku w /etc/security. Po wykonaniu instrukcji należy zrestartować system.


4. Ostatnim krokiem jest dodanie uprawnień dla zwykłego użytkownika do katalogu instalacji WID'a (w moim przypadku) /home/andrzej/IBM, używając komendy:
chown -R andrzej /home/andrzej/IBM
5. Po uruchomieniu WID'a w moim przypadku nie została wczytana żadna domyślna perspektywa, nie wiem dlaczego, ale wystarczy ręcznie przełączyć na jakąś z perspektyw i już możemy pracować.

środa, 14 kwietnia 2010

Tutorial jak uruchomić projekt Seam (bazujący na JPA) w Websphere Application Server v 7

Moim głównym zadaniem było, uruchomienie projektu Seam, korzystającego z zewnętrznej bazy danych na WPS'ie, biorąc pod uwagę fakt, że WPS jest nakładką na WAS'a, oraz to że na początku nie mogłem uruchomić profilu WPS'owskiego, napisałem (łącznie z tym) 3 tutrialne potrzebne do uruchominia Seam'a na WAS'ie. Jednakże tutoriale te są w równym stopniu poprawne w przypadku uruchomienia Seam na WPS'ie, jedyna różnica jest taka, że konsola administratora WPS posiada trochę więcej opcji niż ta WAS'owska.

Co potrzebujemy?
1. Seam w wersji 2.1.2.GA: link  - jest to nowsza wersja Seam'a, w poprzednich tutorialach używałem wersji 2.0, jednakże różnice związane z tym tutorialem są tylko takie, że seam-gen zada o kilka pytań więcej, na które odpowiadamy domyślnymi odpowiedziami.
2. Projekt wygenerowany przez seam-gen, na podstawie bazy danych, patrz: link
3. Zapoznanie się oraz wykonanie wcześniejszego tutoriala dotyczącego brakujących bibliotek: link
4. Zapoznanie się oraz wykonanie wcześniejszego tutoriala dotyczącego utworzenia data source: link


Uruchomienie projektu Seam na WAS'ie:
1. Punktem wyjściowym jest projekt wygenerowany przez Seam-gen, najlepiej wcześniej sprawdzony na JBoss'ie. Projekt bazujący na JPA, czyli typu war.
2. Edytujemy plik resources/META-INF/persistence-dev.xml:
 - zmieniamy wartość między tagami < jta-data-source> i wpisujemy tam nazwę JNDI data source, którego wcześniej utworzyliśmy w moim przypadku jdbc/MySql_cms
< jta-data-source>jdbc/MySql_cms< /jta-data-source>
 - dodajemy / edytujemy właściwości hibernate, tak aby otwrzymać:
< properties>
         < property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/>
         < property name="hibernate.hbm2ddl.auto" value="update"/>
         < property name="hibernate.show_sql" value="true"/>
         < property name="hibernate.format_sql" value="true"/>
         < !-- Only relevant if Seam is loading the persistence unit (Java SE bootstrap) -->
         < property name="hibernate.transaction.manager_lookup_class"            value="org.hibernate.transaction.WebSphereExtendedJTATransactionLookup"/>
< /properties>
- UWAGA!! W kodzie powyżej są spacje w tagach XML, należy je usunąć, jeśli chcemy wkleić do pliku.
3. Używając polecania "ant archive" w katalogu głównym projektu, kompilujemy projekt i tworzymy m.in. plik .war.
4. Uruchamiamy WAS'a /WPS'a i przechodzimy do konsoli administratora, wybieramy Application>App Types> Websphere E A, oraz wybieramy Install.







5. W następnym oknie wybieramy plik .war który utworzyliśmy (znajduje się on w katalogu dist naszego projektu). Klikamy next, w następnym oknie wybieramy Fast path i dajemy również next.
6. Kreator instalacji zostawiamy bez zmian, tylko w przedostatnim oknie dodajemy nazwę naszego projektu, klikany next, a następnie finish, na końcu zapisujemy zmiany na serwerze:







7. Wybieramy nasz projekt z listy zainstalowanych projektów, wybieramy "Manage modules", następnie klikamy na nazwę naszego projektu z zmieniamy ustawienia class loadera na: "Classes loaded with local class loader first (parent last)"
















8. Podobnie jak w punkcie 7. postępujemy po wyborze "Class loading and update detection".










9. Dodajemy przygotowane wcześniej Shared libraries do naszego projektu. Wybieramy "Shared library references", następnie zaznaczamy nazwę naszej aplikacji i klikamy na "Reference shared libraries", dodajemy "Jboss_libs" do okna po prawej i dajemy OK.









10. Zapisujemy wszystkie zmiany na serwerze. Zaznaczamy nasz projekt na liście i klikamy na start.








11. Projekt powinien się poprawnie uruchomić i jest dostępny pod adresem:
http://localhost:9080/websphere_war_test/index.html
Wymienione wcześniej 2 tutoriale, czyli http://aludwikowski.blogspot.com/2010/04/tutorial-jak-dodac-shared-libraries-do.html, http://aludwikowski.blogspot.com/2010/04/tutorial-jak-dodac-baze-danych-mysql-do.html, razem z tym, tworzą tak na prawdę jeden tutorial, pokazujący jak od początku do końca uruchomić projekt wygenerowany przez seam-gen (używający JPA) na Websphere Application Server.

wtorek, 13 kwietnia 2010

Eclipse problem z "jvm terminated exit code=-1"

W końcu znalazłem rozwiązanie dręczącego mnie od jakiegoś czasu problemu. Pracuje nad pewnym projektem w Eclipse od pół roku i wszystko działało sprawnie aż pewnego dnia przy uruchomieniu Eclipsa dostaję komunikat:

jvm terminated exit code=-1




Rozwiązania podawane w internecie raz działały raz nie, przeinstalowałem nawet Jave, wszystko na nic, bo i tak po jakimś czasie dostawałem, ku mojej irytacji, ten komunikat. Okazało się, że wystarczyło zedytować plik eclipse.ini, i zmniejszyć ilość pamięci dla launchera z 256 na 128:

plugins/org.eclipse.equinox.launcher_1.0.200.v20090520.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.0.200.v20090519
-product
org.eclipse.epp.package.jee.product
--launcher.XXMaxPermSize
128M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
128m
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx512m
Nie wiem w sumie z czego to wynika, ponieważ tak jak mówiłem, przez pół roku wszystko działało cacy. Tak czy inaczej mam nadzieje, że to rozwiązanie pomoże na dobre.

poniedziałek, 12 kwietnia 2010

Tutorial jak dodać bazę danych Mysql do DataSource w Websphere Application Server v 7 ?

  Krótki tutorial jak dodać bazę danych MySql, do WAS'a.

Co potrzebujemy?
1. Sterownik JDBC do MySql'a: link.
2. Zainstalowany serwer MySql z utworzoną bazą danych, ten punkt pozostawiam czytelnikowi.

Dodajemy sterownik do "JDBC providers".
1. Uruchamiamy WAS'a, następnie przechodzimy do Resources>JDBC>JDBC providers i wybieramy New.








2. Uzupełniamy odpowiednio formularz. W "Implementation class name" powinniśmy wpisać:
 com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource









3. W następnym oknie podajemy ścieżkę do sterownika JDBC, czyli w moim przypadku.
 /home/andrzej/Desktop/tools/mysql-connector-java-5.1.12/mysql-connector-java-5.1.12-bin.jar
4. Kończymy pracę z kreatorem klikając Finish, oraz zapisujemy zamiany w konfiguracji serwera.

Dodajemy bazę danych do "Data Source".

1. Mając dodany sterownik JDBC, możemy przystąpić do dodania bazy danych. Przechodzimy do Resources>Data source i klikamy New








2. Wypełniamy odpowiednio pola, w moim przypadku nazwa bazy danych to "cms", stąd takie końcówki, oczywiście możemy wypełnić te pola wedle uznania.







3. Wybieramy naszego dostawcę JDBC







4. W następnym oknie wartość dla "Data store helper class name" powinna być ustawiona na:
com.ibm.websphere.rsadapter.ConnectJDBCDataStoreHelper
5. Następne okno pozastawiamy bez zmian, kończymy pracę z kreatorem i zapisujemy zmiany na serwerze.
6. Klikamy na "MySql_cms" na liście "Data source", następnie z podmenu "Additional properties" po prawej stronie wybieramy "Custom properties". Musimy znaleźć i zedytować kilka zmiennych, tj.
databaseName = cms?autoReconnect=true
user = admin
password = admin
port = 3306
serverName = localhost
Wszystkie wartości powinny być typu: java.lang.String. oraz dostosowane do odpowiedniej konfiguracji bazy danych. Jeśli port jest defaultowy to chyba można pominąć tą wartość.









7. Zapisujemy zmiany na serwerze i testujemy połączenie:









Jest to kolejny tutorial będący przygotowaniem do uruchomienia aplikacji Seam na WAS'ie

Tutorial jak dodać "Shared Libraries" do Websphere Application Server v 7

Szybki tutorial jak dodać "Shared Libraries" do WAS'a, dodawane biblioteki będą potrzebne do uruchamiania aplikacji Seam'owskich na WAS'ie, używając JBoss'a nie musimy martwić się o te biblioteki, natomiast w WAS'ie musimy je ręcznie dodać do serwera, lub do samej aplikacji. Tutorial jest oczywiście uniwersalny i możemy dodać inne biblioteki, jednak moim głównym celem jest przystosowanie WAS'a do aplikacji Seam'owskich.

Lista potrzebnych bibliotek, których wymaga projekt Seam używający JPA (!):
  • hibernate.jar
  • hibernate-annotations.jar
  • hibernate-commons-annotations.jar
  • hibernate-entitymanager.jar
  • hibernate-validator.jar
  • commons-collections.jar
  • jboss-common-core.jar
  • antlr.jar
  • cglib.jar
  • asm.jar
  • dom4j.jar
  • javassist.jar
  • concurrent.jar
1. Uruchamiamy WAS'a i przychodzimy do konsoli administratora.
2. Wybieramy Environment>Shared Libraries, oraz klikamy New






3. Wybieramy nazwę, oraz dodajemy ścieżki do poszczególnych .jar'ów, oddzielając je enterem. UWAGA nie możemy oddzielać bibliotek znakami ";" lub ":".









4. Zapisujemy zmiany w konfiguracji serwera.









5. Gotowe ! Oczywiście aby korzystać z tych bibliotek musimy je jeszcze dodać do wdrażanej aplikacji, ale o tym za jakiś czas.

niedziela, 11 kwietnia 2010

Przygotowanie profilu na Websphere Process Server

Wspomniane we wcześniejszym poście problemy, wynikały z zupełnie innych kwestii, niż w początąkowym założeniu, czyli problemamy z SQLem. Problem stanowił inny wyjątek, czyli:

[4/8/10 10:28:56:221 PDT] 00000000 ConnectionEve A J2CA0056I: The 
Connection Manager received a fatal connection error from the Resource 
Adapter for resource jdbc/WPSDB. The exception is: java.sql.SQLException: 
Meta-data for Container 
[email protected] could not be 
accessed:java.sql.SQLException: Meta-data for Container 
[email protected] could not be 
accessed:java.sql.SQLException: Java exception: 
'/home/andrzej/ibm/WebSphere/ProcServer/profiles/ProcSrv02/databases/WPRCSDB/seg0/c290.dat 
(Too many open files): 
java.io.FileNotFoundException'.:java.io.FileNotFoundException: 
/home/andrzej/ibm/WebSphere/ProcServer/profiles/ProcSrv02/databases/WPRCSDB/seg0/c290.dat 
(Too many open files)
Rozwiązaniem tego problemu jest zwiększenie limitu otwieranych plików używając konta roota (polecenie ulimit -n 90000 w pliku /root/.bashrc), oraz uruchomienie serwera również z poziomu root'a. Rozwiązanie można znaleźć na blogu kolegi Rafała: link.

piątek, 9 kwietnia 2010

Przygotowanie do deployowania aplikacji seam na WPS/WAS

Przygotowania do uruchomienia przykładowych aplikacji Seam na Websphere Process Server, niestety nie odbyły się bez problemów. Po utworzeniu profilu (typu stand-alone) na WPS'ie serwer uruchamia się z błędami, takimi jak:
[4/8/10 10:28:56:378 PDT] 00000000 WSRdbManagedC W DSRA0180W: Exception detected during ManagedConnection.destroy(). The exception is:

com.ibm.ws.exception.WsException: DSRA0080E: An exception was received by the Data Store Adapter. See original exception message: No current connection.. with SQL

State : 08003 SQL Code : 40000
at org.apache.derby.impl.jdbc.SQLExceptionFactory40.getSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
at org.apache.derby.impl.jdbc.Util.newEmbedSQLException(Unknown Source)
Przypuszczam, że skutkiem tych błędów są kolejne błędy przy uruchomieniu konsoli administratora. Niestety po przeszukaniu ton materiałów wypstrykałem się pomysłów jak naprawić ten błąd. Dodam, że pojawią się one już na świeżutkiem WPS-ie, gdzie nic nie było zmieniane i konfigurowane.

Skoro WPS ma pod sobą WAS'a, postanowiłem używać profilu WAS'owskiego, na którym serwer uruchamia się bez najmniejszych problemów. Pierwszy próby deployowania aplikacji seam'owskich zakończyły się ni to sukcesem ni to porażką, ponieważ bazując na oficjalnej instrukji: link, udało mi się uruchomić aplikacje jpa, niestety przykład z jee5/booking nadal nie chce działać. Generalnie sama instrukcja mogła by być napisana w trochę bardziej obszerniejszy sposób, ponieważ wiele aspektów działania seam na was nadal pozostaje dla mnie czarną plamą, która zamierzam w miarę zmniejszać w następnym tygodniu.....

środa, 7 kwietnia 2010

Instalacje IBM WPS na Red Hat - "silent mode"

Drugą opcją instalacji WPS'a jest instalacja w tzn. "silent mode". Czyli cała instalacja odbywa się po cichu, bez żadnych kreatorów, itd. Wystarczy, że zmodyfikujemy odpowiednio dwa pliki.

1. DVD_root or extract_root/responsefiles/wbi/template_response.xml
i
2.
DVD_root or extract_root/responsefiles/wbi/run_templates

Jeśli zależy nam na standardowej instalacji, to w moim przypadku zmieniłem wszystkie wystąpienia "/opt/" na "/home/andrzej/" w obu plikach oczywiście. Dodatkowo jeśli zależy nam na utworzeniu defaultowego profilu, to należy odkomentować i uzupełnić odpowiedni linie z pliku template_response.xml.

< installlocation="'/home/andrzej/ibm/WebSphere/ProcServer'" id="'IBM">
< data key="'eclipseLocation'" value="'/home/andrzej/ibm/WebSphere/ProcServer'/">
< data key="cic.selector.nl" value="en">
< data key="user.cic.imported,com.ibm.websphere.ND.70" value="WAS">
< data key="'user.bpm.admin.username'" value="'andrzej'/">
< data key="'user.bpm.admin.password'" value="'haslo'/">
< / profile >


Uruchomienie instalacji odbywa się poprzez uruchomienie pliku: run_templates. Więcej na ten temat można przeczytać w oficjalnej dokumentacji: link.

UWAGA!!
Przygotowanie systemu powinno być identyczne jak to było opisane w poprzednim poście: link. Warto też uruchomić całą instalację, czyli plik run_templates, z poziomu root'a, żeby uniknąć problemów z przywilejami.

niedziela, 4 kwietnia 2010

Instalacja IBM WebSphere Process Server 7 na Red Hat Enterprise Linux 5

Kilka podpowiedzi jak zainstalować IBM WebSphere Process Server na Red Hat Enterprise Linux 5 dla takich linuxowych słabiaków jak ja.

0. Nie wiem czy było to konieczne, raczej nie, ale jako rozgrzewkę polecam zainstalowanie sobie Java JDK (wraz z JRE), oraz podpięcie pod przeglądarkę internetową, JDK prędzej czy później i tak będzie nam potrzebne. Aby podpiąć JRE pod FF polecam istrukcję na stornie: link. UWAGA! W moim przypadku, przy tworzeniu linku, zamiast katalogu ns7-gcc29, należało wybrać ns7. Jeśli nie posiadamy katalogu plugins w głównym katalogu FF, to należy go utworzyć ręcznie.

1. Przed przystąpieniem do instalacji WPS'a należy odpowiednio przygotować Red Hat'a. Postępujęmy wg. oficjalnej instrukcji: link. Uwagi do poszczególnym punktów:
1. wybieramy umask 002 - wybrałem instalacje na zwykłym koncie użytkownika.
Większość instrukcji jest niekonieczna jeśli pracujemy na "świeżym" linuxie.
UWAGA! W przypadku Red Hat'a musimy dodatkowo wyłączyć SELinux - jest to system ochronny systemu (nie wiem do końca jak działa więc nie będę się rozpisywał), który w pewnym momencie może zablokować nam instalację WPS'a.
Aby wyłączyć SELinux, należy zedytować plik "/etc/selinux/config"

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of these two values:
# targeted - Only targeted network daemons are protected.
wystarczy zmienić SELINUX=enforcing na SELINUX=permissive i zrestartować system.

2. Z tak przygotowanym systemem instalacja przebiegła u mnie bez żadnych błędów i problemów. Bazowałem na oficjalnej instrukcji: link. Wybieramy opcje "Nonadministrative or nonroot installation." A dalej leci już z górki.

czwartek, 1 kwietnia 2010

Seam + Eclipse tutorial.

Postanowiłem napisać ostatni tutorial z cyklu "początki z seamem", aby dopełnić poprzednie 2, czyli seam - pierwsze kroki i seam-gen w akcji oraz aby mój kolega (który zaczął zajmować się seamem) w końcu dał mi święty spokój:P

Ideą tutoriala jest zintegrowanie aplikacji wygenerowanej przez seam-gen z IDE w tym przypadku z eclipsem.

Co potrzebujemy?
1. Projekt seam, jak to zrobić można przeczytać w wcześniejszym tutorialu seam-gen w akcji
2. Eclipse (najlepiej wersja EE): link

Jak podłączyć projekt seam pod Eclipsa?
Procedura jest dość prosta i nie wymaga wiele wysiłku.

1. Wybieramy File>import
2. Z zakładki General wybieramy Existing Projects into Workspace i dajemy Next
3. Natępnym krokiem jest wybranie katalogu w którym mamy projekt (Browse)
4. Klikamy Finish

I to by było na tyle, w końcu przechodzimy z poziomu konsoli do kontentego środowiska i rozwijamy nasz projekt wedle uznania.

UWAGI:
1. Podczas pracy nad projektem Eclipse używa pliku build.xml do tzn. hot-deploy'ingu, kiedy zapisujemy dany plik, np. widoku, Eclipse automatycznie wykonuje polecenie seam explode (czy też ant explode), od tej pory nie musimy wykonywać go z poziomu konsoli. UWAGA hot-deploy nie działa w przypadku części plików konfiguracyjnych i innych, dlatego od czasu do czasu potrzebny będzie restart serwera. Więcej na ten temat można poczytać w specyfikacji seam.
2. Warto dodać sobie serwer JBoss do IDE, żeby nie było potrzeby odpalania go z poziomu konsoli. W tym celu wykonujemy: File>new>other>server, wybieramy rodzaj serwera oraz wskazujemy jego katalog główny.
3. Dobrym pomysłem może być zainstalowanie wtyczki JBoss tools do Eclipsa, która pozwala na wizualizację wielu plików konfiguracyjnych, widoków, itd. Najprawdopodobniej pozwala również na używanie seam-gen z poziomu IDE, aczkolwiek nie zgłębiłem tej kwestii.