5

コマンドラインを使用して、Java EEアプリケーションをビルドサーバー(Jenkins)からリモートのGlassfishサーバーに自動的にデプロイしようとしています。現時点では、これにasadminを使用しており、正常に機能しますが、このオプションでは、ビルドサーバーにもGlassfishをインストールする必要があります。これは、必要ないため避けたいと思います。ビルドサーバーは実際にはビルドとデプロイメントのみを実行しているので、サーバーを可能な限り「クリーン」に保ちたいと思います。

asadminツールのみをインストールするダウンロードが見つかりません。また、特定の* .jarに依存関係があるため、必要なファイルのみを手動でコピーしようとしても失敗しました。そのため、私が知らない限り、常に失敗します。 Glassfishインストールフォルダ全体をビルドサーバーにコピーします。

だから私の質問は:Glassfishサーバー全体をインストールせずにasadminツールだけをインストールする方法を知っている人はいますか?または、安全な通信を使用してリモートのGlassfishインスタンスにデプロイできる限り、他のコマンドラインツールを使用することもできます。

4

1 に答える 1

3

もう少し調査を行った後、Glassfishを完全にインストールせずにasadminをインストールすることを諦め、代わりにGlassfishのREST管理インターフェースを使用しました。

単純なバッチファイルでCURLを使用して動作させるようになりました。

curl.exe ^
    --user glassfish_username:glassfish_password ^
    --insecure ^
    -H "Accept: application/json" ^
    -H "X-Requested-By: dummy" ^
    -X POST ^
    -F id=@yourfile.war ^
    -F contextroot=yourcontextroot ^
    -F force=true ^
    https://yourservername:4848/management/domain/applications/application/

何をする必要があるかがわかれば、REST APIはかなり簡単ですが、他の誰かがこれを必要とする場合に備えて、ここにいくつかの重要なポイントがあります。

  • --自己署名および信頼できないSSL証明書を許可するには、(CURLによって)安全でないことが必要です
  • 「Accept」および「X-Requested-By」のヘッダー属性を設定する必要があります。設定しないと、Glassfishはリクエストを処理せず、単に空白のドキュメントを回答として返します。理由はわかりませんが、これらのパラメータを設定することで機能しました。
  • WARファイルの内容はPOSTの「id」パラメータとして渡されます
  • URLは、上記の抜粋に示されているとおりである必要があります。つまり、「domain」をドメイン名に置き換えたり、「application」をアプリケーション名に置き換えたりしないでください。これは実際のRESTインターフェースエンドポイントです。ドメイン/アプリケーション名をどこでも指定する必要はありません。
于 2012-09-28T00:41:53.610 に答える