# JavaWebStart / Application erkennung



## dominik_ (9. Jun 2005)

Hallo,

ich entwickle ein Programm, welches man als Application und als JavaWebStart verwenden können soll. Ich suche nach einer Möglichkeit nach dem starten festzustellen ob das Programm als JavaWebStart oder als Application gestartet wurde.

Vielen Dank, dominik


----------



## L-ectron-X (9. Jun 2005)

Ich weiß nicht, in wie fern du dich schon mit der Materie beschäftigt hast.
Kurz gesagt sieht es so aus:
Du lädst eine ausführbare jar-Datei auf einen Webserver und bietest das Programm über einen Link auf eine xml-Datei mit Endung .jnlp zum Download/Start an. Das Programm wird gedownloadet und gestartet, außerdem wird in der Systemsteuerung unter Software ein Deinstallationsprogramm eingehängt.
Wenn du das Programm bei nächsten Mal startest, wird geguckt, ob eine Verbindung zum Server hergestellt werden kann und eine eventuell neue Version heruntergeladen und gestartet.
Wie sich Webstart verhalten soll, wird in der jnlp-Datei festgelegt.
Wenn die .jar-Datei nicht signiert wurde bleiben Zugriffe auf das Dateisystem o.ä. verwehrt, das Programm verhält sich damit ähnlich wie ein unsigniertes Applet.


----------



## dominik_ (9. Jun 2005)

L-ectron-X hat gesagt.:
			
		

> Ich weiß nicht, in wie fern du dich schon mit der Materie beschäftigt hast.



Hallo, ich habe mich eigentlich schon sehr eingehend mit der Materie beschäftigt. Ich habe ein Programm welches ich sowohl als Application wie auch als JavaWebStart verwenden will. Beide Versionen werden in ein und derselben JAR Datei ausgeliefert. Man kann die anwendung dann entweder per:

java -jar fis.jar

oder eben über einen Click auf das JNLP-File starten. 

Ich möchte innerhalb der Anwendung herausfinden WIE die Anwendung gestartet wurde. Ich brauche also sowas wie

System.isJavaWebStart()

Ciao, dominik


----------



## dominik (10. Jun 2005)

Vielleicht ist meine Fragestrellung unklar...
Momentan mach ich folgendes:


```
static public boolean isJWS(){
	try {
		ServiceManager.lookup("javax.jnlp.FileOpenService");
		return true;
	} catch (UnavailableServiceException e) {
		return false;
	}
}
```

Ich denke nur es müsste doch eine _schönere_ Alternative geben...


----------



## AlArenal (10. Jun 2005)

dominik_ hat gesagt.:
			
		

> Hallo,
> 
> ich entwickle ein Programm, welches man als Application und als JavaWebStart verwenden können soll. Ich suche nach einer Möglichkeit nach dem starten festzustellen ob das Programm als JavaWebStart oder als Application gestartet wurde.
> 
> Vielen Dank, dominik



1. Wozu brauchst du die Unterscheidung?
2. Wie startest du "Application" (auch über JWS läuft das Ding als "Application"). 
3. Setz doch einfach nen Parameter in dei JNLP-Datei und frag im Programm ab, ob der gesetzt ist oder nicht.


----------



## dominik (10. Jun 2005)

AlArenal hat gesagt.:
			
		

> 1. Wozu brauchst du die Unterscheidung?
> 2. Wie startest du "Application" (auch über JWS läuft das Ding als "Application").
> 3. Setz doch einfach nen Parameter in dei JNLP-Datei und frag im Programm ab, ob der gesetzt ist oder nicht.



zu 1.) Ich will mein JAR nicht signieren müssen trotzdem bei bedarf zB eine Datei von Platte lesen. Als Application geht das prima mit dem JFileChooser, bei JavaWebStart geht das prima mit FileOpenService.
--> Es braucht aber unterschiedlichen Code!

zu 2.) Als JWS darf ich nicht per JFileChooser auf Platte zugreifen.

zu 3.) DAS IST DIE LÖSUNG!!!

Vielen Dank 

PS: Hast du evtl ein CodeSchipsel wie man das in der jnlp Datei macht und danach ausliest?


----------



## AlArenal (10. Jun 2005)

Sicher das..

In der JNLP-Datei:


```
<resources>
    ...
    <property name = "isJWS" value = "true" />
    ...
  </resources>
```

In der Anwendung:


```
...
    String isJWS = System.getProperty("isJWS");
    ...
```


----------

