# JNLP File -> Web Application



## BVBCameron (27. Jan 2010)

Hallo zusammen,

vorweg: ich habe keine Ahnung von Java-Anwendungen, die auf Websites laufen, da noch nie gemacht / begraucht! Allerdings muss ich es jetzt realisieren ...

Ich möchte gern eine Java-Application geschrieben als *.jlpn-File in eine Website integrieren. Der Nutzer darf nur online über die Website auf die Application zugreifen, nachdem er sich eingeloggt hat.

Wie kann ich das am einfachsten hinbiegen?

Danke schon einmal im Voraus!
BVBCameron


----------



## tuxedo (27. Jan 2010)

-> Es gibt keine "Java-Application geschrieben als *.jlpn-File"
-> Webstart-Anwendungen laufen nicht auf einer Webseite. Sie werden von Java runtergeladen und lokal gestartet
-> Gestartet wird eine Webanwendung intiell via Link zu einer URL die die JNLP-File referenziert. Wenn du den Zugriff (auf diesen Link) einschränken willst, musst/kannst du das außerhalb von Java/Webstart machen. PHP und HTML sind hier am geeignetsten.

- Alex


----------



## BVBCameron (27. Jan 2010)

Hallo tuxedo,

danke für die schnelle Antwort! 
Wenn ich das richtig verstanden habe, dann liegt das *.jnlp-File lokal auf dem Server und wird von der Website, auf der die Application laufen soll, einfach verlinkt. Ist das wirklich so einfach?! Ich muss nichts im Quellcode ändern oder so?

BVBCameron


----------



## tuxedo (27. Jan 2010)

So ist es. Der Browser erkennt die Endung (.jnlp) und triggert die lokale JRE beim Client. Von da an läuft Java Webstart beim Client los und zieht sich alles notwendige.

In der JNLP kannst du einstellen ob ein Link auf dem Desktop und im Startmenü angelegt werden soll. Und man kann einstellen ob die Anwendung auch offline (also ohne Webzugriff) laufen darf. In deinem Fall würde das wegfallen. So ist der einzge Zugang der Zugang via JNLP Link. 

Einfach die JNLP auf den Webserver legen (wo man als normaler user nicht rankommt), und dann, nach authentifizierung über die Webseite, mit PHP oder so einen temporären Link auf die intern liegende JNLP anbieten. Fertig. Du musst nur drauf achten dass der Link nur für die Dauer der Session auf der Webseite gültig ist.


----------



## Firestorm87 (27. Jan 2010)

Man kann die jnlp auch direkt in eine PHP einbetten un diese dann durch geeignete Abfragen schützen, dann erspart man sich das erstellen von temporären Links (außer solch ein Instrument ist eh schon im Einsatz, dann ist das natürlich schnell erledigt).


----------



## tuxedo (27. Jan 2010)

Und wieder was dazu gelernt


----------



## BVBCameron (27. Jan 2010)

Hallo Firestorm87,

der ganze Ablauf soll kurz gesagt so aussehen:

-> Man ruft meine Website auf
-> Klickt dort auf einen Link "Meine Application"
-> Loggt sich mit Benutzernamen und Passwort ein
-> Dann soll das Programm innerhalb der Website laufen
-> Wenn man fertig ist, loggt man sich aus und die Application ist nicht mehr verfügbar

Auf keinen Fall soll man die Datei irgendwie lokal gespeichert haben, da ich wissen möchte, wer was mit dem Programm anstellt. Wie ich das ganze realisiere ist mir im Prinzip egal, es sollte so einfach wie möglich sein.

BVBCameron


----------



## Firestorm87 (27. Jan 2010)

Also an dem lokalen Speichern der Jar-Files kannst du meines Wissens nicht drehen, die werden stets lokal zwischengespeichert. Allerdings sollte man damit ohne weiteres nichts anfangen können, wenn der Flag "offline-allowed" nicht gesetzt ist.
Ausprobiert habe Ich das allerdings noch nicht!!!

Du kannst eben nur den Zugriff auf das jnlp-File verhindern, in dem du den Zugriff einschränkst

```
<?php
if (berechtigt){
   header('Content-type: application/x-java-jnlp-file');
?>
<?xml version="1.0" encoding="UTF-8"?>
<jnlp spec="1.0+" codebase="http://www.bla.de/app">
[...]
</jnlp>
<?php
}else{
   //Hier dann eben den anderen Fall :)
}
?>
```
/EDIT: Im Zweifelsfall in dem Java-Programm eine eigene LogIn-Abfrage implementieren.....


----------



## tuxedo (27. Jan 2010)

> -> Dann soll das Programm innerhalb der Website laufen



Dann ist Webstart nix für dich. Wie bereits erwähnt läuft eine Webstart-Anwendung als "Desktopanwendung" beim Client und nicht im Browser und schon gar nicht auf der Webseite.

JSP/JSF oder Java Applet sind die Suchbegriffe die du eher brauchen könntest.

- Alex


----------



## Firestorm87 (27. Jan 2010)

Mit dem Java-Applet ändert sich aber nichts an dem Berechtigungsproblem, sondern eben nur wo/wie das Programm dargestellt wird.

Denn man korrigiere mich, wenn Ich da falsch liege, aber ein Applet wird genau so lokal ausgeführt wie eine Application.... es ist eben nur "grafisch" in die Webseite verlagert...

Daher müsste man das "Programm" dann genau so kopieren können wie sonst auch (etwas HG-Wissen vorrausgesetzt)


----------



## tuxedo (27. Jan 2010)

Nix anderes hab ich behauptet. In seinen Anforderungen steht ja:



> -> Dann soll das Programm innerhalb der Website laufen



Und das ist mit einem Applet (je nach granularität der Definition "innerhalb der Webseite) erfüllt. 

Wenn gar kein Code auf dem Client-Rechner ausgeführt werden soll, dann fällt ein Applet natürlich flach. Aber dann ist auch Javascript und Co. "grenzwertig" 

- Alex


----------

