Maison >Java >javaDidacticiel >Comment résoudre le problème de démarrage Web Java

Comment résoudre le problème de démarrage Web Java

王林
王林avant
2023-05-16 19:07:041209parcourir

Plusieurs problèmes techniques rencontrés à l'époque étaient :

1. Transmettre les paramètres pertinents du web à l'application,

Solution : Utiliser des fichiers jnlp dynamiques (jsp pour implémenter jnlp), et utiliser la méthode de transmission de paramètres suivante

Élément application-desc

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 mainL'élément

application

indique que le fichier JNLP lance une application (par opposition à une applet). L'élément application a un attribut facultatif, main-. class, qui peut être utilisé pour spécifier le nom de la classe principale de l'application, c'est-à-dire la classe qui contient la méthode

public static void main(String argv[])

où l'exécution doit commencer.Le main- class peut être omis si le premier fichier JAR spécifié dans le fichier JNLP contient un fichier manifeste contenant la classe main.Les arguments peuvent être spécifiés à l'application en incluant un ou plusieurs imbriqués
argument elements. >arg2argument> ;
application-desc>2. Comment renvoyer les résultats du traitement de l'application au serveur Web
La solution consiste à utiliser URLConnection pour combiner l'URL Web transmise depuis. jnlp (qui est une adresse de servlet de traitement en arrière-plan), sessionID (utilisé pour identifier l'utilisateur actuel, les autorisations, etc.) pour créer un nouvel objet URL et transmettre des données entre l'application et le serveur Web via celui-ci. Dans le servlet d'arrière-plan, recherchez l'utilisateur actuel de l'écouteur de session via l'ID de session,

 private String getStringPostRequest (commande String) lève une 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 ();
// lire l'entrée du servlet
dis =

new ObjectInputStream(urlConn.getInputStream());

String ret = dis.readObject().toString();
dis.close();
return ret;
} catch (Exception e) {
throw e;
} enfin{
if ( dos!=null) dos.close();
if ( dis!=null) dis.close();
}
}

Service backend :

public void doGet (requête HttpServletRequest, réponse HttpServletResponse)
lance 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:

importer java.util.HashMap;

importer java.util.Map;

importer javax.servlet.ServletContextEvent;

importer javax . Servlet.servletContextListener;

import javax.servlet.http.*;

Public class sessionsLisions
implements service, httpsessionListener
{ static map map = new hashmap ();

Public sessionSlistener () public void contextInitialized(ServletContextEvent servletcontextevent)

{

}

public void contextDestroyed(ServletContextEvent servletcontextevent)

{

}

public void sessionCreated(HttpSessionEvent httpsessionevent)
{
HttpSession httpsession = httpsession event.getSession();

map.put( httpsession.getId(), httpsession) ;

}

public void sessionDestroyed(HttpSessionEvent httpsessionevent)

{

HttpSession httpsession = httpsessionevent.getSession();
map.remove(httpsession.getId());
}

public static HttpSession getSessionById(String s)
{
return (HttpSession)map.get(s);
}

}


Problème de signature numérique du package 3.jar

4.problème de cache de démarrage Web Java : mise en cache du fichier JNLP

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


(1)

Si vous supprimez le paramètre href= de la balise jnlp, Java Web Start 1.4.2 ne mettra pas en cache le fichier jnlp.

1.5.0 le fera toujours, mais si vous supprimez également le

(2)

Il semble que le problème provienne des fichiers JNLP générés.

Essayez ce qui suit :

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

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

Semble avoir résolu le problème pour nous
.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer