プログラミングメモ

ソフトウェア開発に関する技術メモ。

Eclipse 3.7 + GlassFish 3.1.2.2

Eclipseインストール

http://mergedoc.sourceforge.jp/ より Eclipse 3.7.2 Indigo SR2 Windows 32bit ベース / Pleiades All in One 3.7.2.v20120225 をインストール。JRE同梱版を選択。

  • 64bit版は無い模様。
  • サイトに記載のとおり、同梱のTomcatに不具合ありとのこと。

GlassFishプラグインGlassFishをインストール

プラグインGlassFish本体をまとめてインストールできる。
この場合、サーバービューへの登録も自動的に行われる。
ただし、GlassFish本体はmultilingualではないようで、管理コンソールは英語となる。

  • ヘルプ>新規ソフトウェアのインストール
  • [追加]をクリック
  • 名前:は適当に
  • ロケーション: http://download.java.net/glassfish/eclipse/indigo
  • GlassFish 3.1.2.2 Application Server runtime にチェック。配下に Oracle GlassFish Server Toolsが含まれていることを確認。
  • 署名がないけど続行する?の警告については、[OK]
  • サーバービューに Internal GlassFish 3.1.2.2 が追加されていることを確認。

以上でGlassFishGlassFishプラグインが利用可能になる。

JSPアプリの作成と動作確認

動的Webプロジェクトを作成すればHello JSPなアプリが生成される。
動作確認のため、これを配備して実行してみる。

  • ファイル>新規>動的Webプロジェクト
  • プロジェクト名: 任意(ex. HelloGlassfish)
  • [完了]をクリック
  • プロジェクトエクスプローラーで[HelloGlassfish]を右クリック
  • 実行>サーバーで実行
  • 使用するサーバーの選択:でInternal GlassFish 3.1.2.2 を選択
  • [完了]
  • GlassFishが起動する。また、Eclipse内のWebブラウザーが開き、Hello World! と表示される。

スクリーンショット付きの手順は以下のサイトが参考になる。

リモートのGlassFishサーバをサーバービューに追加 → 挫折

そもそも対応しているのかどうかが不明だが、可能であるような情報もある。
Eclipse and GlassFish: remote deployment and debugging - Stack Overflow

以下のとおり試したが、成功していない。

サーバー側の準備

サーバー側の設定として、asadmin enable-secure-admin の実行が必要。
これを実行しないと、外部からの管理関係のリクエストを受け付けない。

enable-secure-adminの内容については以下に解説がある。管理関係の通信が暗号化される。Webの管理コンソールもHTTPSになる。

enable-secure-adminの実行には、事前にadminにパスワードを割り当てる必要あり。

adminにパスワード割り当て

asadmin change-admin-password

secure-adminを有効に

asadmin enable-secure-admin

再起動

asadmin stop-domain
asadmin start-domain
Eclipse
  • サーバービューで新規>サーバー
  • サーバーのホスト名を入力
  • サーバー・ランタイム環境には、定義済みのGlassFish 3.1.2.2 を選択
  • [次へ]
  • 管理者パスワードを入力して、[Ping Server]
  • ここで、以下のメッセージが表示される。
    • Cannot communicate with ホスト名:4848 remote server. Is it up? Is it secure? (Hint: run asadmin enable-secure-admin)

サーバには以下のログ

User [] from host ホスト名 does not have administration access

Eclipse側には以下のログ (workspace配下の.metadata\.plugins\org.eclipse.ui.workbench\log)

!MESSAGE GlassFish: getVersion3Only is failing=FAILED

サーバー証明書GlassFish自動生成のそのままで、オレオレ証明書状態だからかもしれない。

その他の選択肢

Eclipse 4.2

開いたファイルの切り替えが重い。

  • Pleiades All in Oneだから、の可能性もある。素のeclipseは未検証。
  • 画面下部のメモリ量表示を閉じると軽くなるとの情報があり、実際、より軽くはなる。しかし、依然として、ファイル切り替えに数秒待たされるケースがあった。
GlassFishプラグインEclipseマーケットプレースからインストールする

Eclipseマーケットプレースから GlassFish Java EE Application Server Plugin for Eclipse を選択する。
GlassFish v3(3.1.1)インストール、Eclipseプラグイン導入 - Shinya’s Daily Reportで紹介されている方法。

  • Eclipse 3.6 Helios用のものがインストールされる。
  • サーバービューへのサーバー追加は自前で実施が必要。
  • 自前でGlassFish 3.1.2.2をインストールしてサーバービューへ追加しようとすると、上記サイト記載のとおり、追加できない。以下のメッセージが表示される。GlassFish 3.1.1ならこの問題は発生しない。
    • 指定したディレクトリーに有効な GlassFish インストールがありません。 「インストール・サーバー」ボタンをクリックしてダウンロードし、そのディレクトリーにインストールしてください。

なお、サーバータイプとしてGlassFish 3.1とGlassFish Server Open Source Edition 3 があるが、違いが不明。
上記サイトでは後者を選択している。前者を選択すると以下の問題がある。

  • 起動構成画面のサーバータブで選択肢に目的のサーバーが表示されない。
  • 上記が支障となり、前期サイトに記載のコンソール文字化け対策が実施できない。
GlassFishプラグインを 追加サーバー・アダプターのダウンロードからインストールする
  • サーバービュー>新規>サーバー
  • [追加サーバー・アダプターのダウンロード]をクリック
  • Oracle GrassFish Server Tools を選択

こちらの場合は、サーバータイプにGlassfish 3.1.2が追加され、Glassfish 3.1.2.2 が登録できない問題は解消。

起動構成画面でサーバータブで選択肢に表示されない問題は残存。
また、冒頭の方法でインストールしたプラグインよりも古い。

GlassFish本体は自分でインストールしたものを使う

プラグインに添付のGlassFishは管理コンソールが英語だが、自前でmultilingual版をインストールすることで日本語となる。

GlassFishのインストール手順、サーバービューへのサーバー登録手順は基本的には以下の解説のとおり。
GlassFish v3(3.1.1)インストール、Eclipseプラグイン導入 - Shinya’s Daily Report

差分や補足

  • GlassFishのインストール
    • ダウンロードするバージョンは3.1.2.2。
    • インストール時、adminのパスワードを設定するが、空欄のままでもよい。
  • Eclipseサーバービューでの設定
    • サーバービュー>新規>サーバ
    • サーバータイプは GlassFish 3.1.2.2 を選択。
    • サーバーラインタイム環境:に事前登録済みのGlassFish 3.1.2.2 が表示されている。これは使わず、その右の[追加...]をクリック。
    • 新規サーバーランタイム環境 のダイアログが表示される。アプリケーションサーバー・ディレクトリー欄にGlassFishのインストール先のglassfishフォルダを指定。(ex. C:\glassfish3\glassfish)
    • デフォルトではGlassFish adminにパスワード指定しない設定になっているため、GlassFish adminにパスワード設定時は、次の設定をする。
      • サーバービューで、今追加したサーバーをダブルクリック。
      • アプリケーション・サーバのグループの[管理コマンドに匿名接続を使用]のチェックをはずす。
      • Ctrl+Sで保存

サーバー起動時に以下のエラーが出る場合は対処が必要。

GlassFish v3 requires a JDK 1.6 and not a JRE. Please add/select the correct JDK in the Server properties 'Runtime Environment' section.
  • サーバービューで、今追加したサーバーをダブルクリック。
  • [ランタイム環境:]というハイパーリンクをクリック。
  • JRE: 欄に選択されているものをJDKに変更。選択肢に[デフォルトJRE]以外にjava5, java6, java7があるはずで(Pleiades All in Oneの場合)それらを選択すればよい。

[デフォルトJRE]しかない場合は実行環境としてのJDKを登録する必要がある。

  • メニューバーから ウィンドウ>設定>Java>インストール済みのJRE
  • [追加]
  • 標準VMを選択し、[次へ]
  • JREホーム:に、JDKのフォルダを指定。Pleiades All in Oneなら、C:\bin\eclipse-pleiades-java-3.7.2\java\6 など。指定するパスに\jre を付けない。

JDK登録後、前述のように[ランタイム環境:]をクリックし、JRE:欄に、今登録したJDKを選択する。

サーバー起動時になかなか起動が完了せず、コンソール(Server.log)に以下のメッセージが出る場合は、adminの認証情報に誤りがある。

情報: ホスト127.0.0.1のユーザー[admin]が管理アクセス権を持っていないか、不正なユーザー名およびパスワードが指定されています
情報: ホスト127.0.0.1のユーザー[]が管理アクセス権を持っていないか、不正なユーザー名およびパスワードが指定されています

特に、GlassFish側でadminのパスワードありにしている場合、前述のとおり[管理コマンドに匿名接続を使用]のチェックをはずす必要があるが、はずれていない場合にこの現象が発生する。