Wednesday, September 17, 2008

Rada

Dzisiaj podczas szukania czegoś na temat hibernate znalazłem ciekawą stronkę na, którą jakimś dziwnym trafem nigdy nie trafiłem :)

Common Problems

A na niej złotymi zgłoskami ważną rade...


I'm having trouble with a bidirectional association.

When you update a bidirectional association you must update both ends.
parent.getChildren().add(child);
child.setParent(parent);

It's best to do this in an association management method of your persistent class.


I'm still having trouble!

Read the documentation! There's a detailed section about "Parent/Child Relationships" in chapter 16 of the reference documentation including code examples.


Tak to w życiu bywa... że chcesz czy nie chcesz dokumentacje przeczytać warto, a nawet trzeba :)

Wednesday, July 2, 2008

SpringOne08


Na SpringOne 2008 wybrałem się dzień wcześniej. Wszystko zaczeło się tam gdzie zawsze czyli na Okęciu. Po piwie w miejscowym barze i podróży samolotem Brussel Airlines (Już nigdy z nimi nie polece, trzeba płacić za napoje i jedzenie jak w tanich liniach, chociaż te tanie nie są), po wylądowaniu w BRU i podróży pociągiem (z przygodami) udało mi (oraz 2-jce znajomych) dotrzeć do hotelu. W hotelu, okazało się, że hotel ten też został wybrany przez SpringSource jako baza wypadowa.

Day 1.


Rozpoczeło się od rejstracji, otrzymania identyfikatora oraz porcji gażdetów. Następnie belgijskie śniadanie czyli na maxa słodkie (choć dobre) ichnie drożdżówki. Generalnie katering był przyzwoity, stały 4 lodówki wyposarzone w to co Coca-Cola oferuje w Belgi. Konferencja odbywała się w multikinie (w kinie z wieloma salami).


Rozpoczeło się od wstępu Roda Johnsona, który był dość ciekawy, a zarazem bardzo marketingowy. Następnie prezentacje odbywały się równolegle w 3 salach, także zawsze można było coś ciekawego znaleść.

Ja uczestniczyłem w prezentacjach na temat Spring Batch. Rozwiązanie mnie zainteresowało, ale mój entuzjazm został szybko przygaszony tym iż jest to wersja dość młoda i nie posiada np. możliwości defioniowania zależności między job'ami i step'ami :(

Następnie "Persistence Tuning for the Spring Environments by Thomas Risberg" - wykład ciekawy, nie było srebrnych kul, ale raczej metodycznie krok po kroku wytłumaczone, co i kiedy powinno być optymalizowane.

Później przyszedł czas na najcieplejszą z nowinek czyli Spring Dynamic Modules. Narazie OSGi zachwyca entuzjastów, ale już lada dzien zapuka także w okienko projektów w naszych firmach ;)

Lunch break zaobfitował w poznanie znajomych z kraju nad Wisłą, kanapki i rosołek (no tutaj organizatorzy nie zaszaleli).

Po jedzonku "Spring Transaction Choices for Performance by Juergen Hoeller" - podsumowując, używajmy transakcji rozproszonych wtedy gdy to konieczne, gdy nie, natywnych. Dodatkowo były omawiane różne rodzaje zarządzania transakcjami gdy współpracujemy z różnymi źródłami danyc (np. wiele baz + jms).

Na koniec dnia pierwszego "Working with Hibernate with Spring 2.5 by Rossen Stoyanchev". I tutaj poznałem fajny trick, przyznam się, że sam na to nie wpadłem. Otóż przy testach integracyjnych Rossen proponował otwieranie transakcji przed testem, a potem jej rollback po zakonczeniu testu. Wstyd się przyznać ale zawsze miałem ten problem bo commitowałem i musiałem potem posprzątać po sobie (a to niestety trwa...).

Po pierwszym dniu konferencji było piwko oraz frytki z ketchupem, a gdy ten się skończył belgijska specjalność z majonezem...
Z konferencji nasz dyskusja przeniosła się do pobliskiego pubu... :)

ps. dzień drugi opiszę jutro :)

tutaj znajdziecie slajdy z konferencji :)

Friday, May 16, 2008

Parametry wysyłane GETem, polskie znaki i UTF-8

Ostatnio miałem problem w pracy z ukochanymi polskimi znakami, a konkretniej z wysyłaniem ich metodą GET. W projekcie kodowanie to UTF-8 przy przekazywaniu parametrów z polskim kodowaniem (zakodowanych oczywiscie do UTF-8)  w request-cie przychodziły krzaki.

Problemem okazało się, że przesyłanie znaków zakodowanych GETem niewiele daje bo serwer aplikacyjny ma w swojej konfiguracji zapiane w jakim kodowaniu są requesty i tak je przetwarza, zwykle jest to Latin-1.

Co należy zrobić ?
W przypadku JBoss'a:

W pliku %jboss-home%\server\%konfiguracja%\deploy\jboss-web.deployer\server.xml należy dodać atrybut URIEncoding="UTF-8" elementu Connector (dla portu 8080)

W przypadku gdy ruch do JBossa jest kierowany przez Apacha za pomocą mod_jk konieczne jest dodanie w server.xml do Connectora atrybutu URIEncoding="UTF-8" (tym razem dla portu 8009). I powinno śmigać

A tu troche literatury na temat kodowania polskich znaków:
http://java.sun.com/developer/technicalArticles/Intl/HTTPCharset/

http://www.warski.org/blog/?p=4

http://confluence.atlassian.com/display/DOC/Configuring+Tomcat's+URI+encoding

A z takich ciekawostek to kiedyś miałem też problem z PostgreSQL 8.1 (ale w innych wersjach było to samo) ponieważ baza była zainstalowana z innym niż UTF-8 domyślnym kodowaniem.
Problem był z polskimi znakami w bazie mającej kodowanie ustawione na UTF-8. Wyszystko było w porządku do momentu kiedy wywołało się w SQL funkcji tolower , toupper. Polskie znaki nie były traktowane wtedy jako litery tylko jako znaki specjalne i tym samym nie były "zmniejszane" i "zwiększane". Zainstalowanie bazy z domyślnym kodowaniem UTF-8 pomogło.