sakaisusieのブログ

大阪市営地下鉄堺筋線は北千里行:その他を2:1くらいにすればいいと思います!

本番環境へのWebアプリのリリース <Java, GlassFish, NetBeans>

[5] 本番環境へのWebアプリのリリース <Java, GlassFish, NetBeans>

(1) ビルドする。

NetBeansを起動してプロジェクトを開き、プロジェクトを右クリックしてビルドを選択する。

・warファイルが作成されたことを確認する。
場所は、NetBeansProjectsフォルダ(マイドキュメントの中にあるはず)の中の
該当プロジェクトのフォルダの中の「dist」フォルダ。
Mavenを使っていたら「target」フォルダ)

(2) warファイルをデプロイする。

・ブラウザで「https://<サーバのIPアドレス>:4848/」にアクセスしてログインする。

・「GlassFish Console - Common Tasks」にある「Deployment」の
「Deploy an Application」をクリックする。

・「Packaged File to Be Uploaded to the Server」を選択し
「参照」ボタンをクリックして(1)で作成したwarファイルを選択する。

・OKボタンをクリックしてデプロイする。

(3) アプリの動作確認をする。

Webアプリ本番環境の構築 <Java, GlassFish, MySQL>

『[1] Webアプリ開発環境の構築 <Java, GlassFish, MySQL, NetBeans>』 の手順でNetBeans以外をインストール・設定する。

WindowsXPなら「.NET Framework 3.5」もインストールしておく。 http://www.microsoft.com/ja-jp/download/details.aspx?id=22

マシン起動時にGlassFishも起動するようWindowsサービスに登録するために、 コマンドプロンプトを管理者として起動して下記の要領で入力していく。

※C:\glassfish4\binに移動する。
C:\Windows\system32>cd C:\glassfish4\bin

GlassFishが起動中だったら困るので停止コマンドを実行する。
C:\glassfish4\bin>asadmin.bat stop-domain domain1
Waiting for the domain to stop .....
Command stop-domain executed successfully.

※起動中でない場合は下記のようなメッセージが表示される。
CLI306: Warning - The server located at C:\glassfish4\glassfish\domains\domain1 is not running.
Command stop-domain executed successfully.

Windowsサービスに登録する。
C:\glassfish4\bin>asadmin.bat create-service domain1
The Windows Service was created successfully.  It is ready to be started.  Here are the details:
ID of the service: domain1
Display Name of the service:domain1 GlassFish Server
Server Directory: C:\glassfish4\glassfish\domains\domain1
Configuration file for Windows Services Wrapper: C:\glassfish4\glassfish\domains\domain1\bin\domain1Service.xml
The service can be controlled using the Windows Services Manager or you can use the
Windows Services Wrapper instead:
Start Command:  C:\glassfish4\glassfish\domains\domain1\bin\domain1Service.exe  start
Stop Command:  C:\glassfish4\glassfish\domains\domain1\bin\domain1Service.exe  stop
Restart Command:  C:\glassfish4\glassfish\domains\domain1\bin\domain1Service.exe  restart
Uninstall Command:  C:\glassfish4\glassfish\domains\domain1\bin\domain1Service.exe  uninstall
Install Command:  C:\glassfish4\glassfish\domains\domain1\bin\domain1Service.exe  install
Status Command: C:\glassfish4\glassfish\domains\domain1\bin\domain1Service.exe status
You can also verify that the service is installed (or not) with sc query state= all
windows.services.uninstall.good=Found the Windows Service and successfully uninstalled it.
For your convenience this message has also been saved to this file: C:\glassfish4\glassfish\domains\domain1\PlatformServices.log
Command create-service executed successfully.

※サービスを開始する。
C:\glassfish4\bin>C:\glassfish4\glassfish\domains\domain1\bin\domain1Service.exe start

※サービスの状態を確認する。
C:\glassfish4\bin>C:\glassfish4\glassfish\domains\domain1\bin\domain1Service.exe status
Started

※管理者のパスワードを変更する。
C:\glassfish4\bin>asadmin.bat change-admin-password
Enter admin user name [default: admin]>
Enter the admin password>
Enter the new admin password>
Enter the new admin password again>
Command change-admin-password executed successfully.

※リモートから管理コンソール(https://<サーバのipアドレス>:4848/)にアクセスできるようにする。
C:\glassfish4\bin>asadmin.bat enable-secure-admin
Authentication failed with password from login store: C:\Documents and Settings\Administrator\.gfclient\pass
Enter admin password for user "admin">
You must restart all running servers for the change in secure admin to take effect.
Command enable-secure-admin executed successfully.

※サービスを再起動する。
C:\glassfish4\bin>C:\glassfish4\glassfish\domains\domain1\bin\domain1Service.exe restart

C:\glassfish4\bin>

UTF-8設定、JPAのキャッシュ無効設定 <Java, GlassFish, MySQL, NetBeans>

(1) リクエストパラメータのエンコーディングUTF-8に設定

・プロジェクトを右クリックして「新規」→「その他」を選択、カテゴリに「GlassFish」、 ファイル・タイプに「GlassFishディスクリプタ」を選択して「次」をクリック、「終了」をクリック。

・「glassfish-web.xml」が開かれるのでXMLを表示して下記のように「parameter-encoding」を追記し保存する。

  ~略~
  </jsp-config>
  <parameter-encoding default-charset="UTF-8"/>
</glassfish-web-app>

(2) JDBC接続のエンコーディングUTF-8に設定

JDBC接続が設定済みのプロジェクトなら、「サーバー・リソース」フォルダに (Mavenを使っていれば「その他のソース」→「setup」フォルダ) 「glassfish-resources.xml」というファイルがあるハズ。 (もしかすると「WEB-INF」フォルダの中かも。)

・データベース側の文字コードをutf8にしている場合、 「jdbc-connection-pool」の子要素として下記のように「property」を2つ追記する必要がある。

  ~略~
  <property name="characterEncoding" value="UTF-8"/>
  <property name="useUnicode" value="true"/>
</jdbc-connection-pool>

(3) スコープをアプリケーションに設定

NetBeansの画面操作でJDBC接続を設定する時、どこかのタイミングで「JDNI名」を入力するのだが その値の先頭に「java:app/jdbc/」を付ける。(例: java:app/jdbc/hoge

・すでにJDBC接続を設定済みでJNDI名を上記のようにしていない場合は 下記の2つの設定ファイルA、Bを修正する。

・その上で「glassfish-resources.xml」を「WEB-INF」フォルダの中に移動する。

(A) glassfish-resources.xml

jdbc-resource」要素の属性「jndi-name」を「java:app/jdbc/」で始まる値にする。

  ~略~
  <jdbc-resource enabled="true" jndi-name="java:app/jdbc/hoge" object-type="user" pool-name="mysql_hoge_hogePool"/>
</resources>

(B) persistence.xml

データベースからエンティティクラスを作成するなどしていれば 「構成ファイル」フォルダに (Mavenを使っていたら「その他のソース」→「src/main/resources」→「META-INF」フォルダ) 「persistence.xml」というファイルがあるハズ。 「jta-data-source」要素の内容を(A)で指定したJNDI名に修正する。

  ~略~
  <jta-data-source>java:app/jdbc/hoge</jta-data-source>
  ~略~

(4) JPAのキャッシュを無効に設定

JPAのキャッシュを無効にし、常にDBからデータを取得するよう設定する。

・persistence.xmlに「<shared-cache-mode>NONE</shared-cache-mode>」を追記する。

  ~略~
  <jta-data-source>java:app/jdbc/hoge</jta-data-source>
  <shared-cache-mode>NONE</shared-cache-mode>
  ~略~

Mavenを使ったWebアプリプロジェクトの作成 <Java, GlassFish, MySQL, NetBeans, PrimeFaces>

ライブラリをあれこれ利用するならこっちのやり方でプロジェクトを作る方が楽。

この手順で利用するライブラリ: log4j, lombok, poi, primefaces

※他にも必要なものがあったらぐぐってやり方調べるなり 下記サイトで検索するなりしてpom.xmlをいじってくらはい。
http://mvnrepository.com/

(1) プロジェクトの作成

NetBeansを起動し、「ファイル」メニューから「新規プロジェクト」を選択。

・カテゴリで「Maven」を選択し、プロジェクトで「Webアプリケーション」を選択して「次」をクリック。

・プロジェクト名を例えば「webapp2」、グループIDは「com.hogehoge」のように組織を指すようなルートパッケージ名、 バージョンはデフォルトのまま、パッケージは勝手に「com.hogehoge.webapp2」になって、「次」をクリック。

・サーバーは「GlassFish Server」、JavaEEバージョンは「Java EE 7 Web」で「終了」をクリック。

(2) pom.xmlの編集

・作成したプロジェクトを展開して「プロジェクト・ファイル」の中の「pom.xml」を開く。

・プロジェクトを作成直後はdependenciesの内容が下記のようになっているはず。

<dependencies>
  <dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-web-api</artifactId>
    <version>7.0</version>
    <scope>provided</scope>
  </dependency>
</dependencies>

・上記部分を下記のように修正して保存する。(repositoriesも追加している)

<repositories>
  <repository>
    <id>prime-repo</id>
    <name>PrimeFaces Maven Repository</name>
    <url>http://repository.primefaces.org</url>
    <layout>default</layout>
  </repository>
</repositories>

<dependencies>
  <dependency>
    <groupId>javax</groupId>
    <artifactId>javaee-web-api</artifactId>
    <version>7.0</version>
  </dependency>
  <dependency>
    <groupId>org.primefaces</groupId>
    <artifactId>primefaces</artifactId>
    <version>4.0</version>
  </dependency>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-api</artifactId>
    <version>2.0-rc1</version>
  </dependency>
  <dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.0-rc1</version>
  </dependency>
  <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.12.6</version>
  </dependency>
  <dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi</artifactId>
    <version>3.10-FINAL</version>
  </dependency>
  <dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml</artifactId>
    <version>3.10-FINAL</version>
  </dependency>
  <dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-scratchpad</artifactId>
    <version>3.10-FINAL</version>
  </dependency>
  <dependency>
    <groupId>org.apache.poi</groupId>
    <artifactId>poi-ooxml-schemas</artifactId>
    <version>3.10-FINAL</version>
  </dependency>
</dependencies>

(3) 一旦ビルド

忘れないうちに一旦ビルドしとく。

(4) 動作確認

省略。

Webアプリプロジェクトの作成 <Java, GlassFish, MySQL, NetBeans, PrimeFaces>

[2a] Webアプリプロジェクトの作成 <Java, GlassFish, MySQL, NetBeans, PrimeFaces>

Version: Java7, GlassFish4, MySQL5.6, NetBeans8, PrimeFaces4

(1) プロジェクトの作成

NetBeansを起動し、「ファイル」メニューから「新規プロジェクト」を選択。

・カテゴリで「Java Web」を選択し、プロジェクトで「Webアプリケーション」を選択して「次」をクリック。

・プロジェクト名を適当に入力して「次」をクリック。

・サーバーは「GlassFish Server」、JavaEEバージョンは「Java EE 7 Web」、
コンテキストパスはデフォルトのまま「次」をクリック。

フレームワークで「JavaServer Faces」をチェックして、コンポーネントタブを開き
「PrimeFaces」をチェックしてしばらく待ち、「詳細」をクリックしPrimeFacesライブラリに
「PrimeFaces 4.0」が表示されたらそれを選択して「OK」をクリック、「終了」をクリック。

(2) 動作確認

・index.xhtmlのhtmlタグに「xmlns:p="http://primefaces.org/ui"」を追加し、
bodyタグの中に「<p:spinner/>」を追加して上書き保存。
(参考: http://www.primefaces.org/gettingStarted )

・プロジェクトを右クリックして「ビルド」して「実行」して動作確認。

(おまけ)

データベースにテーブル作成済みでPrimeFacesのCRUD画面をパパッと作りたい場合は以下のページを参照。
https://netbeans.org/kb/docs/web/jsf20-crud.html#generateEntity
https://netbeans.org/kb/docs/javaee/javaee-gettingstarted-pf-screencast.html

Webアプリ開発環境の構築 <Java, GlassFish, MySQL, NetBeans>

[1] Webアプリ開発環境の構築 <Java, GlassFish, MySQL, NetBeans>

Version: Java7, GlassFish4, MySQL5.6, NetBeans8

※Java8が出ているが、WindowsXPにインストールするのが面倒らしい。
何も考えずに開発環境も本番環境もバージョンを揃えるためJava7を採用する。
どの環境もWin7以降、Win2008以降だぜって場合は
以下の手順はJava8でやっちゃってくらはい。


【準備】------------------------------------------------------------------------

(1) JDKの7の最新版をダウンロード

http://www.oracle.com/technetwork/java/javase/downloads/index.html

Java SE 7u60

jdk-7u60-windows-i586.exe


(2) GlassFish4をダウンロード

https://glassfish.java.net/download.html

Full Java EE platform

Zip

Multilingual

glassfish-4.0.zip


(3) MySQLの最新版のWindowsインストーラをダウンロード

http://dev.mysql.com/downloads/windows/installer/

Windows (x86, 32-bit), MSI Installer

mysql-installer-community-5.6.19.0.msi


(4) NetBeansの最新版をダウンロード

https://netbeans.org/downloads/?pagelang=ja

Java EE

netbeans-8.0-javaee-windows.exe


【インストール】----------------------------------------------------------------

(5) JDKのインストール

・大体デフォルトのまま次へ次へでok。


(6) GlassFishのインストール

・(2)でダウンロードしたzipファイルを「C:\glassfish4」に解凍するだけ。

・解凍後のイメージは以下。
C:\glassfish4
├ .org.opensolaris.pkg
├ bin
glassfish
(以下略)


(7) MySQLのインストール

・「Choosing a Setup Type」で「Server only」を選択、
「Installation Path」は「C:\mysql」とし、
「Data Path」は「C:\mysql」とする。

・「Check Requirements」で何か足りないと言われたら
次へ次へで必要なものをインストールする。

・「MySQL Server Configuration」で「Config Type」に
「Development Machine」を選択する。

・パスワードは何か適当に、ただし忘れないように。

※インストールしたいツールがあるなら「Server only」でなく「Custom」とか「Developer」とかを選択する。


(8) NetBeansのインストール

・「IDEとともにインストールするアプリケーション・サーバーを選択」で
GlassFish ~」のチェックを外す。(Tomcatもチェックしない)

・「NetBeans IDE用のJDK」で(5)でインストールしたバージョンのものを指定する。


【設定】------------------------------------------------------------------------

(9) 環境変数JAVA_HOMEとPATHの設定

Windows+Breakでシステムのプロパティ→詳細設定→環境変数を開く。

環境変数JAVA_HOMEに(5)でインストールしたフォルダを指定する。
例: C:\Program Files\Java\jdk1.7.0_60

環境変数PATHに「;%JAVA_HOME%\bin」を追加する。


(10) NetBeansの設定で、アプリケーションサーバーに(6)でインストールしたGlassFishを指定

NetBeansを起動し、「ツール」メニューから「サーバー」を開く。

・「サーバーの追加」をクリックする。

・「GlassFish Server」を選択して「次」をクリックする。

・「インストール場所」に「C:\glassfish4」を指定し、「次」をクリックする。

・「ドメイン」は「domain1」のまま、「ユーザー名」は「admin」、
パスワードはこれまでの手順で設定してないので空のまま、「終了」をクリックする。

・サーバーのツリーにGlassFish Serverが追加される。

・右クリックして起動/終了できるか確認。

NetBeansGlassFishの連携がうまくいかないことがあるらしい。
もしそういう状況に陥った場合はぐーぐる先生に
netbeans glassfish 日本語」とか聞いて誰かに助けてもらう。
再インストールとか必要になるかも。


(11) NetBeansの設定で、データベースに(7)でインストールしたMySQLを指定

NetBeansを起動し、「ウィンドウ」メニューから「サービス」を開く。

・データベースを右クリックし、「MySQLサーバーを登録」を選択する。

・大体デフォルトのまま、ホスト名に「localhost」、ポート番号に「3306」、ユーザ名に「root」、
パスワードは(7)で指定したものを入力し、「OK」をクリックする。

・データベースのツリーにMySQLサーバーが追加される。

・右クリックして接続できるか確認。

落書き目次

[1] Webアプリ開発環境の構築 <Java, GlassFish, MySQL, NetBeans>
[2a] Webアプリプロジェクトの作成 <Java, GlassFish, MySQL, NetBeans, PrimeFaces>
[2b] Mavenを使ったWebアプリプロジェクトの作成 <Java, GlassFish, MySQL, NetBeans, PrimeFaces>
[3] UTF-8設定、JPAのキャッシュ無効設定 <Java, GlassFish, MySQL, NetBeans>
[4] Webアプリ本番環境の構築 <Java, GlassFish, MySQL>
[5] 本番環境へのWebアプリのリリース <Java, GlassFish, NetBeans>