2009年05月08日

久しぶりの更新です。

コードなにがしSAStruts(Super Agile Struts)あれこれ

「2-3 会員かどうか判断しよう」
「2-8 国際的なアプリケーションを作ろう」
を追記しました。本当に久しぶりになってしまいました。

ちょっと色々と立て込んでいるので、第三章の作成も遅くなってしまうかもしれませんが、粛々と進めていくつもりです。
posted by 台北猫々 at 22:50| Comment(1) | TrackBack(0) | 技術メモ(SAStruts)

2009年02月11日

BlazeDSの「Flex Messaging Service」を体験しましょう

コードなにがしにBlazeDSの「Flex Messaging Service」を体験しましょうを投稿しました。

「Flex Messaging Service」は、Pub / Subモデルのメッセージサービスですが、要はあるFlexクライアントからサーバーを仲介して、別のFlexクライアントへメッセージ(データ)をプッシュできるというものですが、非常に手軽に実装できます。

ずいぶん簡単にできるので、なんか楽しいです。
posted by 台北猫々 at 22:31| Comment(0) | TrackBack(1) | 技術メモ(SAStruts)

2009年02月10日

Adobe Flex+S2BlazeDS+S2JDBCってすごいかも

昨日に引き続き、「Adobe Flex+S2BlazeDS+S2JDBC」の組み合わせでサンプルを作成していますが、HTTPServiceでやりとりするのに比べて圧倒的に製造量が少なくなりますね。

SeasarとBlazeDS、これは足し算ではなく掛け算ですね。
(y^^y)
posted by 台北猫々 at 23:31| Comment(0) | TrackBack(0) | 技術メモ(SAStruts)

2009年02月09日

Adobe Flex+S2BlazeDS+S2JDBC

Flex Builder3の試用期限があと6日間と迫ってきました。
残りの期間は、BlazeDSを試してみたいと思います。

コードなにがしの「Adobe Flex+S2BlazeDS+S2JDBC」に少しずつ投稿始めましたよ〜

まだ、始めたばかりですが、BlazeDSを使いやすくするSeasarプロジェクトの「S2BlazeDS」は、結構ゴキゲンなプロダクトな予感がします。
posted by 台北猫々 at 21:44| Comment(0) | TrackBack(0) | 技術メモ(SAStruts)

2009年02月04日

SAStrutsとAdobe Flex

CODEなにがしの「SAStrutsとAdobe Flex」に粛々と記事を追加しています。

Flex Builder3の試用期間があと11日間ほどで終了するので、少し急いでアップしています。

グリッドコントロール(DataGridColumn)とコンボボックス(ComboBox)とか、グリッドコントロール(DataGridColumn)とコンボボックス(CheckBox)の組み合わせのサンプルを記載していますので、ご覧あれ〜
posted by 台北猫々 at 20:34| Comment(0) | TrackBack(0) | 技術メモ(SAStruts)

2009年01月29日

JAXB2でBOM付きのXMLをWebクライアントへ出力

SAStruts→FlexへXMLを送信すると、Flexで↓のエラーが出る場合があります(不定期:3回に1回ぐらい)。
====================================================
HTTPService失敗
理由 : faultCode:Client.CouldNotDecode faultString:'Error #1088: ルートエレメントに続くドキュメントのマークアップは整形式でなければなりません。' faultDetail:'null'
====================================================
どうすりゃいいのよ?と思って色々調べてみると、XMLにBOMを付けると良いような情報があったので、実際にやってみると確かにエラーが起きなくなりました。

しかし、たまにエラーになるって・・・どういう処理をしているんだろう?っていうかバグ?

一応、BOMをつける方法を↓に書いておきます。

※clazzは、XML変換対象のクラス情報
 objは、XML変換対象のクラスのオブジェクト

HttpServletResponse httpServletResponse = ResponseUtil.getResponse();
httpServletResponse.setContentType("application/xml");
httpServletResponse.setCharacterEncoding("UTF-8");

