-
Lilianne E. Blaze
Witam,
Czy jest jakis 'prosty' sposob na wykrycie pod jakim kontenerem (JEE lub Servlets, nazwa i wersja) jest wykonywany kod? W skrocie, chodzi o pobranie tego samego co z ServletContext.getServerInfo, ale nie majac podanego obiektu ServletContext; \
Na razie kombinuje z czyms takim: sprawdzic czy jest ${catalina.base}/lib/catalina. jar , jezeli tak to odczytac ${catalina.base}/lib/catalina. jar/org/apache/catalina/util/S erverInfo.properties, dwie wersje dla 5.x i 6.x, podobnie z Jetty, troche gorzej z Glassfishem ale tez sie da.
Jest jakas 'zdrowsza' alternatywa? Nie musi byc calkowicie uniwersalne, na poczatek wystarczy rozpoznawanie wymienionych wyzej.
Pozdrawiam, L -
boska renia
Zdrowszą alternatywą było by odwołanie się do zmiennych środowiska - każdy z serwerów ustawia ich dosyć dużo. Jakie zmienne są ustawiane? wystarczy zajrzeć do skryptów uruchamiających serwer, ewentualnie skorzystać z kodu na dole.
Przykładowo, dla glassfisha:
String server="";
String accConfig = System.getenv("AS_ACC_CONFIG");
if (accConfig!=null) server="glassfish";
Nie jestem pewien, czy akurat ta zmienna jest zmienną ze specyfikacji JEE -- tj. wspólną dla wszystkich serwerów (z googla wynika, że raczej nie).
Dogodną zmienną do testowania danego serwera można wybrać za pomocą prostego scriptletu:
<%
Map<String,String> map = System.getenv();
for (Map.Entry<String,String> entry : map.entrySet()){
out.println("Key: "+entry.getKey()+" "+entry.getValue()+"<br/>");
}
%>
Dotyczy to oczywiście rodzaju kontenera, jeśli chodzi o wersję GF, to należy zczytać z pliku "${AS_INSTALL}"/registry.prope rties klucz "product.version" oraz "product.name". -
Lilianne E. Blaze
Za zmienne srodowiska jeszcze sie nie zabralam. Na razie odnosze wrazenie ze i tak wiekszosc tego jest w propertiesach systemowych.
Nie, to na pewno nie jest czesc specyfikacji.
registry.properties - fakt, najlatwiej, i chyba dam to jako fallback, ale na razie na Glassfisha mam inny pomysl - utworzyc classloadera do appserv-rt.jar i appserv-se.jar i odpalic klase com.sun.appserv.server.util.Ve rsion. Plusy - dodatkowo jest build-version i powinno dzialac z wszystkimi glassfishowatymi nawet jesli sa pociete. -
boska renia
a zdecydowanie bardziej skuteczne będzie odwołanie się do: System.getProperties(); tam można znaleźć zmienne ustawiane za pomocą -Dxxx=yyy.
przykładowo, dla GF:
String asName = System.getProperties.getProper ty("product.name"); -
-
Lilianne E. Blaze
J/w, nie ma build-version. A w Version.class jest:
product_name = "Sun Java System Application Server";
abbrev_product_name = "sun-appserver";
full_version = "9.1.1";
major_version = "9";
minor_version = "1";
build_id = "b38-fcs"; -
Lilianne E. Blaze
Mniej wiecej gotowa detekcja Tomcata i Glassfisha, zaraz biore sie za Jettyego.
Zwraca kulturalnie "Sun Java System Application Server 9.1.1 (build b38-fcs)"/ "Apache Tomcat/6.0.16.0 Jan 28 2008 11:35:29".
Ma ktos ochote testnac? Kod jest na razie beta-quality, licencja Apache 2.0. -
Koziołek [brat Javowiec]
-
Lilianne E. Blaze
Sa beta-snapshoty na http://www.lilianne-blaze.net/wiki/...
SVNa zrobie pozniej.
p.s. Jak nie dostane jakiegos feedbacku to sie obraze; \ -
Koziołek [brat Javowiec]
-
boska renia
Dla zapewnienia kulturalnego odpalania w warunkach bardzo produkcyjnych można dodać sprawdzenia SecurityManager.checkRead(..) dla jarów oraz ewentualnie SecurityManager.checkPropertie sAccess(). Przydałyby się też odpowiednie zmienne dla wersji i builda. Brawo tak czy inaczej. -
Lilianne E. Blaze
Zrobilam maly update, patrz strona.
Glowne zmiany: podstawowe logowanie, dostep do poszczegolnych czesci info o wersji, przy zbyt restrykcyjnym SecurityManager krzyczy zamiast sie wywalac.
A teraz chce feedback; \ Duzo feedbacku; \
- Przeglądaj grona w kategorii Internet i Komputery
- Przeglądaj grona w okolicy Warszawa
- Załóż własne grono tematyczne
- Zostań moderatorem
Podobne Tematy
|
|
Wszystko co związane z programowaniem w Java (J2EE, JSP, JDBC, itd) test
Miejsca grona (1)
-
Kino Luna ul. Marszałkowska, Warszawa
www.kinoluna.pl kino.luna@maxfilm.com.pl 22 621 78 28
- Dodaj miejsce

