22. september 2004 - 08:24Der er
8 kommentarer og 1 løsning
kan man kalde et kørende javaprogram fra et andet javaprogram ?
Jeg har lavet et javaprogram, hvor jeg har brug for at kunne lukke pænt ned - når programmet bliver bedt om det.
Det er et quartz -job der kører hver 5. minut, men når maskinen skal ipl'es (jeg ved ikke hvad det er, men det har jeg fået besked om) skal programmet afslutte det den er i gang med og derefter stoppes... Er det muligt ?
Alternativt havde jeg tænkt at jeg bare skal stoppe programmet og dernæst kalde et andet program der rydder op, men jeg syntes ikke det er så pænt at gøre det på den måde. Nogle ideer ??
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Mit forslag lave en "management klasse" som kører i en seperat tråd og lytter på en Socket. Så laver du et lille "kontrol program" som connecter til den port og sender en shutdown kommando. Kode i management klassen får så lukket pænt ned.
Fordelen ved metoden er at man nemt kan udvide antallet af kommandoer fra shutdown til også at inkludere f.eks. hent status information og check om kører.
Jeg har en løsning jeg gerne vil have kommentarer/ kritik på. Den er som følger: Jeg har min Application som jeg gerne vil kunne slukke jeg har min Shutdown som skal slukke Application.
Shutdown startes, og den skriver i en fil at shutdown kommandoen skal udføres derefter stiller den sig til at lytte på en anden fil (evt via Quartz)hvor den får besked når shutdown er udført. Når den får svar kan den afslutte sig selv og den der startede programmet kan komme videre.
Application har en manager der lytter på en fil (igen via Quartz) og når der skrives kommandoer i denne fil, klasse + metode , invoker den metoden (virker p.t. kun på metoder uden parametre), nulstiller filen, og når den har udført kommandoen skrives i en anden fil at nu er jobbet udført
ServerSocket ss = new ServerSocket(PORT); while(true) { Socket s = ss.accept(); InputStream is = s.getInputStream(); OutputStream os = s.getOutputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); PrintWriter pw = new PrintWriter(os); ... }
Vi har fundet en anden løsning. Det program der skal stoppe mig er et RGP program på en AS400. Det kan skrive til en Dataqueue, som jeg via as400toolbox kan lytte på, og så udføre den kommando jeg får her. I princippet det samme som at lytte til alle mulige andre steder. Tak for de gode input. Jeg har som Arne skrev en managerklasse i en seperat tråd, så han må have nogle points. Så Arne send et svar...
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.