/ Forside / Teknologi / Udvikling / Java / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java
#NavnPoint
molokyle 3688
Klaudi 855
strarup 740
Forvirret 660
gøgeungen 500
Teil 373
Stouenberg 360
vnc 360
pmbruun 341
10  mccracken 320
Java applikation som Windows NT service
Fra : Kim Petersen


Dato : 13-11-01 14:30

Jeg søger information om hvordan man får en Java applikation til at
fortsætte med at køre, selv når der logges ud på serveren. Any ideas?

Mvh. Kim Petersen



 
 
Dennis Thrysøe (13-11-2001)
Kommentar
Fra : Dennis Thrysøe


Dato : 13-11-01 14:42

Prøv

http://www.google.com/search?hl=en&q=java+windows+nt+service+-pack&btnG=Google+Search

eller

http://groups.google.com/groups?q=java+windows+nt+service+-pack&hl=en&btnG=Google+Search


Desuden kunne jeg forstille mig, at der var nogen på jakarta.apache.org
der har en holdning til det.

Jeg har ikke selv leget med det.

-dennis


Kim Petersen wrote:

> Jeg søger information om hvordan man får en Java applikation til at
> fortsætte med at køre, selv når der logges ud på serveren. Any ideas?
>
> Mvh. Kim Petersen
>
>
>


Christian Damsgaard (13-11-2001)
Kommentar
Fra : Christian Damsgaard


Dato : 13-11-01 15:33

Hejsa,

Jeg har (tilbage i 1999) lavet en Windows NT/2000 service som kan afvikle et
eller flere Java programmer. Hvis du starter fra grunden er det et relativt
stort arbejde at skrive, alt efter dine kunskaber mht. Java (JNI) og C++.

Du skal først igennem øvelsen at forstå hvordan Windows NT services
fungere - der findes glimrende bøger om emnet.
Dernæst skal du kikke på Java Native Interface (JNI). Med JNI kan du kalde
fra et Java program ud i DLL (under Windows - i UNIX ville det være et
shared library/object) og fra C++ oprette en Java VM via Sun's JVM.DLL og
JNI api'et og der igennem load en java klasse og fx. kalde en statisk metode
på denne der så søger for resten.

Når du så har fået de to ovenstående ting på plads, skal du så til at flette
dem sammen. Dette er lidt svært i og med at når din service modtager en
"stop" kommando, skal den jo lukke VM'en - men hvordan gør den det! - Jeg
lavede en løsning hvor jeg havde to statiske metoder på en given klasse -
start/stop - som blev kaldt fra C++ programmet. Ud over dette kan du nok
ikke undgår at komme til at rode med tråde/semapforer både i Java og C++.

Så - hvad kan jeg sige - På med arbejdshanskerne.

Jeg kan desvære ikke give dig koden da denne ejes af den kunde som mit firma
(TietoEnator Consulting A/S) leverede en løsning (Erhvervs- og
Selskabsstyrelsen - http://www.webreg.dk).

Så vidt jeg husker brugte jeg følgende bog som udgangspunkt:
http://www.amazon.co.uk/exec/obidos/ASIN/0136798950/qid=1005661678/sr=1-3/re
f=sr_sp_re/202-3958220-3283065

Den har vist også et kapitel om JVM oprettelse fra et C++ program, men jeg
syntes ikke hans design er særlig godt.

Sidste mulighed. EOS (http://www.eos.dk) har tidligere barslet med en
generel komponent der kan det her - spørg efter Jens Møller.

De bedste hilsner
Christian Damsgaard

"Dennis Thrysøe" <qabi@qabi.dk> wrote in message
news:3BF12344.5090308@qabi.dk...
> Prøv
>
>
http://www.google.com/search?hl=en&q=java+windows+nt+service+-pack&btnG=Goog
le+Search
>
> eller
>
>
http://groups.google.com/groups?q=java+windows+nt+service+-pack&hl=en&btnG=G
oogle+Search
>
>
> Desuden kunne jeg forstille mig, at der var nogen på jakarta.apache.org
> der har en holdning til det.
>
> Jeg har ikke selv leget med det.
>
> -dennis
>
>
> Kim Petersen wrote:
>
> > Jeg søger information om hvordan man får en Java applikation til at
> > fortsætte med at køre, selv når der logges ud på serveren. Any ideas?
> >
> > Mvh. Kim Petersen
> >
> >
> >
>



Ukendt (13-11-2001)
Kommentar
Fra : Ukendt


Dato : 13-11-01 21:17

Windows Resource Kit har værktøj til at installere et
vilkårligt program som en service, kaldet anysrv.exe og
tilhørende program instsrv.exe til at oprette servicen.

Største ulempe er dog, at når man standser servicen,
så "crasher" JVM'en, samt at hvis JVM'en "crasher" af
anden årsag (f.ex. StackOverflow , ja så triller servicen
fornøjeligt videre inde i service manageren.

Husk at du skal anvende JVM'en fra JDK 1.3.1 for at den
skal "overleve" at du logger ud fra maskinen. De ædre JDK'er
reagerede på de kontrol-events, der sker ved logoff.

Mvh Michael




Christian Damsgaard (14-11-2001)
Kommentar
Fra : Christian Damsgaard


Dato : 14-11-01 08:20

"Michael Bothager" <-> wrote in message
news:3bf17de4$0$745$edfadb0f@dspool01.news.tele.dk...
> Windows Resource Kit har værktøj til at installere et
> vilkårligt program som en service, kaldet anysrv.exe og
> tilhørende program instsrv.exe til at oprette servicen.
>
> Største ulempe er dog, at når man standser servicen,
> så "crasher" JVM'en, samt at hvis JVM'en "crasher" af
> anden årsag (f.ex. StackOverflow , ja så triller servicen
> fornøjeligt videre inde i service manageren.
>
> Husk at du skal anvende JVM'en fra JDK 1.3.1 for at den
> skal "overleve" at du logger ud fra maskinen. De ædre JDK'er
> reagerede på de kontrol-events, der sker ved logoff.

Dette var faktisk først et problem fra og med version JDK 1.3.0. Version
1.2.x har ikke det problem. Problemet er at VM'en "lytter" på system event
og fanger derfor logoff eventen. Dette problem lå længe øverst (flest votes)
på SUN's bugliste og er blevet løst fra og med version 1.3.1. Desvære skal
du, så vidt jeg husker, give VM'en specielt -Xrs parameter (reduce use of OS
signals by Java/VM (see documentation)) for at den ikke stadig terminere ved
logoff eventen. See evt følgende side i dokumentation:
http://java.sun.com/j2se/1.3/docs/tooldocs/win32/java.html

-Xrs
Reduces usage of operating-system signals by the Java virtual machine (JVM).
This option is available beginning with J2SE 1.3.1.
In J2SE 1.3.0, the Shutdown Hooks facility was added to allow orderly
shutdown of a Java application. The intent was to allow user cleanup code
(such as closing database connections) to run at shutdown, even if the JVM
terminates abruptly.

The JVM watches for console control events to implement shutdown hooks for
abnormal JVM termination. Specifically, the JVM registers a console control
handler which begins shutdown-hook processing and returns TRUE for
CTRL_C_EVENT, CTRL_CLOSE_EVENT, CTRL_LOGOFF_EVENT, and CTRL_SHUTDOWN_EVENT.

The JVM uses a similar mechanism to implement the pre-1.2 feature of dumping
thread stacks for debugging purposes. Sun's JVM uses CTRL_BREAK_EVENT to
perform thread dumps.

If the JVM is run as a service (for example, the servlet engine for a web
server), it can receive CTRL_LOGOFF_EVENT but should not initiate shutdown
since the operating system will not actually terminate the process. To avoid
possible interference such as this, the -Xrs command-line option has been
added beginning with J2SE 1.3.1. When the -Xrs option is used on Sun's JVM,
the JVM does not install a console control handler, implying that it does
not watch for or process CTRL_C_EVENT, CTRL_CLOSE_EVENT, CTRL_LOGOFF_EVENT,
or CTRL_SHUTDOWN_EVENT.

There are two consequences of specifying -Xrs:

a.. Ctrl-Break thread dumps are not available.
b.. User code is responsible for causing shutdown hooks to run, for
example by calling System.exit() when the JVM is to be terminated.

/Christian Damsgaard

> Mvh Michael
>
>
>



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste