Rumah  >  Artikel  >  Java  >  Bagaimana untuk menyelesaikan masalah java webstart

Bagaimana untuk menyelesaikan masalah java webstart

王林
王林ke hadapan
2023-05-16 19:07:041184semak imbas

Beberapa masalah teknikal yang dihadapi pada masa itu ialah:

1 Hantar parameter yang berkaitan dari web ke aplikasi,

Penyelesaian: Gunakan fail jnlp dinamik (jsp untuk melaksanakan jnlp), dan. pada masa yang sama Kaedah lulus parameter berikut digunakan

application-desc Elemen

Elemen aplikasi menunjukkan bahawa fail JNLP sedang melancarkan aplikasi (sebagaimana bertentangan dengan applet) . Elemen aplikasi mempunyai atribut pilihan, kelas utama, yang boleh digunakan untuk menentukan nama kelas utama aplikasi, iaitu kelas yang mengandungi statik awam void main(String argv []) kaedah di mana pelaksanaan mesti bermula.

Atribut main-class boleh diabaikan jika fail JAR pertama yang dinyatakan dalam fail JNLP mengandungi fail manifes yang mengandungi main class.

Argumen boleh ditentukan pada aplikasi dengan memasukkan satu atau lebih elemen argument bersarang Contohnya:

<application-desc. kelas utama="Utama">
<hujah>arg1argument>
<hujah>arg2argument> ;
application-desc>

2. Cara menghantar semula hasil pemprosesan aplikasi ke pelayan web

Penyelesaian, gunakan URLConnection Gabungkan url web (iaitu alamat servlet yang diproses latar belakang) dan sessionID (digunakan untuk mengenal pasti pengguna semasa, kebenaran, dsb.) yang diluluskan daripada jnlp untuk mencipta objek url baharu, dan hantarkannya antara aplikasi dan data pelayan web. Dalam servlet latar belakang, cari pengguna semasa daripada pendengar sesi melalui sessionid,

private String getStringPostRequest(String command) melontar Exception {
DataOutputStream dos=null;
ObjectInputStream dis=null;
cuba {
URLConnection urlConn = URL baharu(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();
// baca input daripada servlet
dis =
new ObjectInputStream(urlConn.getInputStream());
String ret = dis.readObject().toString();
dis.close();
return ret;
} tangkap (Pengecualian e) {
buang e;
} akhirnya{
jika ( dos!=null) dos.close();
if ( dis!=null) dis.close();
}
}

Sevlet latar belakang:

public void doGet(permintaan HttpServletRequest, HttpServletResponse response)
melempar IOException, ServletException{
{
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.ListenervletContext
import javax.servlet.http.*;

kelas awam SessionsListener
melaksanakan ServletContextListener, HttpSessionListener
{

peta Peta statik = baharu HashMap( );

public SessionsListener()

{
}

public void contextInitialized(ServletContextEvent servletcontextevent)

{
}

public void context Initialized(ServletContextEvent servletcontextevent)

{
}

public void contexter 🎜>{

}

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

map.put(httpsession.ession. );

}

sesi kekosongan awamDestroyed(HttpSessionEvent httpsessionevent)
{
HttpSession httpsession = httpsessionevent.getSession();

map.remove(httpsession ());<.getid>}


HttpSession statik awam getSessionById(String s)
{
return (HttpSession)map.get(s);

}

}

Masalah tandatangan digital pakej 3.jar

4.masalah cache webstart java: cache fail JNLP

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

(1)


Jika anda mengalih keluar parameter href= daripada teg jnlp, Java Web Start 1.4.2 tidak akan cache fail jnlp.

1.5.0 masih akan , tetapi jika anda turut mengalih keluar

(2)


Nampaknya masalahnya adalah dengan fail JNLP yang dijana.

Cuba yang berikut:

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

Nampaknya telah menyelesaikan masalah untuk kami.

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah java webstart. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam