作業メモ:Seasar2 JasperReportsを使う(まずはビルドパスから)

JasperReportsを使用する機会に恵まれた為、自宅Macにて環境を整備した。

まず、情報が少ないながらも以下のエントリにて
Seasar2×JasperReports情報があった為、こちらを参考に実施可能です。
JasperReportsを利用してSAStrutsでPDF出力するサンプル - DISってHONEY♪ @gungnir_odin

さて、最低限設定が必要な部分を補足します。
1.JasperReportのデフォルト設定
・言語:Groovy→Javaへ(Groovyな方は、そのままで構いません。)
・初期ユニット:インチ→ピクセル(インチな方は、そのままで構いません。)

2.クラスパスの設定
iText、iTextAsian の jar を設定する。

3.pdf font pathの確認
iText、iTextAsian の jar を確認する。

4.Eclipseの jar 配置先
ライブラリに参考サイトにてダウンロードした jar ファイルを
「WEB/INF/lib/」配下に上記で選択した jar ファイルを配置する。

5.Eclipseのビルドパスの追加
Eclipseのプロジェクトを右クリック、プロパティ、Java のビルド・パスを選択する。
ライブラリに参考サイトにてダウンロードした jar ファイルを選択する。

後は、参考サイトにある様にPDFに日本語を出力させる様にJasperReportsの設定を行い、
Webアプリケーションから出力してみると、無事出力されている事を確認する。

ひとまず、Actionクラスから固定の文字列をPDF出力させる方法は完了。

作業メモ:Oracle DUMPファイルのインポートコマンド

ラクルのDUMPファイルをインポートする場合は、以下のコマンドにてインポートが可能。

<DUMPファイルのインポートコマンド>
imp <ユーザ名>/<パスワード> file=<インポートDUMPファイル> fromuser=<エクスポートユーザ名> touser=<インポートユーザ名> ignore=y grants=n

作業メモ:Seasar2 JDK7でgen-ddlの順序が変わってしまう原因と対応策

<原因>
 1.JDK 7を使っている
 2.基底クラスを作り、それを継承したエンティティクラスを使っている
 3.S2JDBC-Gen の gen-ddl を実行する

<参考>
 JDK7でgen-ddlを行うとソート順序が逆になってしまう
 http://seasarproject.g.hatena.ne.jp/halflite/?word=*%5BS2JDBC-Gen%5D

<対応>
 対応モジュールはコミッターさんがコミット済
 https://gist.github.com/nakamura-to/5096537

作業メモ:Oracle インストールと各種設定

Oracleをプロジェクトで使用する機会があった為、毎度躓く導入部分をまとめておく。

まずはORACLE DATABASEのインストール。
導入マシンは32ビットOSであるが、以下のサイトの手順で問題ない為、その通りインストールを行う。
http://knman.sakura.ne.jp/wordpress/?p=1167

さて、インストール後は、各種設定ファイルを修正します。
GUIでも設定は可能ですが、不要な設定までされてしまう為、ファイルを直接修正します。

■ listener.ora(静的構成)<リスナー名> =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = <論理IPアドレス>)(PORT = <ポート番号>))
)

SID_LIST_LISTENER =
(SID_LIST =
(SID_DESC =
(GLOBAL_DBNAME = <インストール時に指定したSID>)
(ORACLE_HOME = <オラクルインストールディレクトリ>)
(SID_NAME = <インストール時に指定したSID>)
)
)

■ tnsnames.ora<ネットサービス名> =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = <論理IPアドレス>)(PORT = <ポート番号>))
(CONNECT_DATA = (SID = <インストール時に指定したSID>))
)

■ 接続確認
$ sqlplus /nolog ⇛ 又は、sqlplus <ユーザ名>/<パスワード>@ネットサービス名
$ conn <ユーザ名>/<パスワード>@ネットサービス名
※ sysdba権限でアクセスしたい場合は、ネットサービス名 as sysdbaとすれば良い。

