Rumah >Java >javaTutorial >Bagaimana untuk menyelesaikan masalah java webstart
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
ElemenElemen 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 mengandungimain
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 sessionCreated(HttpSessionEvent httpsessionevent)
{
HttpSession httpsession = httpsessionevent.getSession();
}
sesi kekosongan awamDestroyed(HttpSessionEvent httpsessionevent)
{
HttpSession httpsession = httpsessionevent.getSession();
HttpSession statik awam getSessionById(String s)
{
return (HttpSession)map.get(s);
Jika anda mengalih keluar parameter href= daripada teg jnlp, Java Web Start 1.4.2 tidak akan cache fail jnlp.
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());
Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan masalah java webstart. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!