Ostatnio miałem zintegrować Quartz-a z aplikacją webową działającą na Tomcat-cie. Quartz to biblioteka służąca do zarządzania zdarzeniami, które mają się wykonywać w pewnych, określonych momentach czasu. Te 'momenty' można zdefiniować jako np. co 5 sekund lub za pomocą wzorca, czyli np. 'każdy piątek 18:00'.
Można w ten sposób wysyłać użytkownikom co miesiąc jakieś związane z jego aktywnością raporty.
Co trzeba zrobić, żeby użyć Quartz-a w swojej aplikacji? Niewiele.
1. Ściągamy Quartza 1.6 ze strony
2. Dodajemy go sobie do zbioru bibliotek projektu. U mnie było to określone w pliku lib.properties, w katalogu z bibliotekami.
Plik quartz-all-1.6.0.jar skopiowałem do \lib\quartz-1.6.0
a do lib.properties dodałem
quartz.version=1.6.0
quartz.dir=${lib.dir}/quartz-${quartz.version}
quartz.jar=${quartz.dir}/quartz-all-${quartz.version}.jar
3. Jeżeli mamy w projekcie zintegrowanego Springa 2.0, to pozostaje:
3a. utworzyć plik konfiguracyjny applicationContext-quartz.xml i zapisać go w katalogu WEB-INF.
U mnie wygląda następująco:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
<bean id="outdatetProjectsMailSender" class="pl.unizeto.unitrack.quartz.OutdatedProjectsMailSender">
<property name="userManager"><ref bean="userManager"/></property>
<property name="userTaskManager"><ref bean="userTaskManager"/></property>
</bean>
<bean id="dummyJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject"><ref bean="outdatetProjectsMailSender"/></property>
<property name="targetMethod"><value>sendEmails</value></property>
</bean>
<bean id="dummyCronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="dummyJobDetail"/>
</property>
<property name="cronExpression">
<value>0/10 * * * * ?</value>
</property>
</bean>
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="autoStartup" value="true"/>
<property name="waitForJobsToCompleteOnShutdown" value="true"/>
<property name="quartzProperties">
<props>
<!-- Plugins -->
<prop key="org.quartz.plugin.shutdownhook.class">
org.quartz.plugins.management.ShutdownHookPlugin
</prop>
<prop key="org.quartz.plugin.shutdownhook.cleanShutdown">true</prop>
</props>
</property>
<property name="triggers">
<list>
<ref bean="dummyCronTrigger"/>
</list>
</property>
</bean>
</beans>
Co to wszystko znaczy? Ciąg dalszy w następnym poście!
Pokazywanie postów oznaczonych etykietą Tomcat. Pokaż wszystkie posty
Pokazywanie postów oznaczonych etykietą Tomcat. Pokaż wszystkie posty
piątek, 2 listopada 2007
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!
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!
Subskrybuj:
Posty (Atom)