■ オラクルサービスの確認
アクセス出来ない場合は、色々問題がある為、一つづつ片付けていくこと。
まずは、ORACLEサービスが稼働していない事もある為、以下のサービスが稼働中である事を確認する。
1.オラクルデータベースサービス「OracleService
2.リスナーサービス「OracleOraDb11g-home1TNSListener」

■ リスナー状況の確認
$ lsnrctl status

結果が、unknown等であれば、設定ファイルに誤りがある為、以下のサイトで対処する。
http://www.atmarkit.co.jp/ait/articles/0906/15/news095.html

<クライアントマシンの場合>
クライアントの場合、Oracle Clientを導入し、ネットワークツールをインストールする。
その後、tnsnames.oraを該当ディレクトリに配置すれば接続可能になる。

作業メモ:Seasar2 URLパターンを使う

@ExecuteアノテーションのurlPattern属性を指定すれば良い。

<通常の場合>
 ・TestActionクラスのindexメソッドの場合
  ⇢ @Execute(validator=false)
    public String index() { }
  ⇢ /test/index

<固定URLの場合> 
 ・TestActionクラスのindexメソッドの場合(固定URLに変更)
  ⇢ @Execute(validator=false, urlPattern="kotei")
    public String index() { }
  ⇢ /test/kotei

<可変(リクエストパラメータ)の場合>
 ・TestActionクラスのindexメソッドの場合(可変URLに変更)
    public String index() { }
  ⇢ @Execute(validator=false, urlPattern="{kotei}")

 ・もう一手間
  ⇢ アクションフォームクラスに「koteiプロパティ」を用意する。
    指定された文字列を受け取ることが出来る。

リクエストパラメータを取得する為に、
アクションクラスに、アクションフォームクラスをDIしてやって、アクションフォームクラスにパラメータを指定する。

作業メモ:Seasar2 セッションの再作成方法について

作成されたセッションを破棄した後、再作成する処理が不明だった為、
色々なサイトを巡った所、以下の掲示板でのやり取りがマッチしていた事から備忘録。

最初はDIされているセッションを破棄した後、
どのタイミングでセッションが作成されるのか不明確だったが、成る程。(メモメモ

引用元:http://ml.seasar.org/archives/seasar-user/2009-May/017429.html
> @Resource
> public HttpSession httpSession;
>
> @Resource
> public HttpServletRequest httpServletRequest;
>
> UserValue userValue = (UserValue) httpSession.getAttribute("UserValue");
> httpSession.invalidate();
> httpSession = httpServletRequest.getSession();
> httpSession .setAttribute("UserValue", userValue);


引用元:http://ml.seasar.org/archives/seasar-user/2009-May/017431.html
> これは [Seasar-user:17333] と同件で,Seasar2.4.35
> 固有の問題です.
> https://www.seasar.org/issues/browse/CONTAINER-361
>
> これより前のバージョンおよび次にリリースされる
> バージョンでは発生しません.

作業メモ:iOS×AWSを試してみる(Part.1)

Android開発において、最低限の触れ合いは先月終わりを迎えた。
結局、凄まじい機種依存を叩き出し、辟易してしまったが、開発して来た事に後悔はない。

むしろ、AWS上にリポジトリを構築したり、Android開発を通じて我武者羅に突き進んできた。
結果は散々であったが、過程は満足している。

次に、私が三年前に手を出し、辞めてしまったiPhone開発に手を出してみたい。
勿論、マネジメントツールの模索は続けるが、iPhoneだって捨てがたい。
丁度開発したいものがあるので、それを試してみたい訳だ。

そして、AWSと絡めた開発がやってみたいのだ。
やりたい事は山ほどある。
ここで立ち止まるわけには、いかないのだ。

以下、参考にするエントリ。
クラウドストレージ「Amazon S3」とiPhone/iPadを直結するSDKとは (1/3):スマートフォンとクラウドをつなぐ技術カタログ(3) - @IT