2016-08-05 10 views
4

JnlpDownloadServletsampleを使用して、WebアプリケーションからJNLPを起動することをお薦めします。JnlpDownloadServletクラスを使用しないJNLPの起動

何らかの理由で、私はそれを使用することができず、自分でJNLPを起動する必要があります。

protected void doGet(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException 
{ 
    performTask(request, response); 
} 

protected void doPost(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException 
{ 
    performTask(request, response); 
} 

private void performTask(HttpServletRequest request, HttpServletResponse response) 
    throws ServletException, IOException 
{ 
    response.setContentType("application/x-java-jnlp-file"); 
    byte [] b = getJNLP(..some params..).getBytes(); 

    response.setContentLength((int) b.length); 
    OutputStream responseOutputStream = response.getOutputStream(); 
    responseOutputStream.write(b); 
} 

getJNLPStringとして全体のJNLPファイルを返すメソッドです。

これは私が(それを起動するサーブレット)が出ているものです。

これはうまくいくようです。しかし、私は何かが欠けている。追加ヘッダーなどが設定されていますか?

更新:私はJnlpDownloadServletを使用していない理由は、2つの異なるWebアプリケーションからこのJNLPを起動する必要があるからです - Javaの1つである& DOTNETです。私は明らかにDOTNET webappからJnlpDownloadServletを使用することはできません。私はJNLPを起動するためにDOTNETアプリケーションに(上記と同様の)同様のコードを書いています。だから私はちょうどそれもJavaアプリケーションで同じにしておきます。

+1

この質問は広いです。コードレビューサービスではありません。何か間違いはありますか? – xenteros

+0

この作業では、クライアントに有効なjnlp-Fileを渡すだけです。したがって、生成されたjnlp-fileへの静的リンクも機能するはずです。 jnlp-Fileまたはversions.xmlの世代について何も追加していないので、何かを忘れてしまったと言います。 – Turo

+0

@Turo jnlpファイルは静的ではありません。実行時に 'getJNLP'メソッドによって生成されます。 – user93353

答えて

1

はい、知るべきことがあります。

例:Jnlp-Download-Service は、同じWebStartアプリケーションを異なるサーバー(dev、qa、prod)にインストールする場合に重要な、コードベースとhrefの置換を実行します。だから、これはすべてのサーバー上で動作します:

<?xml version='1.0' encoding='UTF-8'?> 
<jnlp spec='7.0' href='$$name' version='2.5-null' codebase='$$codebase'> 
    <information>... 

JnlpDownloadServletがを使用しない場合、あなたが失うだろう多くの利点があります。

を見てみてください:https://docs.oracle.com/javase/8/docs/technotes/guides/javaws/developersguide/downloadservletguide.html#substitutions

しかしを、あなたはすなわちJnlpDownloadServletがなくて、任意のサーブレットなしWebStartの-アプリケーションを起動することができます。 WebStart-Applicationを起動することもできます。 jnlp-fileとすべてのリソースをwindowsディレクトリに置くと、アプリケーションサーバーは必要ありません。例えば

:\ TMP \ webstartdemo

<?xml version="1.0" encoding="utf-8"?> 
<jnlp spec="1.0+" codebase="file:///C:/tmp/webstartdemo"> 
    <resources> 
     <j2se version="1.7+" href="http://java.sun.com/products/autodl/j2se"/> 
     <jar href="SwingGui.jar" main="true" /> 
    </resources> 
    <application-desc name="Demo" main-class="Demo"/> 
</jnlp> 

プラスミニただ一つのクラスとSwingGui.jar:Cの下に2つのファイルが持っている私は

public class Demo { 
    public static void main(String... args){ 
     javax.swing.JOptionPane.showMessageDialog(null, "Hello World"); 
    } 
} 

を次に私はそれを開始:

javaws c:\tmp\webstartdemo\demo.jnlp 

もちろん、jnlp-fileとal lウェブサーバー内のリソースですが、動的である必要はありません。これがあなたの質問に対する答えであることを願っています。

+0

JNLPDownloadServletは、すべての場合にJNLPを生成するために使用することはできません。発射特有のの代用をサポートしていません。この場合、2番目のサーブレットを使用してJNLPを生成し、JnlpDownloadSerlvetを使用してjarなどを処理します。 – tanderson

+0

私は何も置換しません。 JnlpDownloadServletを使うかどうかは違いますか? – user93353

+0

私はJnlpDownloadServletを使用していない理由で質問を更新しました – user93353

0

はい、これで十分です。

あなたはsubstituion、それはに動作しますまたはを圧縮が、バージョン管理のような他のすべての機能を得ることはありません。私が言ったように、WebStartアプリケーションを起動するための特別なサービスは必要ありません。

関連する問題