// POJO -> XML 変換を行うマーシャラを生成
// clazzクラスをバインディングするコンテキストを生成
JAXBContext context = JAXBContext.newInstance(clazz);
Marshaller ma = context.createMarshaller();
ma.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, Boolean.TRUE);
//ma.setProperty(Marshaller.JAXB_ENCODING , "UTF-8");

// POJO -> XML 変換して送信
OutputStream out = httpServletResponse.getOutputStream();

//BOMを付加します。
byte[] bom = {(byte)0xEF, (byte)0xBB, (byte)0xBF};
out.write(bom);

//XMLデータ本体を送信します。
ma.marshal(obj, out);

out.flush();
out.close();


posted by 台北猫々 at 20:06| Comment(0) | TrackBack(2) | 技術メモ(SAStruts)

2009年01月21日

Flexでファイルアップロードしましょう

コードなにがしに「Flexでファイルアップロードしましょう」をアップしました。

Flexってローカルディスクにアクセスできないと思っていたので、アップロードとかダウンロードはどうするんだろう?と思いましたが、できるんですね。

flash.net.FileReference
という便利クラスが用意されていました。
posted by 台北猫々 at 23:05| Comment(0) | TrackBack(0) | 技術メモ(SAStruts)

2009年01月10日

今日から

Flex + SAStrutsネタをコードなにがしの「SAStruts(Super Agile Struts)あれこれ」にアップ始めました。

posted by 台北猫々 at 21:41| Comment(0) | TrackBack(0) | 技術メモ(SAStruts)

2008年12月17日

Flex+ SAStruts

AdobeのFlex3を勉強しようかと思い立ちました。

こういうご時勢なのでRIA技術を1つはおさえとかないといけないかなぁと思いまして、やはりRIAの有力候補はFlex3だろうということで、あとサーバサイドとしてはこの所調査を進めていたSAStrutsを選びました。

SilverLightはちょっと、出遅れかな?と、JavaFXはもっと出遅れかな?ということもあります。

で、開発環境なのですが「Flex+ SAStruts」となるとFlex Builder3が良さそうですね(EclipseベースなのでDoltengプラグインも使えます)。ただ、、、高いですね。Standard Editionで3万円ぐらいです。とりあえず60日間体験版で頑張ろうと思います。

なんか、Eclipseベースで作ったんだから、もっと安くならないのかね?という思いもあったりして。無償で配布した方が、Flexが普及すると思うのですがね。
posted by 台北猫々 at 20:50| Comment(0) | TrackBack(0) | 技術メモ(SAStruts)

2008年12月16日

S2JDBCのタイプセーフ感想

とりあえず、私はとても気に入っています。

タイプセーフは、SQLを「使える」人間が更に生産効率を上げるために使うものですね。「使える」人間にとっては、とても強力なツールになると思います。業務システムの中で定型的(複雑ではないが数が多かったりして、書くのが面倒)なSQLを記述する手間が相当軽減されると思います。

#SQLを記述するのにEclipseの入力支援を受けれるので。

もちろん、集計処理や複雑な検索処理(自己結合したり、UNION使ったりとか)の場合は、SQLを直書き・直打ちすることになると思いますが、それでも全体の半分以上のSQLでタイプセーフの恩恵を受けることができると思います。
posted by 台北猫々 at 18:49| Comment(0) | TrackBack(0) | 技術メモ(SAStruts)

2008年12月03日

新章スタート〜S2JDBCのタイプセーフ編

コードなにがしの「SAStruts(Super Agile Struts)あれこれ」に新しく「もっと、S2JDBCでデータベースと戯れましょう」を始めました。

ここでは、S2JDBCのタイプセーフを中心に取り扱っていきたいと思います。

一応、OracleMasterでデータベースエンジニャーな私としては、SQLを隠蔽するのは好きではないのですが、まあともあれ試してみようかなと思っています。

#いつのまにやら、「SAStruts(Super Agile Struts)あれこれ」のアクセス数が10000を突破しました。
#ちょっと大台に乗った感が良いですね。
posted by 台北猫々 at 21:14| Comment(0) | TrackBack(0) | 技術メモ(SAStruts)

2008年10月31日

補完しました〜

昨日書いた、SAStrutsチュートリアルの補完を行いました。

コードなにがしの「SAStruts(Super Agile Struts)あれこれ」に「S2JDBCでデータベースと戯れましょう。の準備です。」を追加しました。

無くなってしまった「データベースを使ったサンプル」を構築するための方法を記載しました(HSQLDBによるデータベース構築など)。
posted by 台北猫々 at 23:46| Comment(0) | TrackBack(0) | 技術メモ(SAStruts)

2008年10月30日

SAStrutsの1.0.4-sp2がリリース

されましたが、チュートリアルの中身を見るとデータベースアクセスのサンプルが無くなっています!

あれ?って思って、1.0.4-sp1のチュートリアルを見ても無いではありませか、多分Doltengの導入に伴うものでしょうが、私が投稿しているコードなにがしの「SAStruts(Super Agile Struts)あれこれ」の「S2JDBCでデータベースと戯れましょう。(ベースはチュートリアルです) 」が成立しなくなってしまいます(^^;

困ったものなので、近日中に補完したいと思います。
posted by 台北猫々 at 21:24| Comment(0) | TrackBack(0) | 技術メモ(SAStruts)

2008年09月17日

SAStrutsによるWebアプリケーションスーパーサンプル

Struts開発時にとても参考になる「StrutsによるWebアプリケーションスーパーサンプル第2版」(ソフトバンククリエイティブ)のサンプルをSAStrutsで開発したらどうなるか、やってみようと思います。

ということで、コードなにがしに投稿し始めましたが、これは相当パワーが必要であることがすぐにわかりました。。。

posted by 台北猫々 at 21:50| Comment(2) | TrackBack(1) | 技術メモ(SAStruts)

2008年09月14日

複数Employee一括登録フォームのバリデーション(SAStruts+S2JDBC)

コードなにがしに、「複数Employee一括登録フォームのバリデーション」を追加しました。

概要はこんな感じなのですが、
blk_add_vali_1.jpg

具体的には、以下のような複数レコードの一括登録機能で、入力値エラーが複数のレコードにある場合に、
blk_add_vali_2.jpg

↓のようにそれぞれのテキストボックスを色つきにします。
blk_add_vali_3.jpg
posted by 台北猫々 at 20:39| Comment(0) | TrackBack(0) | 技術メモ(SAStruts)

2008年09月09日

MySQLからS2JDBC-Genで各種クラスを自動生成しましょう(Eclipse編)

コードなにがしにもアップしていますが、こちらにもアップしちゃいます。Eclipse+Dolteng+S2JDBC-Genは、SAStrutsでの開発を強力にサポートします。


目次


●序
●造
1.DoltengプラグインでEclipseプロジェクト"s2jdbc-gen-examples"を作成します。
2.MySQL Connector/J (JDBCドライバ)を配置
3.S2JDBC用のDICONファイルを作成
 s2jdbc.dicon
 jdbc.dicon
4.S2JDBC-Gen実行
●考
●おまけ的




今回はDolteng+S2JDBC-Genで、各種クラス(Entity, Service, Condition, Test)ソースの自動生成を試してみます。

ここでは、EclipseのAnt機能を使用します。

データベースはMySQLのインストール後の設定で構築したMySQL環境を使用します。

エンティティクラスの生成も併せて参考にして下さい。

前提:Doltengプラグインは、バージョン0.32.0以上であること。当バージョン未満では、S2JDBC-Gen関係のファイルが生成されません。




1.DoltengプラグインでEclipseプロジェクト"s2jdbc-gen-examples"を作成します。


設定項目を以下のようにして作成しましょう。
gen_eclipse1_1.jpg

この時点で、S2JDBC-GenおよびS2JDBC-Genが使用するJarファイルが"s2jdbc-gen-examples\lib"フォルダにコピーされ、また、S2JDBC-Gen用のAntビルドファイルが"s2jdbc-gen-examples\s2jdbc-gen-build.xml"としてコピーされます。

2.MySQL Connector/J (JDBCドライバ)を配置


S2JDBC-GenがEntityクラスを自動生成する際には、MySQLデータベースに接続してカタログ情報を取得します。なので、実行時にはJDBCドライバが必要になります。

環境・必要なモジュール準備でダウンロードした"mysql-connector-java-5.1.6-bin.jar"を
"s2jdbc-gen-examples\src\main\webapp\WEB-INF\lib"フォルダにコピーします。


チェック!1.、2.を行うと以下のようなフォルダ/ファイル配置になります。
gen_eclipse1_2.jpg

3.S2JDBC用のDICONファイルを作成


"s2jdbc-gen-examples\src\main\resources\s2jdbc.dicon"を以下の内容に変更します。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"

"http://www.seasar.org/dtd/components24.dtd">
<components>
<include path="jdbc.dicon"/>
<include path="s2jdbc-internal.dicon"/>
<component name="jdbcManager" class="org.seasar.extension.jdbc.manager.JdbcManagerImpl">

<property name="maxRows">0</property>
<property name="fetchSize">0</property>
<property name="queryTimeout">0</property>

<property name="dialect">mysqlDialect</property>
</component>
</components>


"s2jdbc-gen-examples\src\main\resources\jdbc.dicon"を以下の内容に変更します。

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
"http://www.seasar.org/dtd/components24.dtd">
<components namespace="jdbc">
<include path="jta.dicon"/>
<component name="xaDataSource"

class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
<property name="driverClassName">
"com.mysql.jdbc.Driver"
</property>
<property name="URL">

"jdbc:mysql://localhost:3306/sastruts"
</property>
<property name="user">"sastruts"</property>
<property name="password">"sastruts"</property>

</component>

<component name="connectionPool"
class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
<property name="timeout">600</property>

<property name="maxPoolSize">10</property>
<property name="allowLocalTx">true</property>
<destroyMethod name="close"/>

</component>



<component name="DataSource"
class="org.seasar.extension.dbcp.impl.DataSourceImpl"
/>
</components>



4.S2JDBC-Gen実行


S2JDBC-Genマニュアル:Antタスクの実行を参考にして以下のように作業を進めます。

"s2jdbc-gen-examples\s2jdbc-gen-build.xml"ファイルをEclipseのAntエディタで開き、Eclipseメニューから「Run」-「外部ツール」-「外部ツールダイアログを開く」を選択します。外部ツールダイアログが開きます。

gen_eclipse1_3.jpg

左側のメニューにある「Antビルド」という項目をダブルクリックすると、s2jdbc-gen-build.xmlに対する起動設定が新規作成されます。その後、引数に"gen-entity"を指定します。


※できない場合は、手動で新規作成しましょう。

gen_eclipse1_4.jpg

実行ボタンをクリックしましょう。ずらずらとコンソールに生成処理のログを出力されます。最終的に、

〜〜〜〜
[gen-service] DEBUG 2008-09-09 18:48:06,875 [main] S2Containerを作成しました。path=jdbc.dicon
[gen-service] DEBUG 2008-09-09 18:48:06,875 [main] S2Containerを作成します。path=s2jdbc-internal.dicon
[gen-service] DEBUG 2008-09-09 18:48:06,875 [main] S2Containerを作成します。path=convention.dicon
[gen-service] DEBUG 2008-09-09 18:48:06,890 [main] S2Containerを作成しました。path=convention.dicon
[gen-service] DEBUG 2008-09-09 18:48:06,890 [main] S2Containerを作成しました。path=s2jdbc-internal.dicon
[gen-service] DEBUG 2008-09-09 18:48:06,921 [main] S2Containerを作成しました。path=s2jdbc.dicon
[gen-service] INFO 2008-09-09 18:48:07,031 [main] Running on [ENV]ut, [DEPLOY MODE]Warm Deploy
[gen-service] DEBUG 2008-09-09 18:48:07,125 [main] コマンド(org.seasar.extension.jdbc.gen.internal.command.GenerateServiceCommand)を実行しました。
BUILD SUCCESSFUL
Total time: 7 seconds

と表示されればOKです。

生成したファイルは、Eclipseのパッケージエクスプローラービューにすぐに表示されませんので、パッケージエクスプローラービュー中のプロジェクトフォルダを左クリックしてF5キー(更新)を押し、ファイルシステムと同期させましょう。そうすると、パッケージエクスプローラービューに生成したファイルが表示されます。

以下のように各種クラス(Entity, Service, Condition, Test)のソースが生成されます。
gen_eclipse1_5.jpg


う〜ん。これはハイパー簡単ですね。さらにDoltengでここでの手順を自動的に出来てしまうと、なお良いというのは贅沢でしょうか?

おまけ的


今回、初めてAntツールを使っているわけなのですが、こんな便利なコマンドがあるのですね。ビルドファイル内に記述すると、環境変数のリストがコンソールに表示されます。
<echoproperties/>

posted by 台北猫々 at 19:11| Comment(0) | TrackBack(0) | 技術メモ(SAStruts)

2008年09月06日

SAStruts+Ajax(jquery.js)でXMLデータを取得しましょう

「コードなにがし」にもアップしていますが、SAStruts+Ajax(jquery.js)でXMLデータ取得してみましょう。

SAStrutsのチュートリアルプロジェクト(Eclipse)を元にして改造しています。


目次


●序
●造
 アクションクラス
  sa-struts-tutorial\src\main\java\tutorial\action\AjaxAction.java (変更)
JSP
  sa-struts-tutorial\webapp\WEB-INF\view\ajax\index.jsp (変更)
●結




SAStruts+Ajax+jQueryを試してみましょう。

ここでは、jQueryのAjax機能を使用してアクションクラスを呼び出し、レスポンスとして返されるXMLデータをパースして表示しましょう。

ここでは、例を単純にするためにアクションフォームを使用しません。




アクションクラス


"sa-struts-tutorial\src\main\java\tutorial\action\AjaxAction.java"を以下のように変更します。

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServletResponse;
import org.seasar.struts.annotation.Execute;
import org.seasar.struts.util.ResponseUtil;

public class AjaxAction {

@Execute(validator = false)
public String index() {
return "index.jsp";
}

@Execute(validator = false)
public String load_xml() throws IOException {
//XMLデータを返却します。
HttpServletResponse httpServletResponse = ResponseUtil.getResponse();
httpServletResponse.setContentType("application/xml");
PrintWriter sendPoint = new PrintWriter(httpServletResponse.getOutputStream());
sendPoint.println("<?xml version='1.0' encoding='UTF-8' ?>");
sendPoint.println("<employees>");
sendPoint.println(" <employee>");
sendPoint.println(" <id>1</id>");
sendPoint.println(" <name>ALLEN</name>");
sendPoint.println(" </employee>");
sendPoint.println(" <employee>");
sendPoint.println(" <id>2</id>");
sendPoint.println(" <name>WARD</name>");
sendPoint.println(" </employee>");
sendPoint.println("</employees>");
sendPoint.flush();
sendPoint.close();
return null;
}
}



JSP


"sa-struts-tutorial\webapp\WEB-INF\view\ajax\index.jsp"を以下の内容に変更します。

<%@page pageEncoding="UTF-8"%>
<html>
<head>

<title>Tutorial: Ajax</title>
<link rel="stylesheet" type="text/css" href="${f:url('/css/sa.css')}" />
<script src="${f:url('/js/jquery.js')}"></script>

</head>
<body>
<h1>Tutorial: Ajax</h1>

<script type="text/javascript">
function loadXML() {
$.ajax({
url: '${f:url('/ajax/load_xml')}',
type: 'GET',
dataType: 'xml', //レスポンスのデータ形式
timeout: 1000,
cache: false, //ブラウザにキャッシュさせません。
error: function(){ //例外時のコールバック関数
alert("xmlファイルの読み込みに失敗しました");
},
success: function(xml){
$(xml).find("employee").find("name").each(function(){
var item_text = $(this).text();
alert(item_text)
});
}
});
}

</script>
<input type="button" value="hello" onclick="loadXML()"/>
</body>
</html>





http://localhost:8080/sa-struts-tutorial/ajax/にアクセスしましょう。以下の画面が表示されますので、「Hello」ボタンをクリックしましょう。
ポップアップで、従業員名が表示されます。

posted by 台北猫々 at 19:54| Comment(0) | TrackBack(0) | 技術メモ(SAStruts)

2008年09月04日

MySQLからS2JDBC-GenでEntityを自動生成しましょう(コマンドライン編)


目次


●序
●造
1.Apache-Antをダウンロード&セットアップ
2.S2JDBC-GenやSeasar2(S2JDBC)のJARファイルをダウンロード&セットアップ
3.MySQL Connector/J (JDBCドライバ)を配置
4.Seasar2とS2JDBC用のDICONファイルを作成
 convention.dicon
 s2jdbc.dicon
 jdbc.dicon
5.ビルドコンフィグファイル作成
6.Entityクラスの自動生成
●結
●おまけ的
フォルダ/ファイル構成




コードなにがしにもアップしていますが、
S2JDBC-GenのEntityクラスの自動生成機能を試してみます。

EclipseのAnt機能でも生成可能なのですが、ここではコマンドラインでAntコマンドを使用する方法で行います。

データベースはMySQLのインストール後の設定で構築したMySQL環境を使用します。

エンティティクラスの生成も併せて参考にして下さい。




1.Apache-Antをダウンロード&セットアップ


こちらからApache-Antをダウンロードします(本稿執筆時2008.09.03の最新はapache-ant-1.7.1-bin.zipです)。

apache-ant-1.7.1-bin.zipを解凍して出来た、apache-ant-1.7.1フォルダを任意の場所に移動します。本稿ではC:\usr\localに移動します。

PATHに"C:\usr\local\apache-ant-1.7.1\bin"を追加します。

2.S2JDBC-GenやSeasar2(S2JDBC)のJARファイルをダウンロード&セットアップ


作業ディレクトリ作成


以下のフォルダを作成します。
C:\usr\local\s2jdbc
C:\usr\local\s2jdbc\lib
C:\usr\local\s2jdbc\conf



S2JDBC-GenのJARファイル


こちらからS2JDBC-Gen(本稿執筆時2008.09.03の最新はS2JDBC-Gen 
0.9.0です)をダウンロードしましょう。

ダウンロードしたファイルを任意の場所で解凍して、
生成した"s2jdbc-gen\lib"配下にあるJARファイルを、
"C:\usr\local\s2jdbc\lib"フォルダにコピーします。


Seasar2(S2JDBC)のJARファイル



本当はSeasar2セットアップに従って、必要なモジュールをセットアップする
のですが、ここではサボっちゃいます。

こちらからS2JDBCのチュートリアル(本稿執筆時2008.09.03の最新
はS2JDBC Tutorial 2.4.28です)をダウンロードしましょう。
ダウンロードしたファイルを任意の場所で解凍して、生成した
"s2jdbc-tutorial\lib"配下にあるJARファイルを、"C:\usr\local\s2jdbc\lib"フォルダにコピーします。


3.MySQL Connector/J (JDBCドライバ)を配置


S2JDBC-GenがEntityクラスを自動生成する際には、MySQLデータベースに接続してカタログ情報を取得します。なので、実行時にはJDBCドライバが必要になります。

環境・必要なモジュール準備でダウンロードした"mysql-connector-java-5.1.6-bin.jar"を"C:\usr\local\s2jdbc\lib"フォルダにコピーします。

4.Seasar2とS2JDBC用のDICONファイルを作成


"C:\usr\local\s2jdbc\conf\convention.dicon"を以下の内容で作成します。

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
"http://www.seasar.org/dtd/components24.dtd">
<components>
<component class="org.seasar.framework.convention.impl.NamingConventionImpl">
<initMethod name="addRootPackageName">
<arg>""</arg>

</initMethod>
</component>
<component class="org.seasar.framework.convention.impl.PersistenceConventionImpl"/>
</components>

"C:\usr\local\s2jdbc\conf\s2jdbc.dicon"を以下の内容で作成します。


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
"http://www.seasar.org/dtd/components24.dtd">
<components>
<include path="jdbc.dicon"/>

<include path="s2jdbc-internal.dicon"/>
<component name="jdbcManager" class="org.seasar.extension.jdbc.manager.JdbcManagerImpl">
<property name="maxRows">0</property>

<property name="fetchSize">0</property>
<property name="queryTimeout">0</property>
<property name="dialect">mysqlDialect</property>

</component>
</components>

"C:\usr\local\s2jdbc\conf\jdbc.dicon"を以下の内容で作成します。

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
"http://www.seasar.org/dtd/components24.dtd">
<components namespace="jdbc">
<include path="jta.dicon"/>
<component name="xaDataSource"

class="org.seasar.extension.dbcp.impl.XADataSourceImpl">
<property name="driverClassName">
"com.mysql.jdbc.Driver"
</property>
<property name="URL">

"jdbc:mysql://localhost:3306/sastruts"
</property>
<property name="user">"sastruts"</property>
<property name="password">"sastruts"</property>

</component>

<component name="connectionPool"
class="org.seasar.extension.dbcp.impl.ConnectionPoolImpl">
<property name="timeout">600</property>

<property name="maxPoolSize">10</property>
<property name="allowLocalTx">true</property>
<destroyMethod name="close"/>

</component>



<component name="DataSource"
class="org.seasar.extension.dbcp.impl.DataSourceImpl"
/>
</components>



5.ビルドコンフィグファイル作成


"C:\usr\local\s2jdbc\s2jdbc-gen-build.xml"を以下の内容で作成します。

<?xml version="1.0"?>
<project name="sample" default="gen-entity" basedir=".">

<path id="classpath">
<fileset dir="lib"/>
</path>
<taskdef resource="s2jdbc-gen-task.properties" classpathref="classpath"/>

<target name="gen-entity">
<gen-entity
rootpackagename="mysql"
classpathref="classpath"
classpath="conf"
overwrite="true"

/>
</target>
</project>


6.Entityクラスの自動生成


Windowsのコマンドプロンプトを起動して、"C:\usr\local\s2jdbc"にチェンジディレクトリ(移動)して、以下のコマンドを実行します。


ant -f s2jdbc-gen-build.xml gen-entity

以下のような表示がされ、"src/main/mysql/entity"フォルダにエンティティクラスファイルが生成されます。

C:\usr\local\s2jdbc>ant -f s2jdbc-gen-build.xml gen-entity
Unable to locate tools.jar. Expected to find it in C:\Program Files\Java\jre1.6.
0_07\lib\tools.jar
Buildfile: s2jdbc-gen-build.xml

gen-entity:

BUILD SUCCESSFUL
Total time: 3 seconds

"Unable to locate tools.jar."というメッセージは、JREのjavaコマンドを使用しているために出力されているだけなので、ここでは問題ないので無視して構いません。"tools.jar"は、JDKに同梱されています(C:\Program Files\Java\jdk1.6.0_07\libなどにあります)。antは開発環境で使用されることを前提としているためでしょうか?


以下の3つのエンティティクラスファイルが生成されます。

src/main/mysql/entity/Address.java
src/main/mysql/entity/Department.java
src/main/mysql/entity/Employee.java

中を見ると↓のようにテーブル結合のアノテートもされています。

Employee.java抜粋

/** addressIdプロパティ */
@Column(precision = 10, nullable = true, unique = false)
public Integer addressId;

/** address関連プロパティ */
@ManyToOne
public Address address;


おまけ的


フォルダ/ファイル構成


作業しているフォルダ/ファイルの構成は、以下のようになります。
srcフォルダ配下が生成されたエンティティクラスファイルです。

─────────────────────────────────────
C:\usr\local\s2jdbc
s2jdbc < Dir >
├ conf < Dir >

│ ├ convention.dicon 442 2008/09/03 14:37:57
│ ├ jdbc.dicon 1,306 2008/09/03 10:29:28
│ └ s2jdbc.dicon 542 2008/09/03 13:52:31
├ lib < Dir >
│ ├ ant-1.7.0.jar 1,289,806 2008/09/02 17:58:48
│ ├ aopalliance-1.0.jar 4,467 2008/06/26 23:53:12
│ ├ commons-logging-1.1.jar 52,915 2008/06/26 23:54:08
│ ├ freemarker-2.3.13.jar 870,292 2008/09/02 17:58:44
│ ├ geronimo-annotation_1.0_spec-1.0.jar 12,085 2008/06/26 23:53:50
│ ├ geronimo-ejb_3.0_spec-1.0.jar 31,752 2008/06/26 23:54:14
│ ├ geronimo-interceptor_3.0_spec-1.0.jar 8,954 2008/06/26 23:54:14
│ ├ geronimo-jpa_3.0_spec-1.0.jar 52,555 2008/06/26 23:54:00
│ ├ geronimo-jta_1.1_spec-1.0.jar 14,972 2008/06/26 23:54:04
│ ├ geronimo-jta_1.1_spec-1.0-tsr.jar 7,329 2008/06/26 23:54:08
│ ├ hsqldb-1.8.0.1.jar 625,096 2008/06/26 23:54:02
│ ├ javassist-3.4.ga.jar 471,005 2008/06/26 23:54:12
│ ├ junit-3.8.2.jar 120,640 2008/06/26 23:54:12
│ ├ log4j-1.2.13.jar 358,180 2008/06/26 23:54:10
│ ├ mysql-connector-java-5.1.6-bin.jar 703,265 2008/03/05 17:27:00
│ ├ ognl-2.6.9-patch-20070908.jar 166,995 2008/06/26 23:54:00
│ ├ poi-3.0-FINAL.jar 1,767,938 2008/06/26 23:53:56
│ ├ s2-extension-2.4.28.jar 385,584 2008/08/26 16:50:36
│ ├ s2-framework-2.4.28.jar 654,191 2008/08/26 17:34:36
│ ├ s2jdbc-gen-0.9.0.jar 366,917 2008/09/02 19:41:58
│ ├ s2-tiger-2.4.28.jar 569,177 2008/08/26 17:34:36
│ └ servlet-api.jar 97,703 2008/06/26 23:54:08
├ src < Dir >
│ └ main < Dir >
│ └ java < Dir >
│ └ mysql < Dir >

│ └ entity < Dir >
│ ├ Address.java 743 2008/09/04 09:03:35
│ ├ Department.java 752 2008/09/04 09:03:35
│ └ Employee.java 1,300 2008/09/04 09:03:35
└ s2jdbc-gen-build.xml 447 2008/09/04 08:53:57
─────────────────────────────────────
posted by 台北猫々 at 23:07| Comment(0) | TrackBack(0) | 技術メモ(SAStruts)