2013-03-21

SLFJ problem z bibliotekami

Problem w trakcie uruchamiania aplikacji na serwerze aplikacyjnym

Zgłaszany wyjątek:

SEVERE: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SEVERE: SLF4J: Defaulting to no-operation (NOP) logger implementation
SEVERE: SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

Rozwiązanie problemu:

dodanie odpowiedniej biblioteki obsługi logowania z listy poniżej:
  • slf4j-nop.jar
  • slf4j-simple.jar
  • slf4j-log4j12.jar
  • slf4j-jdk14.jar 
  • logback-classic.jar

Osobiście załadowałem biblioteki:
  •  logback-classic-1.0.1.jar 
  • logback-core-1.0.1.jar 
do katalogu /lib serwera Glassfish (%GLASSFISH_HOME%/lib). Po restarcie serwera wyjątek już nie został zgłoszony.

Spring MVC & Apache Tiles

Błędy zgłaszane w trakcie operacji deploy na serwerze Glassfish

java.lang.NoClassDefFoundError: org/apache/tiles/servlet/context/wildcard/WildcardServletTilesApplicationContextFactory

org/apache/tiles/TilesApplicationContext

Rozwiązanie problemu:
Zastosowanie odpowiednich wersji bibliotek dla Spring MVC i Apache Tiles rozwiązało problem:

  • Spring 3.0.5.RELEASE
  • Apache Tiles 2.2.2;

2013-03-03

[taxi Logistics] VPS/Cloud/Dedicated server?

No dobra, co dalej?

Mam ustalone podstawowe klocki dla aplikacji J2EE - serwer aplikacyjny Glassfish i baza danych MySQL.
Pozostaje wybór podstawowej platformy, na której można uruchomić serwery.

PaaS? Cloud? VPS? Dedicated Server??

Rozpoczynając poszukiwania platformy wiedziałem,  że po pierwsze nie chcę korzystać z serwera postawionoego na mojej maszynie. Chcę uniknąć potrzeby kontrolowania co chwilę serwera. Do tego koszty energii, itd. Poszukuje platformy, którą udostępnić może jakaś firma zewnętrzna. Do wyboru mamy serwer dedykowany (dedicated Server), usługi w chmurze (cloud) i wirtualny server (VPS). Trzeba pamiętać, że za większość tych usług zapłacimy. Ile? To zależy od usługodawcy i naszych wymagań. Co oznaczają te powyższe terminy? 
  • Serwer dedykowany- jedna z droższych usług ale za to otrzymujemy cały fizyczny serwer do zabawy, czyli maszynę szybką i wydajną;
  • Cloud (PaaS) - usługa w tzw. chmurze, czyli wynajmujemy u usługodawcy pełną platformę (PaaS - platform as a service), na której możemy zainstalować zabawki; opłaty zazwyczaj na podstawie metryk zużycia zasobów;
  • VPS - serwer wirtualny to "wycięta" część fizycznego serwera; fizyczna maszyna/serwer dzielona jest na mniejsze serwery wirtualne - to jeden z nich możemy wykupić i z niego korzystać. Opłaty stałę miesięczne; 

Darmowe możliwości - Google App

Aplikację J2EE można również opublikować za darmo na serwerach Google. Choć nie do końca jest to takie proste...
Czystą aplikację J2EE nie będziemy w stanie opublikować w GoogleApp. Musimy dociągnąć zabawki Google w postaci bibliotek SDK (Google App engine SDK) i odpowiedni je wykorzystać w aplikacji (względnie przerobić istniejącą aplikację). Więcej info: https://developers.google.com.

Darmowe możliwości - OpenShift

Kolejną darmową platformą jest OpenShift. Z tego co doczytałem to oferowanymi serwerami są serwery JBoss. Aby zainstalować aplikację trzeba trochę zmodyfikować strukturę projektu i skorzystać z "instalatora" przygotowanego w języku Ruby. Instalacja to proste wrzucenie aplikacji na serwer do foldera z funkcją autodeploy.

Mój wybór - VPS

Ze wszystkich wyżej wymienionych opcji najlepsze dla mnie wydaje się wynajęcie VPN. Koszty serwera dedykowanego są za duże. Usługa Cloud również jest droga i tu zazwyczaj jest brak możliwośći własnej konfiguracji serwera. Dwie opisane, darmowe hostingi są w porządku ale wg mnietrochę ograniczają developera. Stąd też mój wybór padł na serwer wirtualny. Wystarczyło porównać oferty dostępne w sieci.

Najtańszy VPS

Do moich potrzeb na początku potrzebuje podstawową konfigurację VPN. Jedną z najtańszych usług jest podstawowa usługa VPN OPENVZ VPS1 dostępna na http://vihost.pl/. 


NAZWA PAKIETU
CENA
VPS 1
20,- / MC
VPS 2
40,- / MC
VPS 3
60,- / MC
VPS 5
120,- / MC
VPS 6
199,- / MC
  • POW. DYSKOWA
  • PAMIĘĆ RAM
  • PAMIĘĆ RAM MAX.
  • OTRZYMANY CPU
  • TRANSFER MC.
  • LOKALIZACJA
  • 10 GB SAS R10
  • 1 GB
  • 2 GB
  • ~1 GHZ
  • 500 GB
  • POLSKA
  • 20 GB SAS R10
  • 2 GB
  • 3 GB
  • ~2 GHZ
  • 1000 GB
  • POLSKA
  • 40 GB SAS R10
  • 4 GB
  • 6 GB
  • ~4 GHZ
  • 1500 GB
  • POLSKA
  • 100 GB SAS R10
  • 8 GB
  • 10 GB
  • ~10 GHZ
  • 3000 GB
  • POLSKA
  • 150 GB SAS R10
  • 10 GB
  • 14 GB
  • ~14 GHZ
  • 5000 GB
  • POLSKA


Za nieco ponad 20 PLN miesięcznie otrzymamy podstawową wersję serwera Linux z 1 GB podstawowej pamięci RAM (z możliwością zużytkowania do 2 GB), 10GB dysku i około 1GHz CPU. Na początek wystarczy.



[taxi Logistics] Podstawowe składniki aplikacji - serwery

Po co to wszystko...

Aby aplikacja działała potrzebny jest serwer aplikacyjny. Oczywiście można "bawić się" przez cały czas na serwerze lokalnym - postawionym na maszynie developerskiej (na której pracujemy). Jeśli mamy możliwość uzyskania zewnętrznego IP (od usługodawcy internetu) to możemy pozwolić sobie na wystawienie własnej maszyny "na świat" zewnętrzny internetu. Ale.. To kosztuje, mimo wszystko. Aby serwer działał musi cały czas być podłączony do prądu. To oczywiście jest wygodne ale trzeba pamiętać, że odpalone usługi serwera zajmą trochę zasobów maszyny przez co praca na nim nie będzie wygodna. Można oczywiście podpiąć inną maszynę a na innej pracować. Ale po co jak można wynająć serwer wirtualny w sieci. Wystarczy zastanowić się co potrzebujemy. W moim przypadku do odpalenia aplikacji potrzebny mi jest serwer aplikacyjny obsługujący J2EE i baza danych MySQL.

Aplikacja na Glassfish

W związku z tym, że moje doświadczenia zdobyłem jak do tej pory jedynie na serwerze Oracle Weblogic i chciałbym zdobyć wiedzę jak i bagaż doświadczeń na innych darmowych serwerach, wybór padł na serwer Glassfish. Kiedyś miałem krótką styczność z tym serwerkiem i spodobała mi się prostota obsługi jak i jego możliwości. Obsługa poprzez konsolę administracyjną - po porcie 4848. Automatyczny deployment. To wygodne narzędzia.
Wersja Glassfish 3.1.2. Do tego JDK w wersji 1.6.


Baza danych MySQL 

Przede wszystkim ma być darmowa. Obsługa standardu SQL. No i do tego brak większego doświadczenia z tą wersją bazy (jak do tej pory ponad 4 lata pracy z PL/SQL i bazą Oracle DB 10/11g) - nie wliczając projektów na studiach - to wszystko wpłynęło na wybór bazy danych Oracle (obecnie) MySQL.