Help us understand the problem. What is going on with this article?

Eclipse+Maven+GlassFish構成のウェブプロジェクトの作成

More than 3 years have passed since last update.

はじめに

Eclipse(Kepler)で下記構成のウェブアプリケーションを作成します。
* JavaEE7
* Maven3.0.4
* GlassFish4.1

後述しますが、上記の構成であればNetBeansでの開発を強くお勧めします。
また、作成したプロジェクトは下記にコミットしています。
https://github.com/MT-01/javaee-webapp

GlassFish4.1をダウンロード

まず下記よりダウンロードします。
https://glassfish.java.net/download.html

ダウンロード後、解凍して任意の場所に置きます。
今回はC:直下に配置しました(C:\glassfish4\glassfish\bin)

EclipseにGlassFishToolインストール

EclipseでGlassFishを使えるようにするため、ウィンドウ→設定→サーバー→ランタイムからGlassFishToolをインストールします。

サーバーランタイム環境を設定

先ほどダウンロードしたGlassFish4.1を設定追加します

JDK
java7
Runtime Name
GlassFish 4.1
GlassFish Server Directory
C:/glassfish4/glassfish

動的ウェブプロジェクトを作成

プロジェクト名は任意(今回は「javaee-webapp」としました)。
ターゲットランタイムはGlassFish4.1
動的webモジュールバージョンは3.1としてください。

入力したら次へを選択すると、ビルドパス上のソースフォルダを設定する画面になりますが、
さらに次へを選択します。
コンテンツ・ディレクトリは「src/main/webapp」とします。

全て終わったら、完了を選択してプロジェクトを作成します。

Mavenプロジェクトに変換

プロジェクトを右クリック→構成→Mavenプロジェクトへ変換を選択し、グループID、アーティファクトID、パッケージングを入力します。今回はグループIDをcom.sample、アーティファクトIDをjavaee-webapp、パッケージングはウェブアプリケーションなのでwarとしました。

最初からEclipseの新規作成からMavenプロジェクトを作成することもできますが、今回はあえて変換する方法をとりました。理由は詳しくは割愛しますが、私の環境だと動的webモジュールが古いバージョンでインストールされてしまうことで依存系のエラーが発生してしまいました。

ソースフォルダを作成

変換処理でMavenの主役であるpom.xmlや、src/main/webapp、targetフォルダなどを作成してくれますが、ソースフォルダであるsrc/main/java、src/main/resourcesフォルダを作成してくれませんので、お粗末ですが手動で作成します。

Mavenのディレクトリレイアウトについてはこちら。
https://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html

作成したらソースフォルダに設定します。
src/main/javaフォルダをを右クリック→ビルド・パス→ソースフォルダとして使用を選択
src/main/resourcesも同様

プロジェクト右クリック→プロパティ→ビルド・パス→ソースタブを見ると、javaee-webapp/srcがソースフォルダとなってしまっているので除去します。またbuildフォルダはもう使用しないので削除しておきます。

maven-glassfish-plugin設定

Mavenビルドで作成したwarをGlassFishにデプロイするために、maven-glassfish-pluginを作成します。そのためpomにプラグイン追加の記述を追加します。

pom.xml
      <plugin>
        <groupId>org.glassfish.maven.plugin</groupId>
        <artifactId>maven-glassfish-plugin</artifactId>
        <version>2.1</version>
        <configuration>
          <user>admin</user>
          <glassfishDirectory>C:\glassfish4</glassfishDirectory>
          <adminPassword>admin</adminPassword>
          <debug>true</debug>
          <echo>true</echo>
          <components>
          <component>
          <name>${project.artifactId}</name>
          <artifact>${project.build.directory}/${project.build.finalName}.war</artifact>
          </component>
          </components>
          <domain>
            <name>javaee-webapp</name>
            <adminPort>4848</adminPort>
          </domain>
        </configuration>
      </plugin>

GlassFish設定

まずEclipseにサーバー情報を追加します。Eclipseのサーバービューの空白部分を右クリック→新規→サーバから、GlassFish4.1を選択して次へを選択します。管理者IDにはadmin、管理者パスワードは空白としておきます。

次にGlassFish管理画面からパスワードを設定します。GlassFish管理画面(http://localhost:4848/)にアクセスし、Domain→Administrator Passwordを選択します。新しいパスワードを任意で設定します(今回はadminとします)。これをやると先ほど追加したEclipseのサーバー設定はパスワード違いで使えなくなるので、いったん消して再登録しなおします(パスワードはadmin)。ちなみにサーバー設定画面でデプロイ対象のアプリケーションを選択できますが、何も登録しないでください。登録してしまうと、Eclipse標準のビルド?が実行されてしまうようで、Mavenでビルドされた場合と異なることがあります。あくまでビルドはMavenで行います。

次に、C:\glassfish4\bin\asadminをC:\glassfish4\bin\asadmin_bkなどに変更します。そのままだとEclipseからのデプロイ時に、asadmin.batではなくasadmin(shelll)が実行されてしまうためです。

デプロイの実行構成

Mavenでのビルド、デプロイの実行構成を作成します。
プロジェクトを右クリック→実行→実行の構成→Maven buildで、以下の2つの構成を作成します

【deploy実行構成】
名前:javaee-webapp-deploy(任意)
基底ディレクトリ:ワークスペースを参照ボタンを選択して、javaee-webappを選択
ゴールにwar:war glassfish:deployと入力

【redeploy実行構成】
名前:javaee-webapp-redeploy(任意)
基底ディレクトリ:ワークスペースを参照ボタンを選択して、javaee-webappを選択
ゴールにwar:war glassfish:redeployと入力

HelloWorld

任意の場所にHelloWorldクラスを作成します。

HelloWorld.java
@WebServlet(name = "HelloWorld", urlPatterns = { "/HelloWorld" })
public class HelloWorld extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse res)
            throws IOException, ServletException {

        req.getRequestDispatcher("helloworld.jsp").forward(req, res);
    }

}

続いてsrc/main/webapp直下にJSPを作成します

helloworld.jsp
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
Hello World!
</body>
</html>

先ほど作成したdeploy実行構成を実行します。
デプロイがうまくできたら、以下のURLにアクセスし「Hello World! 」と表示されたら成功です。

http://localhost:8080/javaee-webapp/HelloWorld

まとめ

今回はEclipseを使用しましたが、上記の構成であればNetBeansでの開発を強くお勧めします。理由は以下の通りです。

  1. 動くプロジェクトを作成するまでに手順がやたら多い
  2. ホットデプロイができない(致命傷)
  3. deployとredeployの実行構成を使い分ける必要がある(致命傷)

1についてはお察しの通り、たかだかHelloWorldを行うのにこれだけの手順が必要なのはどうかと思います。
2,3については、やり方があるのかもしれませんが、私が調べた限りではわかりませんでした。NetBeansであれば、1,2,3すべての問題を解決できます。

それにしてもMavenといい、GlassFishといいあまりこの辺の構成についてピンポイントで情報が出てこなかったのでかなり骨がおれました。

MT-01
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした