とあるエンジニアの備忘録

SE・コンサルタントの備忘録

WEBアプリケーション作成2

今日は
最速でJava EE 7 Webアプリを作る – 2014 Java EE Advent Calendar | Mushagaeshi.com
を参考に実施(OS:ubuntu 15.04)

DB作成

1.workbench install
参考:MySQL :: MySQL Workbench :: 2.4.1 Installing
>| sudo apt-get install -y mysql-workbench


2.workbench からwebシステム用アカウントを作成 & 権限設定

  user: myweb 
  権限:custom (select,insert,update,delete)のみ


3.netbeans で DB接続設定、テーブル作成

CREATE TABLE `users` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `seq_id` int(10) unsigned NOT NULL ,
  `name` varchar(50) NOT NULL DEFAULT '',
  PRIMARY KEY (`id`)
);

サーバーサイド

4 . プロジェクト 作成
 プロジェクト>Maven >Webアプリケーション>test-server


5.POM.xmlを修正


6. Mysql サーバーを接続確認する
 作成したアカウントでMysqlに接続する Serveたぶ>Mysql>接続


7.テーブルエンティティ作成
 新規>DBからエンティティ作成 >DBを作成したDB選択&JDNI名をつける
 作成したテーブル(users)が使用可能な表として出てくるので選択し、適当に次へ > パッケージ名「test.server.entity」


8.DAO作成
 新規>エンティティクラスのセッションBean > パッケージ名「test.server.dao」


9.logic クラス作成
 新規>セッションBean > パッケージ名「test.server.logic」

フロント側作成

10. faceletと連携させるため以下の手順で作成
 1. 構成ファイルの作成 :faces-config.xml
   新規>JavaServerFaces > JSF Faces構成

 2. web.xml
servlet-mapping を以下に変更。プロジェクト>右クリ>フレームワークで「JavaServer Faces 」で同処理を実施
   >|*.xhtml

 3.faceletの作成
   新規>JavaServerFaces > JSFページ ※ファイル名は何でもいい

 4.Backing Beansの作成
   新規>JavaServerFaces > JSF管理対象Bean >「構成ファイルにデータを追加」にチェックすること!
   ※チェックしないと自分でfaces-config.xml に追加しないといけない
   
  Backing Beansがよくわからなかったのでググった。以下が参考になりました。
JSFによるWebアプリケーション開発
  要は、画面への入出力データの受け渡し・検証用のオブジェクトと理解。複数画面での共有も可能な様子
 

12. 実行したところ下記エラー
 java.lang.RuntimeException: Invalid resource : XXXXXX__pm
 glassfish 管理コンソールからconnection pool&resource を作成

 以下作業の参考: 
NetBeans Eコマース チュートリアル-データベースへのアプリケーションの接続
手順3〜15:The NetBeans E-commerce Tutorial - Setup Instructions

 
13. Connection pool and JDBC 作成
  the Resources > JDBC node, then click the Connection Pools >Newクリック

Name: DB名
Resource Type: javax.sql.ConnectionPoolDataSource
Database Vendor: MySql


13-1 . user/pass/urlの設定
  ※glassfish-resources.xmlに記載されているものと同じ値を設定 

  Additional Properties
   user/passがない場合は AddProperty


14.接続確認
 General tab > ping クリック

15 JDBC Resources 作成
 Resources > JDBC > JDBC Resources > Newクリック

User: user名
Password: パス
URL: jdbc:mysql://localhost:3306/DB

glassfish を停止&リフレッシュ


16.実行すると以下エラー
 WELD-000072: Bean declaring a passivating scope must be passivation capable.
→ indexBeanにSerializableを追加

    public class indexBean implements Serializable{


再度実行し、正常に起動。


あとはcrash&buildしたり、いろいろ勉強して制作速度と精度を上げていく


〜余談〜
 アノテーションのスコープが知りたい。以下のサイトが為になった。
JSF管理対象Beanのスコープを基礎からおさらいしてみる - Challenge Java EE !
 CDIJSFの違いをきちんと知りたい。以下のサイトをきっかけにさせていただく
JavaEE7 な JSF 2.2 の ViewScoped を試してみる - 割と普通なブログ