Heim > Java > javaLernprogramm > Hauptteil

So lösen Sie das Java-Webstart-Problem

王林
Freigeben: 2023-05-16 19:07:04
nach vorne
1189 Leute haben es durchsucht

Mehrere technische Probleme, die damals aufgetreten sind, waren:

1. Übergeben Sie relevante Parameter aus dem Web an die Anwendung,

Lösung: Verwenden Sie dynamische JNLP-Dateien (JSP, um JNLP zu implementieren) und verwenden Sie die folgende Parameterübergabemethode

application-desc-Element

application-desc Element

The application element indicates that the JNLP file is launching an application (as opposed to an applet). The application element has an optional attribute, main-class, which can be used to specify the name of the application's main class, i.e., the class that contains the public static void main(String argv[]) method where execution must begin.

The main-class attribute can be omitted if the first JAR file specified in the JNLP file contains a manifest file containing the mainDas

application

-Element zeigt an, dass die JNLP-Datei eine Anwendung startet (im Gegensatz zu einem Applet). Das Anwendungselement hat ein optionales Attribut, main-. class, mit der der Name der Hauptklasse der Anwendung angegeben werden kann, d. h. der Klasse, die die Methode

public static void main(String argv[])

enthält, in der die Ausführung beginnen muss.Der Das class-Attribut kann weggelassen werden, wenn die erste in der JNLP-Datei angegebene JAR-Datei eine Manifestdatei enthält, die die main-Klasse enthält.Argumente können der Anwendung durch Einschließen eines oder mehrerer verschachtelter Argumente angegeben werden
argument elements. >arg2argument> ;
application-desc>2. So senden Sie die Ergebnisse der Anwendungsverarbeitung zurück an den Webserver
Die Lösung besteht darin, URLConnection zu verwenden, um die übergebene Web-URL zu kombinieren jnlp (eine Servlet-Adresse für die Hintergrundverarbeitung), Sitzungs-ID (zur Identifizierung des aktuellen Benutzers, Berechtigungen usw.), um ein neues URL-Objekt zu erstellen und Daten zwischen der Anwendung und dem Webserver darüber zu übertragen. Suchen Sie im Hintergrund-Servlet den aktuellen Benutzer aus dem Sitzungs-Listener über die Sitzungs-ID,

 private String getStringPostRequest(String command) throws Exception {
DataOutputStream dos=null;

ObjectInputStream dis=null;

try {

URLConnection urlConn = new URL ( webServerStr).openConnection();

urlConn.setDoOutput(true);

urlConn.setDoInput(true);
urlConn.setAllowUserInteraction(false);
urlConn.setUseCaches(false);
urlConn.setRequestProperty(
"Content-Type " ,
"application/x-www-form-urlencoded");

dos = new DataOutputStream(urlConn.getOutputStream());
dos.writeBytes(command + "&sessionId=" + this.sessionId);
dos. close ();
// Eingabe vom Servlet lesen
dis =

new ObjectInputStream(urlConn.getInputStream());

String ret = dis.readObject().toString();
dis.close();
return ret;
} Catch (Exception e) {
throw e;
} schließlich{
if ( dos!=null) dos.close();
if ( dis!=null) dis.close();
}
}

Hintergrund-Sevlet:

public void doGet(HttpServletRequest request, HttpServletResponse Response)
throws IOException, ServletException
{

HttpSession hSession = request.getSession();

System.out.println("Application:" + hSession.getId()) ;

if(MyListener.getSessionById(request.getParameter("sessionId")) != null)

hSession = MyListener.getSessionById(request.getParameter("sessionId"));
System.out.println("OK" + hSession ) ;

............}

sessionlistener:

import java.util.HashMap;

import java.util.Map;

import javax.servlet.ServletContextEvent;

import javax . Servlet.servletContextListener;

import javax.servlet.http.*;

Public class sessionLisions
{ static map map = new hashmap ();
}

Public void contextdestroyed (ServletContexTevent servletConteEvent)

{

}

Public void created (httpSessionEvent httpSessionEvent)

{

httpSession httpSession = httpSession.getSession.getSession (); ;

}


public void sessionDestroyed(HttpSessionEvent httpsessionevent)
{

HttpSession httpsession = httpsessionevent.getSession();

map.remove(httpsession.getId());
}

public static HttpSession getSessionById(String s)

{
return (HttpSession)map.get(s);
}

}

Problem mit der digitalen Signatur des 3.jar-Pakets

4.java-Webstart-Cache-Problem: JNLP-Datei-Caching

http://forum.java.sun. com/thread.jspa?forumID=38&threadID=556847

(1)

Wenn Sie den Parameter href= aus dem JNLP-Tag entfernen, speichert Java Web Start 1.4.2 die JNLP-Datei nicht zwischen. Wenn Sie aber auch

(2)

entfernen, scheint das Problem bei den generierten JNLP-Dateien zu liegen.

Versuchen Sie Folgendes:

response.addDateHeader("Date", Calendar. getInstance().getTime().getTime ());

response.addDateHeader("Last-Modified", Calendar.getInstance().getTime().getTime());

Scheint das Problem für uns gelöst zu haben

Das obige ist der detaillierte Inhalt vonSo lösen Sie das Java-Webstart-Problem. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage