Google App Engine HTTP Session vs JSF [en]

Google App Engine (GAE) is a Platform as a Service system providing (among others) Java platform with a servlet container. GAE uses multiple web servers to run an application. A given request may be routed to any server and it may not be the same server that handled a previous request from the same user. GAE provides (after turning it on) an implementation of sessions using the servlet session interface. The session is replicated between server instances which causes serious problems with JSF session beans. Read more

Google App Engine HTTP Session vs JSF

Google App Engine jest usługą typu Platform as a Service umożliwiającą (między innymi) uruchamianie aplikacji webowych Java poprzez udostępnienie kontenera servletów. Aplikacja nie jest uruchamiana w jednej instacji lecz zapytania do GAE są propagowane między wiele instacji serwerów. Istnieje możliwość korzystania z sesji HTTP (po zaznaczeniu tego w konfiguracji). Sesja jest replikowana między instancjami serwerów co rodzi poważne problemy w przypadku korzystania z sesyjnych beanów JSF.  Read more

Basic Authentication na Google App Engine

Google App Engine (GAE) dla Javy udostępnia jedynie namiastkę implementacji Servlet Security opisanego w rozdziale SRV.12 specyfikacji Java Servlet 2.5. W pliku web.xml (/web-app/security-constraint/auth-constraint/role-namemożemy użyć tylko roli admin lub *. Nie ma możliwości wyboru metody uwierzytelniania (SRV.12.5). W zamian za to mamy możliwość skorzystania z uwierzytelniania przy użyciu konta Google lub przez zewnętrznego dostawcę OpenID oraz użycia Google Users Java API.

Spotkałem się z potrzebą ograniczenia dostępu do całej aplikacji na GAE (włącznie ze stroną główną) tylko do developerów. To co w standardowym kontenerze webowym skończyłoby się na modyfikacji paru wpisów w web.xml tutaj wymagało innego podejścia. Read more

Przekazywanie akcji do komponentu composite w Facelets dla JSF 2

Specyfikacja JavaServer Faces 2.0 (JSR 314) obejmuje język definicji widoku Facelets. Udostępnia mechanizmy ułatwiające trzymanie się reguły DRY (Don’t Repeat Yourself) czyli unikanie powtarzania własnego kodu. Templates i composite components, bo o nich mowa umożliwiają dekompozycję definicji widoku na mniejsze framenty. Często w przypadku komponentów zawierających na przykład przyciski przydaje się możliwość przekazywania jako parametru akcji przez nie wywoływanej. W specyfikacji znalazłem informację o dwóch sposobach, w tym jednym podanym w przykładzie. Niemniej jednak podczas korzystania z referencyjnej implementacji okazało się, że jeszcze nie wszystko jest spójne. Read more

Workspace w NetBeans

Wydaje się, że w NetBeans brakuje odpowiednika workspace znanego z Eclipse. Okazuje się jednak, że taka funkcjonalność istnieje choć nie widać jej w GUI. Read more

Tomcat – uwierzytelnianie klienta SSL przy pomocy certyfikatu

Jednym z najpewniejszych sposobów uwierzytelniania klienta w architekturze klient-serwer jest uwierzytelnianie za pomocą certyfikatu klienta podpisanego przez wystawcę znanego (zaufanego) na serwerze. Protokół SSL umożliwia zestawienie bezpiecznego połączenia z klientem i serwerem uwierzytelnionymi certyfikatem. Pokażę jak takie połączenie skonfigurować na serwerze Apache Tomcat i przy pomocy przeglądarki Mozilla Firefox. Read more

Zaciemnione hasła w plikach konfiguracyjnych Websphere Application Server

Ostatnio musiałem ręcznie edytować pliki konfiguracyjne Websphere Application Server. Chodziło konkretnie o security.xml dla serwera. Chciałem podmienić keystore z certyfikatem serwera ponieważ został wgrany wadliwy certyfikat i nawet konsola administracyjna nie działała. Żeby to zrobić trzeba wpisać hasło do keystore. Nie jest to jednak taka prosta sprawa – hasła w security.xml są pozaciemniane. Read more

JPA w NetBeans – tutorial

Java Persistence API (JPA) jako część technologii EJB 3.0 upraszcza zapis danych obiektowych w relacyjnym modelu danych. Trwały zapis modelu aplikacji jest łatwiejszy niż przy pomocy entity beans w EJB 2.1. Używanie entity beans nie było zbyt wygodne i programiści bardzo często w zamian stosowali frameworki takie jak Hibernate, Oracle TopLink, i Java Data Objects (JDO). JPA bazuje na pomysłach grup pracujących nad tymi frameworkami.

Ten post umieściłem w kategorii Java EE. JPA jest częścią specyfikacji Enterprise JavaBeans 3.0 ale nie znaczy to, że nie można go użyć w zwykłej aplikacji SE. Opiszę tutaj właśnie taki przykład. Użyję do tego NetBeans IDE 6 wraz z biblioteką TopLink Essentials, która jest implementacją JPA wykonaną przez Oracle. Read more

JAX-WS vs SOAP:HEADER

Do uwierzytelniania w webserwisach często stosowało się HTTP Authentication (RFC 2617). Jest to sposób przesyłania danych uzytkownika uzależniony od protokołu (w nagłówko HTTP). We współczesnych aplikacjach wykorzystujących usługi sieciowe jest to niedopuszczalne. Wiadomość SOAP może na przykład iść od konsumenta usługi poprzez firewall XML do ESB i wtedy do kolejki komunikatów, z niej do kolejnego ESB aby być wkońcu skierowana do serwera dostawcy usług. W takiej sytuacji przesyłanie danych uwierzytelniających w nagłówku zupełnie się nie sprawdza nie mówiąc już o niższych warstwach jak SSL (RFC 2246). Stostuje się do tego przesyłanie danych związanych z bezpieczeństwem w nagłówku SOAP. Istnieje standard to normalizujący (WS-Security) ale jest stosunkowo nowy (1.0 marzec 2004, 1.1 luty 2006) i wiele usług korzysta z własnych rozwiązań. Read more