Heim  >  Artikel  >  Java  >  So lösen Sie das Java-Webstart-Problem

So lösen Sie das Java-Webstart-Problem

王林
王林nach vorne
2023-05-16 19:07:041163Durchsuche

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen