ホームページ > Java > &#&チュートリアル > Java Webstartの問題を解決する方法

Java Webstartの問題を解決する方法

王林
リリース: 2023-05-16 19:07:04
転載
1221 人が閲覧しました

当時発生したいくつかの技術的問題は次のとおりです:

1. 関連するパラメータを Web からアプリケーションに渡します。

解決策: 動的 jnlp ファイル (jnlp を実装するための jsp) を使用します。同時に、次のパラメータ渡しメソッドが使用されます。

application-desc 要素

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>

## 2. 方法アプリケーションの結果を処理します Web サーバーに返します

解決策は、jnlp (バックグラウンド処理用のサーブレット アドレス) と sessionID (現在のユーザーを識別するために使用される) から渡された Web URL を組み合わせた URLConnection を使用することです。権限など) を使用して、アプリケーションと Web サーバーの間でデータが受け渡される新しい URL オブジェクトを作成します。バックグラウンド サーブレットで、セッション ID を通じてセッション リスナーから現在のユーザーを検索します。

private String getStringPostRequest(String command) throws Exception {

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 = new DataOutputStream(urlConn.getOutputStream());

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();
}
}

バックグラウンド 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 SessionsListener

implements ServletContextListener、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 = httpsessionevent.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);
}

}

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 では引き続きキャッシュされます。ただし、

(2)

問題は生成された JNLP ファイルにあるようです。


次の応答を試してください。 addDateHeader("日付", Calendar.getInstance().getTime().getTime());
response.addDateHeader("最終更新日", Calendar.getInstance().getTime().getTime()) ;

問題は解決されたようです。

以上がJava Webstartの問題を解決する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート