1

jar/jnlp を動的に配布しようとすると、いくつかの問題が発生しました。私のすべてのファイルは、ファイル xxx に対してhttp://www.mywebsite.com/ServeFile?name=xxxを使用して動的に提供されます。ファイルを正しくダウンロードできます。

jnlp へのリンクをブラウザに入れてダウンロードすると、jar ファイルが見つからないことを示す javaws からのエラーが表示されます。GAE ログ ファイルは、javaws がロードを試みた/ServeFile.pack.gz?name=test__V1.0.jarため、ServeFile サーブレットによって提供されず、代わりに / (別のサーブレット) によって提供されたことを示しています。

これが私のjnlpファイルの部分的な内容です:

<resources>
    <j2se version="1.6+"/>
    <jar href="ServeFile?name=test.jar" main="true" version="1.0"/>
    <property name="jnlp.packEnabled" value="true"/>
    <property name="jnlp.versionEnabled" value="true"/>
</resources>

私の質問は、リクエストに AcceptEncoding を入れるだけでなく、javaws が .pack.gz を URL の真ん中に入れる方法です。jnlpとjarを動的に提供する正しい方法は何ですか?

アップデート

?file=file.jarを使用せずにhttp://website.com/path/file.jarなどの「静的」タイプのリンクを使用すると、問題が解決しました。まだ問題があります:

新しい問題

JavaWS は時々?version-id=1.0を置き、動的 URL も?folder=root&user= guest のような同様のパターンを使用しています。したがって、 version-id は1.0?folder=rootになります。

&folder=root&user=guestを入力すると機能しますが、 javawsがmyjar __ V1.0.jar& folder=rootを要求することがあるため、ファイル名にmyjar _ V1.0& folder=rootが含まれるようになりましたが、これは間違っています。一貫性がありません。

Temporarily, I can just parse this version-id to see whether it contains a question mark. I hope there is a better solution.

4

2 に答える 2

1

GAE では、ファイルをブロブストアに配置し、ブロブストア サービスを使用してファイルを提供することを検討してください。

Blobstore はあらゆるバイナリ ファイルを提供できます

https://developers.google.com/appengine/docs/java/blobstore/overview

于 2013-01-01T18:55:44.750 に答える
0

私は一時的な解決策を得ましたが、さらに別の問題があります。この jar はデータストアに格納されているため、アクセスするにはhttp://www.myserver.com/?file=start.jarが必要です。http://www.myserver.com/start.jarを使用すると、動作します。getParameter の代わりにパスを解析するサーブレットが必要なだけです。これはまだ簡単です。

問題は pack.gz と version-id にあります。リンクがhttp://www.myserver.com/start.jar?folder=root&user=guestの場合、javaws は http://www.myserver.com/start.jar.pack.gz?version-id=1.0 を生成します。 ?folder=root&user=guestあなたgetParameter("version-id")1.0?folder=root使用できると思うので、&folder=root&user=guest

ただし、リンクがhttp://www.myserver.com/start__V1.0.jar.pack.gz?folder=root&user=guestになることもあります(これは良いことです)。javaws がどちらを使用するか保証できないと思うので、?folder=root や &folder=root を使用する準備はできません。

于 2013-01-04T01:49:20.080 に答える