wtorek, 30 października 2007

Eclipse 3.3 vs NetBeans 6.0 beta 2

Od ponad roku używam Eclipse do małych, złożonych z kilku (nastu) klas projektów. Do tej pory pracowałem w Visual C++ 6.0 z plugin-em WholeTomato oraz BCB 5 i 6. To, co mi się do tej pory rzuciło w oczy to między innymi błyskawiczna kompilacja w porównaniu z tymi kompilatorami C++, szybka i sensowna podpowiedź kontekstowa w edytorze, fantastyczne podpowiedzi przy błędach typu 'jaki błąd tutaj popełniłeś i jak go można poprawić' - Ctrl + 1.
Muszę przyznać, że dzięki Eclipse polubiłem programowanie w Javie.
Kilka dni temu zauważyłem że pojawiła się beta 2 konkurencyjnego środowiska, NetBeans.
Czy jest lepsze od Eclipse? Ponieważ nigdy wcześniej go nie używałem, na świeżo w miarę mojego wgłębiania się w nie spróbuję odpowiedzieć na to pytanie. Lub chociaż wyrobić sobie jakieś zdanie :)
Jeżeli już mamy JDK, to wystarczy ściągnąć 20 MB instalkę, żeby móc cieszyć się wersję IDE dla Java SE. Dla EE instalka ma 95 MB ze względu na dołączenie Glassfisha, Tomcata i związanych z tym funkcjonalności.
Teraz biorę się za pierwszy próbny projekt :)

A tu mam tutorial, który pewnie również przejdę:
http://youtube.com/watch?v=MC2DiUibMoQ

poniedziałek, 29 października 2007

Shutdown Hook

Jak się okazuje, można w miarę łatwo przechwycić w Javie zdarzenie zamykania maszyny wirtualnej. Wystarczy dodać w taki sposób obiekt dziedziczący z klasy Thread (u mnie nazywa się po prostu ShutdownThread):

Runtime.getRuntime().addShutdownHook(new ShutdownThread());

To co ma być zrobione zamieszczamy w metodzie public void run().
Tak więc nasz obiekt jest wątkiem, który jest zainicjalizowany przez konstruktor, ale nie wywołano start();

czwartek, 20 września 2007

SSL w Tomcat 5.5 i wyżej

Jak 'w miarę' szybko włączyć SSL-a w Tomcat-cie 5.5?

1. Potrzebujemy certyfikatu klucza publicznego i klucza prywatnego dla naszego serwera, można uzyskać darmowy np. od Thawte na 30-90 dni lub generujemy go sobie na próbę sami przy pomocy keytool z Java JDK.
Należy pamiętać, że CN w nazwie certyfikatu (Common Name) musi odpowiadać adresowi IP lub nazwie naszego serwera.
Docelowo dla publicznego serwera na którym mamy nasz będziemy musieli sobie go kupić, ale nie jest to duży wydatek.
Teraz, jeżeli otrzymaliśmy od CA plik P12 to lecimy do punktu 2.

2 a)
Jeżeli nie posiadamy certyfikatu i klucza prywatnego w postaci pliku P12/PFX, ale mamy klucz prywatny (np. server.key) i związany z nim certyfikat klucza publicznego (server.crt) to musimy z nich zrobić PFX-a.
Robimy to kopiując zawartość klucza i certyfikatu do jednego pliku w notatniku lub innym edytorze tekstowym i zapisujemy do pliku server.pem.
Teraz wystarczy jedna linijka polecenia za pomocą OpenSSLa:
openssl pkcs12 -export -in server.pem -out server.p12
i podajemy hasło do naszego pliku pfx, np. 'password' :)

2. Kopiujemy server.p12 do CATALINA_HOME, czyli np. c:\Program Files\Apache Software Foundation\Tomcat 5.5

3. Modyfikujemy plik CATALINA_HOME\conf\server.xml,
dodajemy nowy konektor za innym tagiem o tej samej nazwie:
< port="443" protocol="HTTP/1.1" maxthreads="150" keystorefile="server.p12" keystorepass="password" keystoretype="PKCS12" sslenabled="true" scheme="https" secure="true" clientauth="false" sslprotocol="SSL">

Jeżeli chcemy, żeby tylko za pośrednictwem SSL-a można było łączyć się z serwerem, to musimy jeszcze zakomentować tag z drugim konektorem, do portu 8080.

4. Restartujemy serwer, i próbujemy połączyć się z nim za pośrednictwem https, np. u mnie to jest taki adres: https://192.168.128.123/aplikacja/login.jsp

Jeżeli wszystko dobrze zrobiliśmy, to już możemy używać bezpiecznego połączenia z serwerem!