当時発生したいくつかの技術的問題は次のとおりです:
1. 関連するパラメータを Web からアプリケーションに渡します。
解決策: 動的 jnlp ファイル (jnlp を実装するための jsp) を使用します。同時に、次のパラメータ渡しメソッドが使用されます。
application-desc
要素## 2. 方法アプリケーションの結果を処理します Web サーバーに返します解決策は、jnlp (バックグラウンド処理用のサーブレット アドレス) と sessionID (現在のユーザーを識別するために使用される) から渡された Web URL を組み合わせた URLConnection を使用することです。権限など) を使用して、アプリケーションと Web サーバーの間でデータが受け渡される新しい URL オブジェクトを作成します。バックグラウンド サーブレットで、セッション ID を通じてセッション リスナーから現在のユーザーを検索します。 private String getStringPostRequest(String command) throws Exception {application要素は、JNLP ファイルが(アプレットではなく) アプリケーションを起動しています。application 要素にはオプションの属性 main-class があり、これを使用してアプリケーションのメイン クラス (つまり、次のクラスが含まれるクラス) の名前を指定できます。 public static void main(String argv[]) メソッドの実行を開始する必要があります。
最初の JAR ファイルが指定されている場合、
main-class
属性は省略できます。 JNLP ファイルには、main
クラスを含むマニフェスト ファイルが含まれています。引数は、1 つ以上のネストされた argument 要素を含めることによってアプリケーションに指定できます。例:
<application-desc main-class="Main">
<argument>arg1argument>
<argument>arg2argument>
application-desc>
DataOutputStream dos=null;
ObjectInputStream dis=null;
try {
URLConnection urlConn = 新しい 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.writeBytes(command "&sessionId=" this.sessionId);
dos.close();
// サーブレットから入力を読み取ります
dis =
new ObjectInputStream(urlConn.getInputStream());
String ret = dis.readObject().toString();
dis.close();
return ret;
} catch (例外 e) {
throw e;
}finally{
if ( dos!=null) dos.close();
if ( dis!=null) dis.close();
}
}
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);
import java.util.Map;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener ;
import javax.servlet.http.*;
implements ServletContextListener、HttpSessionListener
{
public SessionsListener()
{
}
{
}
{
}
{
HttpSession httpsession = httpsessionevent.getSession();
map.put(httpsession.getId(), httpsession );
}
{
HttpSession httpsession = httpsessionevent.getSession();
map.remove(httpsession.getId());
}
{
return (HttpSession)map.get(s);
}
3.jar パッケージのデジタル署名の問題4.java Webstart キャッシュの問題: JNLP ファイルのキャッシュhttp://forum.java.sun.com/thread.jspa?forumID =38&threadID =556847(1)jnlp タグから href= パラメータを削除すると、Java Web Start 1.4.2 は jnlp ファイルをキャッシュしません。
1.5.0 では引き続きキャッシュされます。ただし、
次の応答を試してください。 addDateHeader("日付", Calendar.getInstance().getTime().getTime());
response.addDateHeader("最終更新日", Calendar.getInstance().getTime().getTime()) ;
問題は解決されたようです。
以上がJava Webstartの問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。