Ładowanie klas w aplikacjach J2EE

11 views
Skip to first unread message

mateusz hyski

unread,
Jan 23, 2012, 9:51:21 AM1/23/12
to Polish Java User Group
Witam.
Przelewam swoje juz dawno majace powstac pomysly na aplikacje J2EE i
trapi mnie brak wiedzy.
Chodzi mi o ładowanie klas w J2EE. Wiem, że w faces-config.xml
definiuje sie odzwierciedlenia do klas java, ale nie wiem jak
sprawdzic kiedy klasy te są tworzone i jak dlugo zyją w kontenerze.

Wojciech Erbetowski

unread,
Jan 23, 2012, 9:56:41 AM1/23/12
to polish-java...@googlegroups.com
I jakie jest pytanie? :-)

Jeśli chcesz wiedzieć dokładnie w którym momencie powstają (poza tym, że przy starcie aplikacji)
to zapewne chodzi Ci o relatywny czas względem innych objektów w aplikacji (np beanów Springowych).
O to chodzi?

Jeśli chcesz poznać dokładną ścieżkę wskocz debugerem i popatrz co kiedy ożywa i umiera :-)

Jeśli chodzi Ci o cykl życia beanów JSF o scope request/session/... to warto w dokumentacji tych scopów zerknąć.
A samo ładowanie klas odbywa się z tego co mi się wydaje w momencie stworzenia pierwszego obiektu z danej klasy
(np przy starcie aplikacji dla scope application, a przy pierwszym requeście dla scope request).

Pozdrawiam,
Wojtek


--
In order to post a job offer or any other advertisement please contact us at in...@java.pl
Aby publikować na grupie "Polish Java User Group", wyślij wiadomość e-mail na adres
polish-java...@googlegroups.com
By wypisać się z grupy wyślij e-mail do
polish-java-user-...@googlegroups.com
Więcej opcji na stronie grupy
http://groups.google.com/group/polish-java-user-group?hl=pl?hl=pl

mateusz hyski

unread,
Jan 23, 2012, 1:10:42 PM1/23/12
to polish-java...@googlegroups.com
Nie wykorzystuje Spring.

Zale�y mi tylko na tym aby wiedzie� w kt�rym momencie s� �adowane obiekty zdefiniowane w faces-config.xml i kiedy s� niszczone. I jak ustawi�, kt�re obiekty powiiny by� tworzone jako pierwsze.


Pozdrawiam
MH


W dniu 23.01.2012 15:56, Wojciech Erbetowski pisze:
I jakie jest pytanie? :-)

Je�li chcesz wiedzie� dok�adnie w kt�rym momencie powstaj� (poza tym, �e przy starcie aplikacji)
to zapewne chodzi Ci o relatywny czas wzgl�dem innych objekt�w w aplikacji (np bean�w Springowych).
O to chodzi?

Je�li chcesz pozna� dok�adn� �cie�k� wskocz debugerem i popatrz co kiedy o�ywa i umiera :-)

Je�li chodzi Ci o cykl �ycia bean�w JSF o scope request/session/... to warto w dokumentacji tych scop�w zerkn��.
A samo �adowanie klas odbywa si� z tego co mi si� wydaje w momencie stworzenia pierwszego obiektu z danej klasy
(np przy starcie aplikacji dla scope application, a przy pierwszym reque�cie dla scope request).

Pozdrawiam,
Wojtek

W dniu 23 stycznia 2012 15:51 u�ytkownik mateusz hyski <hyski....@gmail.com> napisa�:
Witam.
Przelewam swoje juz dawno majace powstac pomysly na aplikacje J2EE i
trapi mnie brak wiedzy.
Chodzi mi o �adowanie klas w J2EE. Wiem, �e w faces-config.xml

definiuje sie odzwierciedlenia do klas java, ale nie wiem jak
sprawdzic kiedy klasy te sďż˝ tworzone i jak dlugo zyjďż˝ w kontenerze.

--
In order to post a job offer or any other advertisement please contact us at in...@java.pl
Aby publikowa� na grupie "Polish Java User Group", wy�lij wiadomo�� e-mail na adres
polish-java...@googlegroups.com
By wypisa� si� z grupy wy�lij e-mail do
polish-java-user-...@googlegroups.com
Wi�cej opcji na stronie grupy
http://groups.google.com/group/polish-java-user-group?hl=pl?hl=pl

--
In order to post a job offer or any other advertisement please contact us at in...@java.pl
Aby publikowaďż˝ na grupie „Polish Java User Group”, wyďż˝lij wiadomo�� e-mail na adres
polish-java...@googlegroups.com
By wypisa� si� z grupy wy�lij e-mail do
polish-java-user-...@googlegroups.com
Wi�cej opcji na stronie grupy
http://groups.google.com/group/polish-java-user-group?hl=pl?hl=pl

Mateusz Dymczyk

unread,
Jan 23, 2012, 1:16:43 PM1/23/12
to polish-java...@googlegroups.com
Czyli nie chodzi Ci o ładowanie klas tylko o moment tworzenia instancji klas? Jeśli tak, to możesz do tego wykorzystać annotacje @PostConstruct i @PreDestroy na metodach w tych klasach - zostaną one wywołane zaraz po stworzeniu obiektu i zaraz przed jego unicestwieniem.

Jakiś przykład do czego potrzebowałbyś kolejności tworzenia tych obiektów?

Mateusz

2012/1/23 mateusz hyski <hyski....@gmail.com>
Nie wykorzystuje Spring.

Zależy mi tylko na tym aby wiedzieć w którym momencie są ładowane obiekty zdefiniowane w faces-config.xml i kiedy są niszczone. I jak ustawić, które obiekty powiiny być tworzone jako pierwsze.



Pozdrawiam
MH


W dniu 23.01.2012 15:56, Wojciech Erbetowski pisze:
I jakie jest pytanie? :-)

Jeśli chcesz wiedzieć dokładnie w którym momencie powstają (poza tym, że przy starcie aplikacji)
to zapewne chodzi Ci o relatywny czas względem innych objektów w aplikacji (np beanów Springowych).
O to chodzi?

Jeśli chcesz poznać dokładną ścieżkę wskocz debugerem i popatrz co kiedy ożywa i umiera :-)

Jeśli chodzi Ci o cykl życia beanów JSF o scope request/session/... to warto w dokumentacji tych scopów zerknąć.
A samo ładowanie klas odbywa się z tego co mi się wydaje w momencie stworzenia pierwszego obiektu z danej klasy
(np przy starcie aplikacji dla scope application, a przy pierwszym requeście dla scope request).

Pozdrawiam,
Wojtek

W dniu 23 stycznia 2012 15:51 użytkownik mateusz hyski <hyski....@gmail.com> napisał:
Witam.
Przelewam swoje juz dawno majace powstac pomysly na aplikacje J2EE i
trapi mnie brak wiedzy.
Chodzi mi o ładowanie klas w J2EE. Wiem, że w faces-config.xml

definiuje sie odzwierciedlenia do klas java, ale nie wiem jak
sprawdzic kiedy klasy te są tworzone i jak dlugo zyją w kontenerze.

--
In order to post a job offer or any other advertisement please contact us at in...@java.pl
Aby publikować na grupie "Polish Java User Group", wyślij wiadomość e-mail na adres
polish-java...@googlegroups.com

By wypisać się z grupy wyślij e-mail do
polish-java-user-...@googlegroups.com
--
In order to post a job offer or any other advertisement please contact us at in...@java.pl
Aby publikować na grupie „Polish Java User Group”, wyślij wiadomość e-mail na adres
polish-java...@googlegroups.com

By wypisać się z grupy wyślij e-mail do
polish-java-user-...@googlegroups.com

--
In order to post a job offer or any other advertisement please contact us at in...@java.pl
Aby publikować na grupie „Polish Java User Group”, wyślij wiadomość e-mail na adres
polish-java...@googlegroups.com

By wypisać się z grupy wyślij e-mail do
polish-java-user-...@googlegroups.com

mateusz hyski

unread,
Jan 23, 2012, 1:20:08 PM1/23/12
to polish-java...@googlegroups.com
Nawi�zanie polaczenia z DB (jako singletonu) a potem w zaleznosci od potrzeby tworzenie obiekty (rowniez jako singleton) i odpowiednio jego niszczenie. Chcialbym odpowiednio zarzadzac zasobami pamieci- dlatego chcialbym wiedziec kiedy to wszystko sie dzieje.


W dniu 23.01.2012 19:16, Mateusz Dymczyk pisze:
Czyli nie chodzi Ci o �adowanie klas tylko o moment tworzenia instancji klas? Je�li tak, to mo�esz do tego wykorzysta� annotacje @PostConstruct i @PreDestroy na metodach w tych klasach - zostan� one wywo�ane zaraz po stworzeniu obiektu i zaraz przed jego unicestwieniem.

Jaki� przyk�ad do czego potrzebowa�by� kolejno�ci tworzenia tych obiekt�w?

Mateusz

2012/1/23 mateusz hyski <hyski....@gmail.com>
Nie wykorzystuje Spring.

Zale�y mi tylko na tym aby wiedzie� w kt�rym momencie s� �adowane obiekty zdefiniowane w faces-config.xml i kiedy s� niszczone. I jak ustawi�, kt�re obiekty powiiny by� tworzone jako pierwsze.



Pozdrawiam
MH


W dniu 23.01.2012 15:56, Wojciech Erbetowski pisze:
I jakie jest pytanie? :-)

Je�li chcesz wiedzie� dok�adnie w kt�rym momencie powstaj� (poza tym, �e przy starcie aplikacji)
to zapewne chodzi Ci o relatywny czas wzgl�dem innych objekt�w w aplikacji (np bean�w Springowych).
O to chodzi?

Je�li chcesz pozna� dok�adn� �cie�k� wskocz debugerem i popatrz co kiedy o�ywa i umiera :-)

Je�li chodzi Ci o cykl �ycia bean�w JSF o scope request/session/... to warto w dokumentacji tych scop�w zerkn��.
A samo �adowanie klas odbywa si� z tego co mi si� wydaje w momencie stworzenia pierwszego obiektu z danej klasy
(np przy starcie aplikacji dla scope application, a przy pierwszym reque�cie dla scope request).

Pozdrawiam,
Wojtek

W dniu 23 stycznia 2012 15:51 u�ytkownik mateusz hyski <hyski....@gmail.com> napisa�:
Witam.

Przelewam swoje juz dawno majace powstac pomysly na aplikacje J2EE i
trapi mnie brak wiedzy.
Chodzi mi o �adowanie klas w J2EE. Wiem, �e w faces-config.xml

definiuje sie odzwierciedlenia do klas java, ale nie wiem jak
sprawdzic kiedy klasy te sďż˝ tworzone i jak dlugo zyjďż˝ w kontenerze.

--
In order to post a job offer or any other advertisement please contact us at in...@java.pl
Aby publikowa� na grupie "Polish Java User Group", wy�lij wiadomo�� e-mail na adres
polish-java...@googlegroups.com

By wypisa� si� z grupy wy�lij e-mail do
polish-java-user-...@googlegroups.com
--
In order to post a job offer or any other advertisement please contact us at in...@java.pl
Aby publikowaďż˝ na grupie „Polish Java User Group”, wyďż˝lij wiadomo�� e-mail na adres
polish-java...@googlegroups.com

By wypisa� si� z grupy wy�lij e-mail do
polish-java-user-...@googlegroups.com
--
In order to post a job offer or any other advertisement please contact us at in...@java.pl
Aby publikowaďż˝ na grupie „Polish Java User Group”, wyďż˝lij wiadomo�� e-mail na adres
polish-java...@googlegroups.com

By wypisa� si� z grupy wy�lij e-mail do
polish-java-user-...@googlegroups.com
--
In order to post a job offer or any other advertisement please contact us at in...@java.pl
Aby publikowaďż˝ na grupie „Polish Java User Group”, wyďż˝lij wiadomo�� e-mail na adres
polish-java...@googlegroups.com

By wypisa� si� z grupy wy�lij e-mail do
polish-java-user-...@googlegroups.com

Sławek Sobótka

unread,
Jan 23, 2012, 5:37:54 PM1/23/12
to polish-java...@googlegroups.com
> Zale�y mi tylko na tym aby wiedzie� w kt�rym momencie s� �adowane obiekty zdefiniowane w faces-config.xml i kiedy s� niszczone. I jak ustawi�,
> kt�re obiekty powiiny by� tworzone jako pierwsze.

W faces config definiujesz obiekty dla warstwy prezentacji. Ich zadaniem/rolą w JSF jest bycie prezenterem/modelem prezentacyjnym per widok.
1. Jeżeli zależy Ci na kolejności ich tworzenia to robisz coś źle. Beany JSF powinny być niezależne aby nie usztywniać widoku.
2. Jeżeli w tym miejscu sterujesz połączeniem z bazą danych to robisz coś źle. Od tego są inne warstwy. Warto zreflektować się, że JSF może być jednym z wielu klientów do niższych warstw (obok mobila, webservice itd).

Przepraszam za odpowiedź w stylu "there is no spoon", ale problem nie jest prosty.
Tutaj http://code.google.com/p/ddd-cqrs-sample/ znajdziesz przykład rozwarstwiania. W repo są przykłady na Springu ale również EE 6 (przykłady dla JSF dopiero powstają), ale na wiki można poczytać ogólnie o architekturze aplikacji.

powodzenia
Sławek Sobótka

Michal Orman

unread,
Jan 24, 2012, 2:29:54 AM1/24/12
to polish-java...@googlegroups.com
Chyba troch� si� zagalopowa�e�. Tzn. technicznie to co chcesz robi� jest ok, ale praktycznie tymi zadaniami powinnien zajmowa� si� framework i zwykle to robi. Pewnie te� du�o lepiej i optymalniej ni� Ty b�dziesz w stanie napisa�. Zarz�dzanie zasobami pami�ci pozostaw wirtualnej maszynie, kt�ra jest pod tym k�tem zoptymalizowana. No chyba, �e u�ywasz jakiej� magicznej maszyny w jakim� �rodowisku wbudowanym (embedded), ale wtedy zastan�w si� czy na pewno potrzebujesz Javy. Skoro jednak u�ywasz JSF to raczej nie kodujesz na �rodowisko wbudowane, tylko na zwyczajne serwery, a te z regu�y maj� studnie ramu (teraz pami�� jest tania jak woda, w ka�dej chwili mo�na do�o�y�), wi�c martwienie si� tym zasobem jest zwyczajnie niepotrzebne (chyba, �e mowa o wyci�ganiu terabajt�w danych z jakiej� bazy ;)). Pozostaw zadania narz�dziom wyspecjalizowanym w tym zakresie, a nie m�cz si� z wywa�aniem otwartych drzwi (pami�taj, �e po��czenia do DB to tak�e zarz�dzanie poolem takich po��cze�, zarz�dzanie transakcjami itd.).

Do po��czenia z DB oraz zarz�dzania tworzeniem i niszczeniem obiekt�w we� jaki� framework. Spring, EJB/JPA, etc. Mo�esz te� spr�bowa� z ca�ym stosem np. Seam Framework kt�ry od razu dla ciebie po��czy odpowiednie frameworki.

A Singleton w 99% przypadk�w (w tym w Twoim ;)) to anty-pattern. Do po��cze� DB/transakcji oraz tworzenia obiekt�w powinno si� wykorzystywa� kontener IoC i wstrzykiwanie zale�no�ci (dependency injection).

Mateusz Hyski

unread,
Jan 24, 2012, 3:16:49 AM1/24/12
to polish-java...@googlegroups.com
Michale , rozumiem twoją wypowiedz, ale ja stosuje JPA. Nie korzystam z Spring, bo to mi jest niepotrzebne. Ok dzieki za sugestie.Sądzę, że temat można zamknąć.

W dniu 24 stycznia 2012 08:29 użytkownik Michal Orman <michal...@gmail.com> napisał:
Chyba trochę się zagalopowałeś. Tzn. technicznie to co chcesz robić jest ok, ale praktycznie tymi zadaniami powinnien zajmować się framework i zwykle to robi. Pewnie też dużo lepiej i optymalniej niż Ty będziesz w stanie napisać. Zarządzanie zasobami pamięci pozostaw wirtualnej maszynie, która jest pod tym kątem zoptymalizowana. No chyba, że używasz jakiejś magicznej maszyny w jakimś środowisku wbudowanym (embedded), ale wtedy zastanów się czy na pewno potrzebujesz Javy. Skoro jednak używasz JSF to raczej nie kodujesz na środowisko wbudowane, tylko na zwyczajne serwery, a te z reguły mają studnie ramu (teraz pamięć jest tania jak woda, w każdej chwili można dołożyć), więc martwienie się tym zasobem jest zwyczajnie niepotrzebne (chyba, że mowa o wyciąganiu terabajtów danych z jakiejś bazy ;)). Pozostaw zadania narzędziom wyspecjalizowanym w tym zakresie, a nie męcz się z wyważaniem otwartych drzwi (pamiętaj, że połączenia do DB to także zarządzanie poolem takich połączeń, zarządzanie transakcjami itd.).

Do połączenia z DB oraz zarządzania tworzeniem i niszczeniem obiektów weź jakiś framework. Spring, EJB/JPA, etc. Możesz też spróbować z całym stosem np. Seam Framework który od razu dla ciebie połączy odpowiednie frameworki.

A Singleton w 99% przypadków (w tym w Twoim ;)) to anty-pattern. Do połączeń DB/transakcji oraz tworzenia obiektów powinno się wykorzystywać kontener IoC i wstrzykiwanie zależności (dependency injection).


On 23.01.2012 19:20, mateusz hyski wrote:
Nawiązanie polaczenia z DB (jako singletonu) a potem w zaleznosci od potrzeby tworzenie obiekty (rowniez jako singleton) i odpowiednio jego niszczenie. Chcialbym odpowiednio zarzadzac zasobami pamieci- dlatego chcialbym wiedziec kiedy to wszystko sie dzieje.



W dniu 23.01.2012 19:16, Mateusz Dymczyk pisze:
Czyli nie chodzi Ci o ładowanie klas tylko o moment tworzenia instancji klas? Jeśli tak, to możesz do tego wykorzystać annotacje @PostConstruct i @PreDestroy na metodach w tych klasach - zostaną one wywołane zaraz po stworzeniu obiektu i zaraz przed jego unicestwieniem.

Jakiś przykład do czego potrzebowałbyś kolejności tworzenia tych obiektów?

Mateusz

2012/1/23 mateusz hyski <hyski....@gmail.com>
Nie wykorzystuje Spring.

Zależy mi tylko na tym aby wiedzieć w którym momencie są ładowane obiekty zdefiniowane w faces-config.xml i kiedy są niszczone. I jak ustawić, które obiekty powiiny być tworzone jako pierwsze.



Pozdrawiam
MH


W dniu 23.01.2012 15:56, Wojciech Erbetowski pisze:
I jakie jest pytanie? :-)

Jeśli chcesz wiedzieć dokładnie w którym momencie powstają (poza tym, że przy starcie aplikacji)
to zapewne chodzi Ci o relatywny czas względem innych objektów w aplikacji (np beanów Springowych).
O to chodzi?

Jeśli chcesz poznać dokładną ścieżkę wskocz debugerem i popatrz co kiedy ożywa i umiera :-)

Jeśli chodzi Ci o cykl życia beanów JSF o scope request/session/... to warto w dokumentacji tych scopów zerknąć.
A samo ładowanie klas odbywa się z tego co mi się wydaje w momencie stworzenia pierwszego obiektu z danej klasy
(np przy starcie aplikacji dla scope application, a przy pierwszym requeście dla scope request).

Pozdrawiam,
Wojtek

W dniu 23 stycznia 2012 15:51 użytkownik mateusz hyski <hyski....@gmail.com> napisał:
Witam.
Przelewam swoje juz dawno majace powstac pomysly na aplikacje J2EE i
trapi mnie brak wiedzy.
Chodzi mi o ładowanie klas w J2EE. Wiem, że w faces-config.xml

definiuje sie odzwierciedlenia do klas java, ale nie wiem jak
sprawdzic kiedy klasy te są tworzone i jak dlugo zyją w kontenerze.

--
In order to post a job offer or any other advertisement please contact us at in...@java.pl
Aby publikować na grupie "Polish Java User Group", wyślij wiadomość e-mail na adres
polish-java...@googlegroups.com

By wypisać się z grupy wyślij e-mail do
polish-java-user-...@googlegroups.com
--
In order to post a job offer or any other advertisement please contact us at in...@java.pl
Aby publikować na grupie „Polish Java User Group”, wyślij wiadomość e-mail na adres
polish-java...@googlegroups.com

By wypisać się z grupy wyślij e-mail do
polish-java-user-...@googlegroups.com
--
In order to post a job offer or any other advertisement please contact us at in...@java.pl
Aby publikować na grupie „Polish Java User Group”, wyślij wiadomość e-mail na adres
polish-java...@googlegroups.com

By wypisać się z grupy wyślij e-mail do
polish-java-user-...@googlegroups.com
--
In order to post a job offer or any other advertisement please contact us at in...@java.pl
Aby publikować na grupie „Polish Java User Group”, wyślij wiadomość e-mail na adres
polish-java...@googlegroups.com

By wypisać się z grupy wyślij e-mail do
polish-java-user-...@googlegroups.com

--
In order to post a job offer or any other advertisement please contact us at in...@java.pl
Aby publikować na grupie „Polish Java User Group”, wyślij wiadomość e-mail na adres
polish-java...@googlegroups.com

By wypisać się z grupy wyślij e-mail do
polish-java-user-...@googlegroups.com

--
In order to post a job offer or any other advertisement please contact us at in...@java.pl
Aby publikować na grupie „Polish Java User Group”, wyślij wiadomość e-mail na adres
polish-java...@googlegroups.com

By wypisać się z grupy wyślij e-mail do
polish-java-user-...@googlegroups.com

Łukasz Lenart

unread,
Jan 24, 2012, 3:25:10 AM1/24/12
to polish-java...@googlegroups.com
W dniu 24 stycznia 2012 08:29 użytkownik Michal Orman
<michal...@gmail.com> napisał:
> A Singleton w 99% przypadków (w tym w Twoim ;)) to anty-pattern. Do połączeń
> DB/transakcji oraz tworzenia obiektów powinno się wykorzystywać kontener IoC
> i wstrzykiwanie zależności (dependency injection).

Ech... i znów to samo, ktoś kiedyś powiedział, że Singleton to
anty-pattern i tak już wszyscy wałkują i walą po oczach :P

Założę się, że kontener DI ma w sobie nie jeden Singleton i działa, i
jakoś nikt nie mówi, że to be... Oczywiście jak z każdym młotkiem,
można zawsze go użyć w złym celu ;-)

A żeby nie było tak całkiem OT, to jakiej JavaEE używasz ? W 6 jest
CDI, które polecam :-)


Pozdrawiam
--
Łukasz http://www.lenart.org.pl/
Warszawa JUG conference - Confitura http://confitura.pl/

Michal Orman

unread,
Jan 24, 2012, 3:38:15 AM1/24/12
to polish-java...@googlegroups.com
Nie wiem, kto powiedzia�, ale ja tak m�wi� :P. A mojsza prawda, jest
bardziej... ;)

Chodzi mi o to, �e mo�e 10 lat temu Singletony mia�y sens, ale dzisiaj
programuje si� inaczej, na wy�szym poziomie abstrakcji, z u�yciem innych
narz�dzi i w tym kontek�cie bardzo trudno uzasadni� wykorzystanie
Singletona. A frameworki, mo�e i wykorzystuj� singletony, ale w�a�nie
dlatego, �e ten wzorzec nadaje si� g��wnie do pisania framework�w.
Praktycznie zawsze pisz�c singleton, chodzi o zarz�dzanie pami�ci� czy
tworzeniem/niszczeniem obiekt�w czyli de facto pisaniem jakiego�
frameworka, a tym obecnie zajmuj� si� kontenery IoC. Singletony �ci�le
wi��� kod z ich implementacj� i s� pewn� form� globalnego stanu przez co
bardzo utrudniajďż˝ testowanie i refaktoryzacjďż˝, dlatego ja zaliczam je (i
nie tylko ja ;)) do anty-pattern�w.

On 24.01.2012 09:25, �ukasz Lenart wrote:
> W dniu 24 stycznia 2012 08:29 u�ytkownik Michal Orman
> <michal...@gmail.com> napisaďż˝:


>> A Singleton w 99% przypadk�w (w tym w Twoim ;)) to anty-pattern. Do po��cze�
>> DB/transakcji oraz tworzenia obiekt�w powinno si� wykorzystywa� kontener IoC
>> i wstrzykiwanie zale�no�ci (dependency injection).

> Ech... i zn�w to samo, kto� kiedy� powiedzia�, �e Singleton to
> anty-pattern i tak ju� wszyscy wa�kuj� i wal� po oczach :P
>
> Za�o�� si�, �e kontener DI ma w sobie nie jeden Singleton i dzia�a, i
> jako� nikt nie m�wi, �e to be... Oczywi�cie jak z ka�dym m�otkiem,
> mo�na zawsze go u�y� w z�ym celu ;-)
>
> A �eby nie by�o tak ca�kiem OT, to jakiej JavaEE u�ywasz ? W 6 jest
> CDI, kt�re polecam :-)
>
>
> Pozdrawiam

Łukasz Lenart

unread,
Jan 24, 2012, 3:49:33 AM1/24/12
to polish-java...@googlegroups.com
W dniu 24 stycznia 2012 09:38 użytkownik Michal Orman
<michal...@gmail.com> napisał:
> Chodzi mi o to, że może 10 lat temu Singletony miały sens, ale dzisiaj
> programuje się inaczej, na wyższym poziomie abstrakcji, z użyciem innych
> narzędzi i w tym kontekście bardzo trudno uzasadnić wykorzystanie
> Singletona. A frameworki, może i wykorzystują singletony, ale właśnie
> dlatego, że ten wzorzec nadaje się głównie do pisania frameworków.
> Praktycznie zawsze pisząc singleton, chodzi o zarządzanie pamięcią czy
> tworzeniem/niszczeniem obiektów czyli de facto pisaniem jakiegoś frameworka,
> a tym obecnie zajmują się kontenery IoC. Singletony ściśle wiążą kod z ich
> implementacją i są pewną formą globalnego stanu przez co bardzo utrudniają
> testowanie i refaktoryzację, dlatego ja zaliczam je (i nie tylko ja ;)) do
> anty-patternów.

I tu jest pies pogrzebany, czyli postrzeganie Singletonu tak jak to
robiło się 10 lat temu ;-)

Jeśli do metody przekazujesz obiekt (np. niemodyfikowalną listę), to
czy to nie jest Singleton w ramach tej metody ? A jak do konstruktora
klasy przekażesz obiekt (utworzony przez kontener DI czy też ręcznie
ale wcześniej, przed utworzeniem obiektu do którego go przekazujemy),
to czy to nie jest Singleton dla tej klasy ?

I tak dalej ... Jak powieddziałem, postrzeganie Singletona przez
SomeObject.getInstance() to arachizm, który ma już więcej niż 10 lat
;-)


Pozdrawiam
--
Łukasz
Mobile +48 606 323 122
Office +27 11 0838747

Krystian Nowak

unread,
Jan 24, 2012, 3:51:45 AM1/24/12
to polish-java...@googlegroups.com
Zgadzam się z przedmówcą... JSR-330 javax.inject.Singleton

Pozdrawiam,
Krystian

2012/1/24 Łukasz Lenart <lukasz...@googlemail.com>:

> --
> In order to post a job offer or any other advertisement please contact us at in...@java.pl

> Aby publikować na grupie "Polish Java User Group", wyślij wiadomość e-mail na adres
> polish-java...@googlegroups.com


> By wypisać się z grupy wyślij e-mail do
> polish-java-user-...@googlegroups.com

> Więcej opcji na stronie grupy
> http://groups.google.com/group/polish-java-user-group?hl=pl?hl=pl

Michal Orman

unread,
Jan 24, 2012, 4:53:19 AM1/24/12
to polish-java...@googlegroups.com
Ok, masz racj�, chodzi mi dok�adnie o tego singletona, kt�rego tworzy
siďż˝ z pomocďż˝ metod typu getInstance(). Postrzeganie parametru
przekazanego do metody jako singletonu w ramach tej metody jest w
porz�dku, dlatego �e jest pozbawione wad tamtego podej�cia -
parametr/singleton jest do metody przekazywany/wstrzykiwany a nie
pozyskiwany wewn�trz tej metody z pomoc� jaki� statycznych metod. Nie
tyle sam singleton jest z�y co spos�b jego tworzenia i przekazywania
obiektom. Je�eli robione jest to z pomoc� DI to w porz�dku, ale wtedy de
facto nie interesuje nas to, �e mamy do czynienia z singletonem - ot
dostali�my jak�� implementacj�.

Singleton tworzony i zarz�dzany przez kontener, oraz wstrzykiwany innym
obiektom jest ok. Singleton, kt�ry sam sob� zarz�dza i tworzony jest w
innych klasach przez wywo�ywanie metody statycznej jest z�y. Niestety
najcz�ciej spotykam singletony realizowane w ten drugi spos�b, st�d
s�ysz�c "singleton" w��czaj� si� u mnie odruchy obronne ;)

Pozdrawiam

On 24.01.2012 09:49, �ukasz Lenart wrote:
> W dniu 24 stycznia 2012 09:38 u�ytkownik Michal Orman
> <michal...@gmail.com> napisaďż˝:


>> Chodzi mi o to, �e mo�e 10 lat temu Singletony mia�y sens, ale dzisiaj
>> programuje si� inaczej, na wy�szym poziomie abstrakcji, z u�yciem innych
>> narz�dzi i w tym kontek�cie bardzo trudno uzasadni� wykorzystanie
>> Singletona. A frameworki, mo�e i wykorzystuj� singletony, ale w�a�nie
>> dlatego, �e ten wzorzec nadaje si� g��wnie do pisania framework�w.
>> Praktycznie zawsze pisz�c singleton, chodzi o zarz�dzanie pami�ci� czy
>> tworzeniem/niszczeniem obiekt�w czyli de facto pisaniem jakiego� frameworka,
>> a tym obecnie zajmuj� si� kontenery IoC. Singletony �ci�le wi��� kod z ich
>> implementacjďż˝ i sďż˝ pewnďż˝ formďż˝ globalnego stanu przez co bardzo utrudniajďż˝

>> testowanie i refaktoryzacjďż˝, dlatego ja zaliczam je (i nie tylko ja ;)) do
>> anty-pattern�w.


> I tu jest pies pogrzebany, czyli postrzeganie Singletonu tak jak to

> robi�o si� 10 lat temu ;-)
>
> Je�li do metody przekazujesz obiekt (np. niemodyfikowaln� list�), to


> czy to nie jest Singleton w ramach tej metody ? A jak do konstruktora

> klasy przeka�esz obiekt (utworzony przez kontener DI czy te� r�cznie
> ale wcze�niej, przed utworzeniem obiektu do kt�rego go przekazujemy),


> to czy to nie jest Singleton dla tej klasy ?
>

> I tak dalej ... Jak powieddzia�em, postrzeganie Singletona przez
> SomeObject.getInstance() to arachizm, kt�ry ma ju� wi�cej ni� 10 lat
> ;-)
>
>
> Pozdrawiam

Łukasz Lenart

unread,
Jan 24, 2012, 5:46:45 AM1/24/12
to polish-java...@googlegroups.com
W dniu 24 stycznia 2012 10:53 użytkownik Michal Orman
<michal...@gmail.com> napisał:
> Singleton tworzony i zarządzany przez kontener, oraz wstrzykiwany innym
> obiektom jest ok. Singleton, który sam sobą zarządza i tworzony jest w
> innych klasach przez wywoływanie metody statycznej jest zły. Niestety
> najczęściej spotykam singletony realizowane w ten drugi sposób, stąd słysząc
> "singleton" włączają się u mnie odruchy obronne ;)

Dlatego należy edukować i pokazywać co jest złe, a nie że generalnie
sam wzorzec jest zły. Jak zwykle jest to problem młotka ;-)

Mateusz Hyski

unread,
Jan 24, 2012, 9:19:25 AM1/24/12
to polish-java...@googlegroups.com
Ok chlopaki i dzieci.


Jak kazde forum, odpowiedz na temat uzyskalem, natomiast pogadac o swoich sugestiach mozecie przy kawie gdzies w parku. Niestety informatyk-programista ma to do siebie, ze musi swoja racje przekazac - jak to widac na kazdych forach :)



Dzieki WIELKIE.

--
In order to post a job offer or any other advertisement please contact us at in...@java.pl
Aby publikować na grupie "Polish Java User Group", wyślij wiadomość e-mail na adres
polish-java...@googlegroups.com

By wypisać się z grupy wyślij e-mail do
polish-java-user-...@googlegroups.com

Łukasz Lenart

unread,
Jan 24, 2012, 9:26:50 AM1/24/12
to polish-java...@googlegroups.com
W dniu 24 stycznia 2012 15:19 użytkownik Mateusz Hyski
<hyski....@gmail.com> napisał:

> Jak kazde forum, odpowiedz na temat uzyskalem, natomiast pogadac o swoich
> sugestiach mozecie przy kawie gdzies w parku. Niestety
> informatyk-programista ma to do siebie, ze musi swoja racje przekazac - jak
> to widac na kazdych forach :)

Nie bardzo rozumiem tą uszczypliwość ? To źle, że dyskutujemy ? To
źle, że przedstawiamy swoje poglądy ? Ok, dyskusja odbiegła od tematu
głównego, ale tak już jest z dyskusją, że zawsze zbacza, nie zdarza ci
się to w dyskusji twarzą w twarz ?

karol cybul

unread,
Jan 24, 2012, 9:28:37 AM1/24/12
to polish-java...@googlegroups.com
Pytanie -> Odpowiedź.

Uprzejmie donoszę, że czasem takie "dyskusje" traktuje jako SPAM.

--
In order to post a job offer or any other advertisement please contact us at in...@java.pl
Aby publikować na grupie "Polish Java User Group", wyślij wiadomość e-mail na adres
polish-java...@googlegroups.com
By wypisać się z grupy wyślij e-mail do
polish-java-user-...@googlegroups.com
Więcej opcji na stronie grupy
http://groups.google.com/group/polish-java-user-group?hl=pl?hl=pl



--
Pozdrawiam
Karol Cybul

Mateusz Hyski

unread,
Jan 24, 2012, 9:30:11 AM1/24/12
to polish-java...@googlegroups.com
to zaloz prosze odrebny temat i dyskutuj, albo jak pisze- kawka w parku :)

Mateusz Hyski

unread,
Jan 24, 2012, 9:30:38 AM1/24/12
to polish-java...@googlegroups.com
I masz racje- tez tak zrobie :)

Michal Margiel

unread,
Jan 24, 2012, 9:35:41 AM1/24/12
to polish-java...@googlegroups.com


W dniu 24 stycznia 2012 15:30 użytkownik Mateusz Hyski <hyski....@gmail.com> napisał:
to zaloz prosze odrebny temat i dyskutuj, albo jak pisze- kawka w parku :)

czegoś takiego to ja jeszce nie widziałem.. ja myślałem, że to otwarta grupa i każdy może się wypowiadać na różne sensowne tematy... ale widzę że niektórzy twierdzą, że 
"mój temat jest najmojszy" :/

przepraszam  serdecznie pytającego za mocny offtop (obiecuję że przy najbliższej okazji pójdę do parku), ale, tak jak Łukasz, nie zrozumiałem twojej uszczypliwości (ja bym to wręcz nazwał atakiem).
--
Pozdrawiam/Best regards
Michał Margiel

http://www.confitura.pl (dawniej Javarsovia)
http://www.linkedin.com/in/MichalMargiel
http://www.margiel.eu

Krzysztof Wolny

unread,
Jan 24, 2012, 9:38:52 AM1/24/12
to polish-java...@googlegroups.com

Tez nie rozumiem. Jesli komus przeszkadza dyskusja mimo ze w jej trakcie dostal odpowiedz...to jest to dziwne. Zawsze mozna zmutowac watek w gmailu albo zrezygnowac z mejli.

Krzysztof Wolny

http://blog.vandroid.pl

--

Bogdan Sajewicz

unread,
Jan 24, 2012, 10:18:40 AM1/24/12
to polish-java...@googlegroups.com
To jest otwarta, demokratyczna lista dyskusyjna. Zawsze taka była i TĘ GRUPĘ podaję jako przykład demokracji innym, młodszym doświadczeniem grupom.
 
@Łukasz Lenart, @Krzysztof Wolny
 
W pełni się z Wami zgadzam.
 
@Karol Cybul
>Uprzejmie donoszę, że czasem takie "dyskusje" traktuje jako SPAM.
 
Nie znasz lub zapomniałeś, jaka jest idea list dyskusyjnych.
Kolega mój (którego skądinąd bardzo lubię) musi odpisać na 100 maili dziennie i zaczyna podobnie uważać co do tego "spamu".
Gdy go o coś pytam mailem, bywa, że odpowiada "połówką zdania" (na całe sensowne nie ma czasu).
Inny "musi" dziennie przerobić "400" tweetów.
 
Kto nie przerabia ilości informacji jaka do niego dociera, niech ją odfiltruje, wyłączy subskrybcję, ustawi powiadomienia mailowe na raz w tygodniu etc.
 
Ale niech nie cenzuruje swobody wypowiedzi! To jest lista dyskusyjna. Tu ścierają się poglądy, pojawia burza mózgów, poprzez otwartą dyskusję można dojść do nowych, wcześniej niespodziewanych wniosków i celów.
 
Żyjemy w coraz (dramatycznie) szybszym świecie, ale nie dajmy się zwariować.
 
Pozdrawiam wszystkich, :)
Bogdan Sajewicz

karol cybul

unread,
Jan 24, 2012, 10:35:11 AM1/24/12
to polish-java...@googlegroups.com
Ok, zmieniłem sobie ustawienia.

Nie zawsze dobrze jest gdy temat odpływa gdzieś indziej.
Nie zawsze rodzi się z tego coś dobrego, a efekty nie są warte poświęconego czasu. 

--
In order to post a job offer or any other advertisement please contact us at in...@java.pl
Aby publikować na grupie „Polish Java User Group”, wyślij wiadomość e-mail na adres
polish-java...@googlegroups.com
By wypisać się z grupy wyślij e-mail do
polish-java-user-...@googlegroups.com
Więcej opcji na stronie grupy
http://groups.google.com/group/polish-java-user-group?hl=pl?hl=pl



--
Pozdrawiam
Karol Cybul

Bogdan Sajewicz

unread,
Jan 24, 2012, 10:49:35 AM1/24/12
to Polish Java User Group
> Nie zawsze dobrze jest gdy temat odpływa gdzieś indziej.
> Nie zawsze rodzi się z tego coś dobrego, a efekty nie są warte poświęconego
> czasu.

Rozumiem z drugiej strony też Ciebie i innych kolegów. Te w/w wady są
chyba kosztem, jaki płaci się za "demokrację" tzn. możliwość mówienia/
pisania co się myśli, bycia otwartym, nawet jeśli nie zawsze jest to
całkiem na temat, ale jakoś "ciągiem myślowym" wyłoniło się w toku
dyskusji.

Całkowita krytyka wypowiedzi, spowoduje jednak, że wszyscy się
"pozamykają" i na tym się skończy. :(
Możemy tu wspólnie szukać kompromisowych rozwiązań. :)

Pozdrawiam wszystkich,
Bogdan

On 24 Sty, 16:35, karol cybul <k.cy...@gmail.com> wrote:
> Ok, zmieniłem sobie ustawienia.
>
> Nie zawsze dobrze jest gdy temat odpływa gdzieś indziej.
> Nie zawsze rodzi się z tego coś dobrego, a efekty nie są warte poświęconego
> czasu.
>
> W dniu 24 stycznia 2012 16:18 użytkownik Bogdan Sajewicz <
> bogdan.sajew...@gmail.com> napisał:
>
>
>
>
>
>
>
>
>
> > **
> > at i...@java.pl
Reply all
Reply to author
Forward
0 new messages