ミランコビッチ (プログラマー)のブログ

プログラムのこととか適当に

DB接続部分にbutterfly-persistenceを使ってみる

■当分AWSはお預けにすることにした。

今プログラム組んでいる目的は久しぶりのjavaなので、最新のjava技術を使って遊んでみる。なのでAWSも遊んでみたかったんだけどJava se7やGlassfishの方が面白そうなので

こっち優先にする。

一通り触ってもまだAWS Elastic Beanstalkにこの組み合わせが出来なかったらEC2に自分で環境を作る勉強をするかも(゚ー゚*?)?

もともとはNetbeans7.2なら簡単にクラウドが初められるよ。ってのから来たので

出来るだけ面倒なことはしたくない。( ( (__|||) ) ) 

 

JPAというかHibernateがあまり好きになれないので、DB接続簡単なの無いかなーっと探していたらココにbutterfly-persistenceの紹介が有ったので使ってみた。

DbUtilsも良いけど、これも良いなー簡単で(*゚▽゚)ノ

try-with-resourcesとAOPを一緒に使えば良い感じになるかな?

こんど試してみようTODO。

 

//インポートは適当に
    /**
     * データ取得
     *
     * @return テストデータ
     */
    public List<Map> getRdsDataByOne() throws Exception {
        //戻り値のガワ作成
        ArrayList<Map> ret = null;
        Map dataOneRec;

        //ドライバの準備
        Class.forName("org.gjt.mm.mysql.Driver");
        //TODO 外部ファイルからの読み込みに変更
        String url = "jdbc:mysql://【ここにRDBのエンドポイントを記述】?useUnicode=true&characterEncoding=UTF-8";
        //TODO コネクションプール化
        try (
                //コネクションの作成
                Connection con = DriverManager.getConnection(url, "【ユーザ】", "【パスワード】");) {
            //DBマネージャの作成
            PersistenceManager manager = new PersistenceManager();

            //SQLの作成
            String sql = "select * from testdb1.A01 where col1 = ? order by col1";

            //データ取得
            dataOneRec = manager.createDaos(con).getMapDao().readMap(sql, "0001");
        }
        //返却加工
        ret = new ArrayList<>();
        ret.add(dataOneRec);

        return ret;
    }

 

AWSでCDI化

■AWSでCDI化しようとしたら超嵌った。orz

まずローカル環境で試してみる。ggr先生に聞くと英語の情報が多くて、英語読めない自分には「jar置いてxmlにリスナー登録しろ」ってこと位しか読めなくって。

その通りやっても動かない。なんでΣ( ̄ロ ̄lll) ガビーン

 

んでとある英語サイトに「beans.xml」を「web.xml」と「faces-config.xml」があるフォルダに作れって書いてある?

オレのフォルダにfaces-config.xmlなんて無いよ( ̄ ̄ ̄∇ ̄ ̄ ̄; アリャ?

というわけで「WEB-INF」右クリ→JSFJSF構成ファイル作成で作ってGO

やたーーワーイ!!\(o ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄▽ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄o)/ワーイ!!

Eclipseだとデフォで作るの?何でNetBeansだと作らないの?(新規プロジェクトの時にJSFを選んでるんだよ)とか、何でGlassfishだと無くても動くの?とか、エラーが出ないから原因がわかんねえよボケ(xhtmlがそのまま表示された)とか。色々なことを動いたので闇に葬りさりAWSに上げるぞー。

 

AWSに上げて、、、エラー?( ̄へ ̄|||) ウーム

∑(ノ▼ο▼)ノ オォオォオオオ!!AWSモニターのグラフ見てたら、CPU100%に!

ネットワークのIOもなんか凄い上がってるなんで?

どうやって止めるのこれ。w|;゚ロ゚|w ヌォオオオオ!!

1.初期アプリに戻す「actions → deploy a different version → First Release」

2.サーバリスタート「actions → Restart the App Server(s)」

幾ら掛かるんだ、心臓に悪いわ!

 

EBLのログってどうやって見るんだろうって探してみると

「Environment Details → Logs → Snapshot Logs」で100行ほど見れた。

まあ、ボタン連打してエラー内容を見てみると

Unsupported major.minor version 51

うん、java se 7は動かないってwwwwww

AWS Management Console見てたんだけどJavaのバージョンって分からなかったので、

ココを 参照して「java -version」を実行してみたらjava version "1.6.0_20"でした。orz

JavaのバージョンとCDIとは関係ないかもしれないんだけど

ソースがJava se 7を試すために書いているソースが多いのでどれが引っ掛かっているのか分からん。

 

さてどうしよう。優先順位をどれにするか。

1.Elastic Beanstalkを止めてEC2でGlassfish+java se 7

  Elastic BeanstalkのをGlassfish+java se 7にアップデート

→出来るのかな?出来たとしても簡単じゃないよなー

2.Elastic BeanstalkのJavaをse 7にアップデート

→中途半端だなー

3.今のままTomcat7+Java se 6

→最新の技術で遊びたいなー

4.AWSを捨てて、ローカル環境でGlassfish+Java se 7

→クラウドだから直ぐに見れて面白いんだけどなー

 

今日aws中の人が三鷹で喋るみたいだ。

行きたいなーでも、三鷹遠い残念ヾ(- -;)

 

 

 

 

 

 

 

Tomcatを使うたった1つの理由

AWSのElastic BeanstalkはTomcatしか対応してないのです(/へ\*)ウゥ… (/ー゚\*)チラ、amazonさん

awsからアンケートのメールが来ていたのでやろうと思ったら英語だったorz

でも、頑張って「glassfish server」って書いておいた。

 

jsfの管理をCDIにする

ココを参考にしたよ。おーローカル環境で簡単に動いたよーヾ(@~▽~@)ノ

おっし、AWSにあげて、うご・・・アレ?エラー?( ̄ ̄ ̄∇ ̄ ̄ ̄; アリャリャ?

ローカル環境はglassfishでAWSはtomcatだったorz

tomcatはJava EE6に準拠じゃないのか、難しいこと分かんね、さてどうしよう。。。

1.Elastic BeanstalkをやめてEC2にGlassfishをインストールする。

2.CDIの参照実装はWeldってのらしいので、Tomcatにインストールする。

3.Elastic BeanstalkにGlassfishが来るまで諦める。

4.JSFはやめて別のフレームワークで遊ぶ。(Play Frameworkかwicketかな)

 

とりあえず明日は2番のTomcatにWeldを入れてみようと思う。

動くと良いなー

 

 

JSF2.0でcssのid指定で嵌ったのでメモ

■JSF2.0で自動作成されるidに「:」が入っているのでcssのIDセレクタ名に使用できない。

<h:form id="form1">
<h:inputText id="gid" value="hoge" /><br />     
</h:form>

こう書くと、作成されるhtmlは

<input id="form1:gid"/>

となってcss

#form1:gid { width: 300px; }

と書いても認識されない。

web.xmlに下記パラメータを追加し、idとidの接続文字列を変更する。

<context-param>
    <param-name>javax.faces.SEPARATOR_CHAR</param-name>
<param-value>_</param-value>
</context-param>

 出来上がるhtmlが「<input id="form1:gid"/>」→「<input id="form1_gid"/>」に変更されるのでcssを変更する。

 styleClassでも変更できた気がするが使い分けって何か基準があるのかな?

 

CDI化で嵌る

jsf2.0は1.2と違ってアノテーション使ってxhtmlとjavabeanを紐付けることができるのでラクチン。

その管理をjsfからCDIに移せるらしいので、やってみたが上手くいかないorz

土日にチョット頑張るかなー

 

 

 

 

Netbeans7.2にGoogleCodeのGitからソースを取り込む(何も無い状態)

■リモートから取得する方法

ローカルのディレクトリを綺麗にしたかったので削除し、リモートから取得する。

NetBeansのメニューからTeam→Git→クローン

 

f:id:Milankovitch:20120523214700p:plain

f:id:Milankovitch:20120523215023p:plain

f:id:Milankovitch:20120523215033p:plain

 

■やっと開発環境が整って来た気がする。

取り合えずJSF2.0をちょっといじってみる。

1.2と違って画面遷移ルールやバッキングビーンをxmlに書かなくて良い感じだ。

 RDB接続フレームワークに「butterfly-persistence」を使ってみる。

データの取得だけだけど簡単にできた。

 

 

 

 

NetBeans7.2でGoogleCodeのGitメモ

■Gitにコミットするときのauthorの変更

コミットしてGoogleCodeにPushして、見てみると更新者にwindowsのアカウントがwwこれは恥ずかしいorz

ローカルにコミットする時に、コンボボックスに直接入力して直せる。

どこか別の場所で登録するのかと思って探しちゃった。

f:id:Milankovitch:20120523211506p:plain

 

■Gitのリポジトリ削除

履歴に残ってそうなので削除することにした。

GoogleCodeのAdminister→Source→Resetで、

Your optionsの「綺麗にしたいから」を選ぶと「手間掛けて綺麗にしろ」と説教くらってリセットできない。別に良いじゃんね。

 

■Gitの処理イメージ

Gitについて調べてた時に英語版wikipediaにイメージ図が載っていて凄く分かりやすかった。

日本語版には載ってないんだよなー。

 

f:id:Milankovitch:20120523212925p:plain

 

■空のフォルダの作成方法

こんな所にあったとはorz

f:id:Milankovitch:20120523213403p:plain

 

 

 

Netbeans7.2でGoogleCodeにgit環境を作る

■初めてのgit

gitを使ってみたかったので環境を作ってみる。

参考にしたサイトはここ

GoogleCodeに作成は問題なく出来た。

続いてNetbeans

1.ローカルにgitリポジトリの作成

プロジェクトエクスプローラのプロジェクト名を右クリック→

versioning→getリポジトリの初期化

 

2.作成したgitリポジトリにソースをコミット

プロジェクトエクスプローラのプロジェクト名を右クリック→

git→コミット

 

3.GoogleCodeにpush

プロジェクトエクスプローラのプロジェクト名を右クリック→

 

git→リモート→プッシュ

 

順番的にはGoogleCode側に最初に作って、ローカルにPullするのが正しい気がするのだがやり方が分からなかったのでこれで進めてみる。

本当はgithubを使ってみたかったんだけどWindows業務プログラマーには

ssh公開鍵」なるものを持っていなかったので諦めた。

GoogleCodeが使いにくかったら次は頑張ってみようと思う。

ここ見て作れば良いじゃんって感じだけど今回はNetbeans7.2にプラグインが標準で入っていたからソレだけでやってみたかったの。