Avatar billede lazzo Nybegynder
05. maj 2009 - 00:00 Der er 10 kommentarer og
1 løsning

Lukke for servere fra tomcat..

Hey alle,

Jeg arbejder pA et projekt som koerer paa noget unix, med tomcat som server. Her skal jeg lave en liste som indhenter nogen informationer om nogen servere. Det skal vaere muligt fra denne liste at restarte og stoppe nogen af disse servere fra java koden.
Jeg har forsoegt google, men synes ikke jeg kan finde noget der kan lige det jeg oensker. Er dette muligt, og evt. Hvordan?
Avatar billede arne_v Ekspert
05. maj 2009 - 00:08 #1
Hvordan skal de informationer hentes?

Er de servere som skal startes/stoppes også Tomcat?
Avatar billede justrace Novice
05. maj 2009 - 00:10 #2
Spørg ikke hvordan. Men lade sig gøre kan det.

Arbejdede for nogle år siden som IT-adm i en større virksomhed, med 9 afd. og blev lidt irriteret på de "kloge" drenge der sad på en anden afd.. og snublede over noget VB-kode i en bog. Det morede mig gevaldigt når de skulle løbe hele vejen fra deres lune kuntor ned i kølerummet i kælderen for at starte et par servere op der "pludseligt" var lukket uventet ned helt uden fejlmelding.
Avatar billede cybermike Nybegynder
05. maj 2009 - 02:09 #3
Det er ret ligetil ... du bestemmer dig for hvordan det skal fungerer ... og så laver du det. Hvis du syntes det svære er selve implementeringen, så vil jeg vove den påstand at du ikke er klar til at lave sådan et projekt endnu.
Avatar billede lazzo Nybegynder
05. maj 2009 - 03:01 #4
#1 Altsaa informationerne faar jeg hentet, de andre servere koerer ogsaa tomcat. Det er fordi den liste jeg laver fortaeller noget om aktiviten paa serverne osv, saa er det smart hvis man "lige" kan lave en knap saa man kan restarte en server eksempelvis.


#2 - tak :D

#3 Du har muligvis ret, det var ogsaa mere om det var muligt, men det kan jeg forstaa det er. Skal nok bare bruge lidt mere tid paa at saette mig ind i det, fik vidst aabnet denne traad for hurtigt :Flovsmiley:
Avatar billede arne_v Ekspert
05. maj 2009 - 03:08 #5
Hvis du vil genstarte selve Tomcat, så tror jeg at du er nødt til at bruge:

Runtime.getRuntime().exec(new String[] { "sh", "/etc/init.d/tomcat5", "restart" });

shell og placering af Tomcat script skal tilrettes dit system.

Hvis de andre Tomcat instanser kører på en anden server skal du have gang i rsh (forudsat at det tillades af sikkerhedsmæssige årsager).

Hvis du kun vil genstarte en app, så mener jeg at det kan gøres uden brug af shell.
Avatar billede lazzo Nybegynder
05. maj 2009 - 04:51 #6
Tak #5 - hmm lidt svaert at del point ud her, for jeg tror faktisk bare jeg bliver noedt til bare at saette mig mere ind i det foer jeg faktisk forstaar jeres svar.

Saa vil i stedet aendre spoersmaalet til foelgende: Har den omtalte liste fra foer som indhenter informationer fra andre servere. Er i den problemstilling at hvis En af serverne ikke responder saa faar jeg en null-pointer, da der ikke bliver tilskrevet vaerdier. Saa det skal jeg jo har styret paa rette vej.

Overvejer at bruge traade, indtil videre har jeg en klasse til at udfoere http requests, en som saa samler en
Liste af disse requests'ere og en klasse til at vise det.

Men kunne godt bruge nogen ideer til at at loese ovenstaaende problemstilling :)

PFT og undskyld for mit nu, upraecise indlaeg!
Avatar billede arne_v Ekspert
11. maj 2009 - 04:01 #7
Det må da være muligt at fange den fejl ved ikke svarende servere.

Her er et lille eksempel som jeg engang lavede:

import java.net.*;

public class PageChecker {
    public static boolean test(String urlstr) {
        boolean retval = false;
        try {
            URL url = new URL(urlstr);
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            con.connect();
            int status = con.getResponseCode();
            if (status == HttpURLConnection.HTTP_OK) {
                retval = true;
            } else {
                retval = false;
            }
            con.disconnect();
        } catch (Exception e) {
            retval = false;
        }
        return retval;
    }
    public static void main(String[] args) {
        System.out.println(PageChecker.test("http://arne/"));
        System.out.println(PageChecker.test("http://arne/notexist"));
        System.out.println(PageChecker.test("http://noexist/"));
    }
}
Avatar billede lazzo Nybegynder
13. maj 2009 - 05:52 #8
Hey #7

Ja jeg faar ogsaa fanget fejlen, det er bare den webside som genereres paa baggrund af den liste af informationer fra de forskellige servere, den kommer til at haenge til den faar de informationer, hvilket den ikke vil faa. Hmm, kan vaere jeg maa gribe det an fra en anden maade, har vaeret vaek fra det nogen dage nu saa derfor det sene svar.
Avatar billede arne_v Ekspert
13. maj 2009 - 20:45 #9
D.v.s. at du vil have mindsket timeout tiden?
Avatar billede lazzo Nybegynder
20. maj 2009 - 02:42 #10
Hey Arne - jeg har fixet det saa timeouten er korrekt og det virker nu, der skulle ogsaa et par andre ting til men skidt pyt. smid et svar..
Avatar billede arne_v Ekspert
20. maj 2009 - 03:49 #11
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester