piątek, 20 stycznia 2012

Spring remoting cz.1 - RMI


RMI to javowy protokół do zdalnych wywołań metod. Pokażę jak fajnie w springu można z niego skorzystać. Zatem potrzeba:
  1. Serwera RMI gdzie będzie obiekt na którym zostanie wywołana metoda.
  2. Obiektu proxy (stub) na kliencie, który będzie proxy do zdalnego wywołania.
Spring uprasza pracę dając:
  1. Po stronie serwera używa exporterów do wystawienia beanów.
  2. Po stronie klienta używa FactoryBean-ów aby utworzyć odpowiednie proxy komunikujące się z obiektem na serwerze.
  3. Łapie wyjątki i tłumaczy je na swoje (runtime-owe) - hierarchia RemoteAccessExceptions

piątek, 3 czerwca 2011

Testowanie pointcut-ów w springu.

Witam. Pisałem już kilka postów o aspektach w springu. Testowałem ich działanie poprzez sysout-y. Dziś postanowiłem opisać jak można napisać test jednostkowy sprawdzający działanie pointcut-a. Pomysł zaczerpnąłem od kolegi z pracy - Darka Kaczyńskiego - ukłon w jego stronę.
Dodatkowo pokażę jak skorzystać z JavaConfig - dla tych, którzy mają dość xml-a (można postawić springa bez linijki xml-a ;-) ).

środa, 25 maja 2011

Spring singleton vs prototype scope.

Witam.
Dziś zaprezentuję jak pracować z różnymi (singleton, prototype) zasięgami beanów w springu. Jak wiemy domyślnie wszystko w springu jest singletonem. Wynika z tego rzecz oczywista - beany nie mogą być stanowe. A co jeśli potrzebujemy stanowego beana ? Mamy do dyspozycji scope=prototype.

niedziela, 22 maja 2011

SOAP za pomocą Apache CXF oraz springa.

Witam po długiej przerwie. W ostatnich miesiącach zmieniłem pracę i w zabieganiu nie miałem czasu na blogowanie. Dziś zajmę się zaprezentowaniem jak postawić soap-a korzystając z cxf-a i oczywiście spring-a. Projekt ze źrodłami można pobrać stąd.
Do poczytania czym jest SOAP odsyłam do wiki oraz dokumentacji JAX-WS.

Zacznijmy od części serwerowej. Tworzenie web serwisu można zacząć albo od napisania WSDL-a (contract first) albo od napisania interfejsu serwisu i wygenerowaniu WSDL-a (contract last). Skorzystam z contract last. Mój testowy interfejs wygląda następująco:
public interface HelloSOAP {
    String sayHello(String name);
}

piątek, 21 stycznia 2011

Transakcyjność w springu

Czołem.
Dziś zaprezentuję jak w springu skonfigurować transakcyjność. Najpierw przypomnijmy kilka pojęć.

Propagacja transakcji polega na zdefiniowaniu zachowania transakcji przy wywołaniu metody wewnątrz innej transakcyjnej metody.

Jeśli metoda A jest uruchomiona w traksakcji to co ma się wydarzyć, gdy wywoła ona metodę B, która również jest transakcyjna? Czy transakcja powinna się propagować czy nie? Czy może B powinna być uruchomiona w swojej transakcji? Jest to konfigurowalne. Spójrzmy na tabelę z opisem 3 podstawowych poziomów propagacji: