Avatar billede margitbork Nybegynder
22. september 2004 - 08:24 Der 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 ??
Avatar billede fsconsult.dk Nybegynder
22. september 2004 - 08:28 #1
du kunne lade dit javaprogram lytte på en port, hvor den kan modtage "ordrer" fra andre programmer.
Avatar billede arne_v Ekspert
22. september 2004 - 08:28 #2
Det er ikke helt nemt at lave pænt.

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.
Avatar billede arne_v Ekspert
22. september 2004 - 08:29 #3
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.
Avatar billede margitbork Nybegynder
22. september 2004 - 08:37 #4
Vi er nu ude i noget jeg ikke har været omkring før, hvordan lytter og skriver man til en Socket ?.
Avatar billede margitbork Nybegynder
22. september 2004 - 11:44 #5
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

Kommentarer modtages gerne
Avatar billede arne_v Ekspert
22. september 2004 - 16:58 #6
Umiddelbart synes jeg at det lyder besværligt/dyrt at lytte på en file
(hvilket jeg læser som : monitorer konstant for ændringer).
Avatar billede arne_v Ekspert
22. september 2004 - 17:01 #7
Det er ikke svært at lytt epå en socket.

Kode snippet:

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);
  ...
}
Avatar billede margitbork Nybegynder
23. september 2004 - 09:03 #8
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...
Avatar billede arne_v Ekspert
23. september 2004 - 09:07 #9
ok
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