ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

SeasarコミュのS2Dao にSeasar2 は必要なのでしょうか

  • mixiチェック
  • このエントリーをはてなブックマークに追加
はじめまして、みなさん。今日こちらの
コミュニティに参加させていただきました。

Seasar暦は・・・独学で3日ほどです。
いまだに動作画面を見たことがありません。
公式サイトを参考にしながらやっていましたが、ほかにも
いろいろなプロジェクトがあるようで、実はs2daoだけで
は動かないのか!?とも思ったりしています。

せっかくの国産なのに、書籍や紹介サイトが極端に
少ないのが大変残念です。

もしよろしければ、とりあえずS2DAOを動かすまでの
参考サイトがあれば教えていただけないでしょうか?
公式サイトをまねたのですが動きもせず。。。
よろしくお願いいたします。

コメント(15)

答えになっていないかもしれませんが、私は「Seasar入門 はじめてのDI&AOP」を読んで動作させました。

また、Seasar2はベースなので、これがないと何とも動きようがないのでは?と思うのですが...
S2のJAR

s2-framework-2.4.13.jar
s2-extension-2.4.13.jar
s2-tiger-2.4.13.jar
s2-dao-1.0.43.jar
s2-dao-tiger-1.0.43.jar

その他依存JAR
aopalliance-1.0.jar
commons-logging-1.1.jar
javassist-3.4.ga.jar
junit-3.8.1.jar
ognl-2.6.7.jar
poi-2.5.1-final-20040804.jar

ってとこですかね。

でもお勧めはDoltengというEclipseプラグインを入れて、S2DaoOnlyで作るか、ためしにSuperAgileでTeedaも触ってみるとかもいいかもしれません。

あとはmaven2を使ってみるのもひとつの方法ですね。
S2DaoはAOPを利用してクラスを自動生成してDBアクセスを行うという特徴がありますので、DI×AOPコンテナであるSeasar2が必要となります。

また、Seasar2にはアスペクト・トランザクション機能等も備わっていますので、S2Daoはそれを使っています。

で、直接的な回答ではないのですが、、、、

私はS2Daoのexampleから動かしました。
#今はS2Daoの圧縮ファイルの中にexampleがありますね。

strさんが仰られているように、Doltengを入れてS2DaoOnlyで作るとS2Daoを利用するための雛形が作成されるはずなので、exampleを参考にしつつ、少しずつ理解を深めていかれるのがよろしいのではないかと思います。

また、こうしてみたけど動かなかった、分からない等あればここに書いて頂ければ返事出来ますので、遠慮なく仰っていただければと思います。
びーのすけ さん、strさん、きせのんさん
情報ありがとうございました。
仕事はvbということで、家で独学してるのですが・・・
まったく考え方が違う言語なだけに、いっつもつまづいてしまいます。

strutsは情報がたくさんあるので難なく動かせたのですが。

で、今seasarのサンプルを動かすことに成功しましt。
s2daoのzipファイルの中にs2Seasarのlibも含まれてるのですね。サンプルを参考にしつつやってみます。

またわからないことがあったら宜しくお願いいたします
やっぱり参考にして作っても動いてくれないです。。。。
どうしてかまったくわからないので、アドバイスいただけないでしょうか?

Eclipse3.2 で作ってます
ライブラリもクラスパスに通しています。

Exception in thread "main" java.lang.NoClassDefFoundError: ognl/PropertyAccessor
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at org.seasar.framework.container.factory.ComponentsTagHandler.class$(ComponentsTagHandler.java:33)
at org.seasar.framework.container.factory.ComponentsTagHandler.<init>(ComponentsTagHandler.java:33)
at org.seasar.framework.container.factory.S2ContainerTagHandlerRule.<init>(S2ContainerTagHandlerRule.java:29)
at org.seasar.framework.container.factory.XmlS2ContainerBuilder.<init>(XmlS2ContainerBuilder.java:47)
at org.seasar.framework.container.factory.S2ContainerFactory.configure(S2ContainerFactory.java:100)
at org.seasar.framework.container.factory.S2ContainerFactory.configure(S2ContainerFactory.java:88)
at org.seasar.framework.container.factory.S2ContainerFactory.<clinit>(S2ContainerFactory.java:59)
at test.test.main(test.java:17)

というエラーです。

dao.dicon --------------------------------------
<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container//EN"
"http://www.seasar.org/dtd/components.dtd">
<components namespace="dao">
<include path="j2ee.dicon"/>
<component
class="org.seasar.dao.impl.DaoMetaDataFactoryImpl"/>
<component name="interceptor"
class="org.seasar.dao.interceptors.S2DaoInterceptor"/>
</components>

j2ee.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/maindb?useUnicode=true&characterEncoding=SJIS"
</property>
<property name="user">"root"</property>
<property name="password">"0720"</property>
</component>


sys.dicon --------------------------------------
<components>
<include path="dao.dicon"/>
<component class="test.LoginFormDao">
<aspect>dao.interceptor</aspect>
</component>
</components>

フォルダ構成も画像を載せてみました。
正直落ち込んでしまいました・・・ orz

ご教授お願いいたします。
例外のスタックトレースを読む限り、ognlのjarにパスが通されていないような気がしますが、いかがでしょうか?
すみません、お使いのSeasar2のバージョンも併せて教えてください(汗
きせのんさん>
-2.3.18. みたいです。
s2daoのzipにふくまれているみたいなんで、特に他のファイルなどはダウンロードしてませんが。たりないのでしょうか・・
カリ★コロさん

やはり2.3系でしたか。
結論から先に書きますと、Seasar2 2.3系でも最新バージョンのS2Daoを動作させる事は可能です。
S2Daoのzipの中にあるものだけでやってみました。
(会社でちょっとしたサンプルを作って見ました)

で、dao.diconについてですが、現行のS2Dao1.0.43は内部でdao.diconを持つようになっていますので、明示的に定義する必要は無いので、削除していただいても構いません。

j2ee.diconについてですが、記述している内容は恐らく問題無いと思いますが、他に定義する内容があります(トランザクションとか)ので、S2Daoのアーカイブファイルに含まれているj2ee.diconの内容をコピーしてお使いの環境に合わせてDB接続情報を変更した方がよいと思います。

具体的にどうするのかと言いますと、アーカイブファイルに含まれているj2ee.diconはデフォルトでHSQL DBへの接続情報が有効になっていますので、その部分をコメントアウトして、MySQLの接続情報のコメントアウトを外してお使いの環境に変更してください。

ちなみに、j2ee.diconはs2-dao-1.0.43\s2dao\resourcesにありますので、すぐ見つけられると思います。


HSQLへの接続情報は60〜75行目で、MySQLへの接続情報は169〜180行目にありますので、見ていただくとお分かりになると思います。

後はOGNLのクラスパスを通せば問題ないと思いますので、いかがでしょうか。
>カリ★コロさん

きせのんさんの書いている通り、まずはクラスパスと設定ファイルを確認することをお勧めします。以下のファイル全て、クラスパスに追加していますか?

aopalliance-1.0.jar
commons-logging-1.0.4.jar
geronimo-j2ee_1.4_spec-1.0.jar
geronimo-jta_1.0.1B_spec-1.0.jar
javassist-3.4.ga.jar
log4j-1.2.8.jar
ognl-2.6.5.jar
s2-dao-1.0.43.jar
s2-extension-2.3.18.jar
s2-framework-2.3.18.jar
mysql-connector-java-5.0.6-bin.jar

あとはきせのんさんが書いているようにmysql用のJDBCドライバの設定をj2ee.diconで有効にしてください。
きせのんさん、 JUNDU さん

アドバイスありがとうございます。
ognl-2.6.5.jar  についてはクラスパスから抜けてましたあせあせ(飛び散る汗)

無事そのエラーは回避できました。ありがとうございます。
また新たな問題が発生してきたのですが、どうやらXMLのコメントの整合性がとれてないことまでわかりました。XMLエディタで開いたらエラーだらけ。。。修正したらなんと動きました。。。でも落ちました orz
あと一息でいけそうです。

dao.diconについては内部的にもってあると記述がありました。
ありがとうございます。j2ee.diconについてはファイルだけ作ってあげればdao.diconが読み込むのでしょうか・・・

<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE components PUBLIC "-//SEASAR2.1//DTD S2Container//EN"
"http://www.seasar.org/dtd/components21.dtd">
<components namespace="sys">
<include path="dao.dicon"/>
<component name="LoginFormDao" class="test.LoginFormDao">
<aspect>interceptor</aspect>
</component>
</components>


と記入してみました。
jarの中身をみたらDAO.dicon みつけました。
j2ee.dicon 読み込んでました。お手数おかけしました↑

びーのすけさん>
本かってみました。
strutsに比べると本が少ない上に高いけど楽しそうですね^^

教えてくださった皆様>

無事動作完了まで確認できました。
初歩的なことを丁寧に教えていただきみなさまには
大変感謝しております。ありがとうございました。

動作したことでようやく勉強することができます。

seasar普及につとめていきます!!
動作完了おめでとうございます(^^)


ちなみに・・・・。

s2-dao-1.0.43-sources.jarとかXXXX-source.jarはクラスパスに通さなくていいと思います。

s2-dao-1.0.43.jarはclassファイルがjar化されたものですが、
s2-dao-1.0.43-sources.jarはjavaファイルがjar化されています。
試しに拡張子をzipにして解凍して中を覗いてみてください。

で、Eclipseのプロジェクトでクラスパスが通っているs2-dao-1.0.43.jarを右クリック→プロパティ→Javaソースの添付という項目がありますので、そこにs2-dao-1.0.43-sources.jarを指定してください。

そうしますと、eclipse上でs2daoのソースが見れるようになります。更にブレークポイントを張れるようになれます。

@ITにソースの添付についての解説記事がありましたので、参考にしてみてください。
http://www.atmarkit.co.jp/fjava/javatips/068eclipse023.html

では、頑張ってください〜(^^)
きせのん さん>

補足ありがとうございます。ソースが添付できるなんて
知りませんでした。ありがとうございます。
いろいろと教えていただき感謝感謝です手(パー)

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Seasar 更新情報

Seasarのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング