Java Spring Frameworkを語るスレ
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG乱立するフレームワークと競合するプロトコルの嵐のなかで、
リスクの高い決断を余儀なくされているJavaデベロッパ、プ
ロジェクトマネージャに対する福音です。
語るべし。
0373デフォルトの名無しさん
2005/04/24(日) 19:30:21ただ、Spring使ってる人のまわりではSpringばっかりだし、Seasar2使ってる人のまわりではSeasar2ばっかりだから、人の意見はあまりあてにならんけどね。
0374デフォルトの名無しさん
2005/05/06(金) 13:30:15発言見るんだけど、そもそもDIってリモートコールできんの?
0375デフォルトの名無しさん
2005/05/06(金) 13:58:110376デフォルトの名無しさん
2005/05/06(金) 14:30:44ttp://wiki.bmedianode.com/Spring/?%BC%D9%B0%AD%A4%CASingleton
↑のページを参考に beanRefContext.xml を書いたのですが
Spring が DEBUG メッセージを吐くのでちと気持ち悪いです。
ログは汚れるものの、期待通りの動作はしています。
型の合うコンストラクタが見つからないとか、そんな感じのメッセージなのですが
確かに ClassPathXmlApplicationContext のコンストラクタに
java.util.ArrayList を持つものはない模様で
この辺りは「一通りコンストラクタ調べたけどないっぽいから
String[] だと思って処理しよう」とかそんな流れでしょうか?
この辺り、ログを汚さないでスマートに指定する方法を教えていただけないでしょうか?
0377デフォルトの名無しさん
2005/05/06(金) 18:37:22AOP周りにも触ってみようと思ってます。
で、AOPって、具体的にはどんなことに使えるのかサッパリわかりません。
ログとる例ばっかりで、他に出来ることはないのか?って感じなんですが、
何に使うんですか?AOP
コンテナ側では使ってるのは理解できるんですが。
具体的な用途や、参考になるページがあったら
すみませんが教えてもらえないでしょうか。
0378デフォルトの名無しさん
2005/05/07(土) 03:33:48- ロギング
- トランザクション
だわな
0379デフォルトの名無しさん
2005/05/07(土) 05:15:360380デフォルトの名無しさん
2005/05/07(土) 06:30:470381デフォルトの名無しさん
2005/05/07(土) 06:33:450382デフォルトの名無しさん
2005/05/07(土) 06:58:12それがAOPで楽できる。
0383デフォルトの名無しさん
2005/05/07(土) 08:04:050384デフォルトの名無しさん
2005/05/07(土) 08:38:480385377
2005/05/07(土) 12:01:00Springだとそのための手段が用意されてるのでなかなか使い道が難しいですね。
昔GUIも作ったことあったのですが、その例もなるほどなって思いました。
面倒ですものね。「横断的関心」ってやつがちょっとイメージできた気がします。
探してたら、こんなページも見つけました。難しいので理解できてませんが
ttp://www.oucc.org/~tail/aspectj/index.php?%A5%A2%A5%B9%A5%DA%A5%AF%A5%C8%A4%CE%CD%F8%CD%D1%CA%FD%CB%A1
0386デフォルトの名無しさん
2005/05/07(土) 12:03:140387デフォルトの名無しさん
2005/05/08(日) 13:35:51org.springframework.aop.interceptor.TraceInterceptor
org.springframework.aop.interceptor.DebugInterceptor
0388デフォルトの名無しさん
2005/05/08(日) 18:55:53質問した者だが
いやそうじゃなくて、じゃあそもそもEJBと比較して意味あんのかって意味。
分散オブジェクト技術とそうでない技術なら話してる土台が違うわけで
DI>>EJBとかわけわかんないんだけど。
0389デフォルトの名無しさん
2005/05/08(日) 19:18:26EJBは分散が必要ない人にも分散を前提としためんどうな手続きを強要してた。
ほとんどの人に分散は必要なかった。
ほとんどの人にDI+ORM > EJB。
0390デフォルトの名無しさん
2005/05/08(日) 19:21:41てか分散使わないのにEJB使ってる時点でどうかと・・。
まぁ後者のORMとかはわからなくもないが、EJBは
どっちかっつーと、というかどう考えても分散オブジェクトなわけで。
0391デフォルトの名無しさん
2005/05/08(日) 19:35:400392デフォルトの名無しさん
2005/05/08(日) 21:33:100393デフォルトの名無しさん
2005/05/08(日) 22:17:34まあ、EJBには分散以外にもいい点があるわけで。
宣言的なトランザクションとか、SQLを直接書かないDBMSアクセスとか。
そういEJBのよい機能は使いたいけど、
EJBは動かすの面倒、重い、コンテナに依存してテストしづらい
ってのがあって、その打開策としてSpringをはじめとして色々な
ソフトが出てきているわけだよな。
0394デフォルトの名無しさん
2005/05/08(日) 23:26:16生きるはずなのだが。
0395デフォルトの名無しさん
2005/05/08(日) 23:38:340396デフォルトの名無しさん
2005/05/12(木) 14:50:52applicationcontext.xmlのsessionFactoryのところで
java.lang.NoClassDefFoundError: net/sf/ehcache/CacheException
となってしまいます
でも、Hibernateのソースを見ても
net.sf.ehcache.CacheExceptionというクラスは存在してないみたいなんですが
どういうことなんでしょうか?
Hibernateはspring-framework-1.1.5の中に入っていたものを使用しています
0397デフォルトの名無しさん
2005/05/12(木) 19:55:240398デフォルトの名無しさん
2005/05/14(土) 18:48:46applicationContext.xml に登録したオブジェクト(bean)の中の処理でファイルを読もうとしています。
このクラスは HttpServlet を継承していません。(特にクライアントからの要求を受け付けるわけではないので
そうしていました)したがって、web.xml には mapping していません。
この状態で、(webapps/project)/WEB-INF/data/ といったディレクトリからファイルを読み出したいので、
絶対パスを取得しようとしていますが、わかりません。
ApplicationContext appCtx = new ClassPathXmlApplicationContext("applicationContext.xml");
で、コンテキストは取得できましたが、パスを取り出す方法はないでしょうか?
(もちろんコンテキストからでなくても構わないです。)
Spring 使ってる上でクラスの作り方が間違っているとか、もっと普通の方法があるようでしたら
ご指摘ください。よろしくお願い致します。
0399デフォルトの名無しさん
2005/05/15(日) 22:24:06私も同じ現象起きてます。
"/WEB-INF/lib/applicationContext.xml"という指定をすると
WEB-INFが見当たらないというエラーが返ってきます
なんでかしらんけど、パッケージの中しかパスが認識されないんです
だから
"/jp/co/sample/applicationContext.xml"
みたいにすると読み込めるんですよ。
でもソースのパッケージの中に設定入れとくのはちょっと気持ち悪いな、といった感じです
私はEclipseでTomcatプラグイン使用してますけど
Web.xmlの設定とかが必要なのかなー
0400399
2005/05/15(日) 22:30:21>で、コンテキストは取得できましたが、パスを取り出す方法はないでしょうか?
>(もちろんコンテキストからでなくても構わないです。)
これどいう言う意味ですかね?
絶対パスで指定しなければルート(WEB-INFなのか?)から
フォルダをなめていってくれてapplicationContextを探すってことですかね。
不勉強ですいませんorz
0401デフォルトの名無しさん
2005/05/16(月) 05:36:090402398
2005/05/17(火) 05:44:34/web.xml
/WEB-INF/config/ (クラスパスが通っている)
/WEB-INF/config/applicationContext.xml
/WEB-INF/data/ (クラスパスが通っていない)
/WEB-INF/data/data.xml
結局知りたいのは、HttpServlet を継承していないクラスから、
上の /WEB-INF/data/data.xml を読む方法なんですが、わからない・・・
>>401
web.xml に登録していなくて、httpServlet を継承していないクラスから
web.xml に記載した初期化パラメータ読むにはどうすればいいんですか?
マジで調べてもわからなかったので、すいませんが教えてください。
0403デフォルトの名無しさん
2005/05/17(火) 08:11:38HttpServletを継承していない普通のクラスが、
/WEB-INF/なんて、HTTP固有のディレクトリ構造に
依存することを良しとする訳ですか。
0404デフォルトの名無しさん
2005/05/17(火) 08:46:550405デフォルトの名無しさん
2005/05/17(火) 08:47:100406デフォルトの名無しさん
2005/05/17(火) 09:11:580407デフォルトの名無しさん
2005/05/17(火) 14:22:240408デフォルトの名無しさん
2005/05/17(火) 17:29:46>>403
/WEB-INF/data にアプリが使うデータファイル置くのは一般的に言って変ですか?
/dataでもいいので普通はそうなら変更を考えます。まだ作法に慣れてないもので勉強します。
>>404
そのクラスは相手がDBじゃなくてファイルなんですがDaoと同じ様な役割をさせたいクラスなんで
他のDaoクラスと同じようにDIコンテナからロードさせてるんですよ。
で、Servletとか関係ない層で動いてるんですが実際のパス取得をどうしようかと悩んでます。
Springのフレームワークからそういうのとれないのかなと考えてましたが、的違いでしたでしょうか?
>>405-407
結局Servletクラスからパスをもらうことにしました。
正直に言ってまだ釈然としないものが残っているんですが、一般的にそうなら慣れるしかないですね
0409デフォルトの名無しさん
2005/05/17(火) 21:41:41:
J2EE流:JNDIからデータの位置を取得
Connectorアーキテクチャでデータを供給
:
Spring Framework: ?
0410デフォルトの名無しさん
2005/05/17(火) 22:37:48ふつうは、普通のクラスはDIコンテナの存在を気にしないでいいようにする
0411デフォルトの名無しさん
2005/05/17(火) 22:39:07設計が悪いときに無理をしないといけないのは一般的な話だから気にするな。
0412デフォルトの名無しさん
2005/05/17(火) 23:28:33BeanFactoryから取得
0413デフォルトの名無しさん
2005/05/17(火) 23:41:410414398
2005/05/17(火) 23:59:50>>410
ということは、Spring のアプリケーションコンテキストに依存せず、他の(サーブレットを継承していて
サーバ環境にアクセス可能な)クラスからもらってくる方法はまだマシという理解であってますか?
>>411
設計が悪いのなら直したいのです。>>409さんが書いている様に、Springやその他のDIコンテナ
(すみませんがJ2EE/EJBは知りません)を使ったときの作法があるのなら、この機会に
身に着けたいと思ってます。普通のクラスが外部リソースにアクセスする一般的な方法を
教えてもらえませんか?
0415デフォルトの名無しさん
2005/05/18(水) 00:17:47そりゃサーバサイドだったら、web.xmlじゃないか?
JNDIだってどっかにJNDIのInicialContextFactoryを指定する(プロパティとか)のと同じ事だとおもうけど。
0416デフォルトの名無しさん
2005/05/18(水) 00:44:570417デフォルトの名無しさん
2005/05/18(水) 00:45:370418デフォルトの名無しさん
2005/05/19(木) 06:47:360419デフォルトの名無しさん
2005/05/19(木) 10:10:35最初は芋づる式って密な感じがして気持ち悪かったけど
実装してみたら楽すぎて止めらんね
どういった点でデメリットが出てくるんだろうか
0420デフォルトの名無しさん
2005/06/01(水) 08:56:52JSFのバッキングビーンのクラスとビジネスロジックのクラスのそれぞれの役割で
バッキングビーン
値のチェック、変換(この辺はバリデータ、コンバータに
任せるべきなんだろう)などのビジネスロジック呼び出す前の処理
あと、ビジネスロジックの結果の後処理
ビジネスロジック
必要なDAOを呼ぶだけ
こんな風に考えてます。これだとビジネスロジックのクラスが
たいした役割ではないと思うんですけど、DAOのファサード風と考えてよいでしょか
JSF+Springのサンプルアプリがみたいどすえ〜
0421デフォルトの名無しさん
2005/06/01(水) 10:05:15>JSF+Springのサンプルアプリがみたいどすえ〜
https://appfuse.dev.java.net/
https://equinox.dev.java.net/
漏れ自身が勉強中なので情報提供のみで失礼。
0422デフォルトの名無しさん
2005/06/01(水) 10:47:23DBのモデルを単に画面に表示する・画面に入力した値をDBに格納する
みたいなシンプルなアプリだとそうなるかもね。
0423デフォルトの名無しさん
2005/06/01(水) 10:50:24>ビジネスロジック呼び出す前の処理
>あと、ビジネスロジックの結果の後処理
どのレベルの処理を言ってるのかわからないけど、
本当にMVCレイヤに置くべき処理なのか再検討してみては?
0424デフォルトの名無しさん
2005/06/01(水) 11:58:03この本どうよ?書評キボンヌ
『実践Spring Framework―J2EE開発を変えるDIコンテナのすべて』
http://www.amazon.co.jp/exec/obidos/ASIN/4822221431
『入門Spring』と『軽快なJava』は読みました。さらに詳しい話を
聞きたい、という目的に使えますかね?
0425デフォルトの名無しさん
2005/06/02(木) 22:11:28一杯おごってやりたい。
0426デフォルトの名無しさん
2005/06/03(金) 12:15:51Mozilla独自のXULより標準規格のXFormsのほうが良いのでは?
MozillaもOpenOffice.orgもXFormsに対応する上に、
Chibaを使えばXForms未対応のブラウザに対して
HTML+JavaScriptに変換してから送信することで
大部分のブラウザに対応できます。
Chiba (サーバーサイドJavaライブラリ)
http://chiba.sourceforge.net/
MozillaとXForms (Mozilla1.8/Firefox1.1で対応予定)
http://www.mozilla-japan.org/projects/xforms/
[XForms 00031] XFormsのためのwiki (村田真氏がMozillaでXForms推進)
http://www2.xml.gr.jp/log.html?MLID=xforms&N=31
0427デフォルトの名無しさん
2005/06/03(金) 12:41:43XULへの必要性は一般の人にとっては低いとは思うが、
>>425は、ブラウザベースクライアントじゃなくて、リッチクライアントとして
XULを使うことを前提に書いてるんじゃなかろうか。
JSF経由でSwingとかFlashをクライアントにするノリで。
0428デフォルトの名無しさん
2005/06/03(金) 12:42:000429デフォルトの名無しさん
2005/06/22(水) 09:39:060430デフォルトの名無しさん
2005/06/25(土) 15:34:01ほぼデファクトスタンダードらしいが、なぜこのスレは伸びないの?
0431デフォルトの名無しさん
2005/06/25(土) 18:21:20カテゴリとしてマイナーなんでは。日本では。
0432デフォルトの名無しさん
2005/06/26(日) 08:56:09DIは、使い始めれば空気みたいなもんで、とくに議論することもなくなるから。
0433デフォルトの名無しさん
2005/06/26(日) 16:54:53コンテナが作ったProxyに対するAOPでしょ?
0434デフォルトの名無しさん
2005/06/26(日) 22:33:010435デフォルトの名無しさん
2005/06/27(月) 10:43:51proxyでAspectをweavingする事の弱点って何だ?
漏れが把握しているのは
1.自分自身のメソッドを呼び出すとAspectがかからない。
2.visitorみたくthisを渡して処理させるとAspectがかからない。
他に注意点ある?
0436デフォルトの名無しさん
2005/06/27(月) 11:31:590437デフォルトの名無しさん
2005/06/27(月) 11:41:450438デフォルトの名無しさん
2005/06/27(月) 13:49:430439デフォルトの名無しさん
2005/07/05(火) 11:09:420440デフォルトの名無しさん
2005/07/05(火) 13:38:30どこが変わったの?
0441439
2005/07/05(火) 15:43:58『added dedicated support for Hibernate Annotation 3.0 beta 2』
0442デフォルトの名無しさん
2005/07/05(火) 17:36:12でも、前からHibernate Annotations使えてたよ。
0443デフォルトの名無しさん
2005/07/05(火) 22:32:170444デフォルトの名無しさん
2005/07/06(水) 03:19:27DIでせっかくコードから煩雑な記述を追い出したのに、
またコード中に埋め込んで、回帰と言うか退化と言うか。
コンパイラに対する指示を埋め込むのは意義が大きいと思うけど。
0445デフォルトの名無しさん
2005/07/07(木) 10:24:52ここの最後にやりかた書いてあるよ。
ttp://www.fk.urban.ne.jp/home/kishida/kouza/hibernateanno.html
0446デフォルトの名無しさん
2005/07/07(木) 10:25:46アノテーションは、XMLより記述が楽だし、ソースから得た型の情報を使うことで記述量自体が少なくできてるから、そう煩雑でもない。
クラスに関する情報をソースファイルに一元化できる効果もある。
なによりコンパイラによる静的チェックが効くし、Javaソースエディタでの補完が効く。
0447デフォルトの名無しさん
2005/07/08(金) 22:00:29単体まではいいけど、結合で結局アボーンな感じがするのだけど。
まぁつまるところは設計能力か・・・
0448デフォルトの名無しさん
2005/07/10(日) 00:55:340449デフォルトの名無しさん
2005/07/13(水) 20:03:02マルチスレッドでここに処理が殺到した場合、スレッドセーフにトランザクションさばけるんでしょうか?
教えてください。
TransactionProxyFactoryBean
http://www.springframework.org/docs/api/org/springframework/transaction/interceptor/TransactionProxyFactoryBean.html
0450デフォルトの名無しさん
2005/07/13(水) 20:42:56そりゃ、targetしだいだろ。targetがスレッドセーフなら、問題ない。
0451名無しさん
2005/07/13(水) 21:00:030452デフォルトの名無しさん
2005/07/13(水) 23:18:19ちゃんと考えられてるだろうから、
単一のオブジェクトの同じメソッドを
複数のスレッドが並行して駆け抜けることは全然OKなように
つくられてるはず・・・(たぶん)
0453デフォルトの名無しさん
2005/07/14(木) 16:28:520454デフォルトの名無しさん
2005/07/14(木) 19:22:100455デフォルトの名無しさん
2005/07/16(土) 17:28:30それはプラットフォームによる。
・GUIは大抵そう。(OSから飛んでくるイベントの処理は、イベント毎の状態保持が必要。
もっとも、同じ要素に複数イベント飛んできたら、単に順次処理する事が多いんで、
本当のスレッド並列処理はそんなに必要ないと思う。)
・Webアプリ周りも大抵そう。(例の(Statefull)Servletあたりが有名)
それ以外の場面で、常にインスタンスとスレッドを別に考えるのは、どーかと思う。
結局インスタンス数を減らしてまでメモリー消費を避けたい特殊な場面(大規模アプリ、組込みアプリ)
に固有のやりかただと思う。
0457デフォルトの名無しさん
2005/07/19(火) 10:34:040458デフォルトの名無しさん
2005/07/24(日) 22:38:13Javaは最新の技術追うのが大変(@@)
0459デフォルトの名無しさん
2005/07/25(月) 01:15:53キチガイが狂った独り言を書き込み中
==============================
0460デフォルトの名無しさん
2005/07/25(月) 07:37:48applicationContext.xmlの中でHibernate Annotationsの設定がかけるようになるってことみたいだね。
LocalSessionFactoryBeanを使う場合は、hibernate.cfg.xmlを書いておく必要があった。
0461デフォルトの名無しさん
2005/08/06(土) 22:29:31[ sample.xml ]
<beans>
<bean id="test" class="org.springframework.aop.framework.ProxyFactoryBean">
<property name="proxyTargetClass"><value>true</value></property>
<property name="target"><ref local="person"/></property>
<property name="interceptorNames"><value>advisor</value></property>
</bean>
…略…
</beans>
[ sample.java ]
BeanFactory factory = new ClassPathXmlApplicationContext("/com/mamezou/aop/proxydi/sample.xml");
Person person = (Person) factory.getBean("test");
person.setName("Hoge");
ってやるとCGLIBがねぇよってエラーになって、
CGLIB2.1のjarクラスパスに突っ込んでやるとエラーになるんだけど…。
対処方法ってなんかある?
0462461
2005/08/08(月) 00:45:200463デフォルトの名無しさん
2005/08/08(月) 01:32:410464デフォルトの名無しさん
2005/08/08(月) 12:18:04それを修正したとかそんな流れ?
0465461
2005/08/08(月) 20:07:27CGLIB2.1入れても
java.lang.NoClassDefFoundError: org/objectweb/asm/Type
って出たので、ASM入れただけです。
_| ̄|○|||
ASMは1.5.3入れました。2.0だと
java.lang.NoClassDefFoundError: org/objectweb/asm/CodeVisitor
が出ます故。これで動いたは動いたケド、正しいかどうかは…。
0466デフォルトの名無しさん
2005/08/08(月) 20:27:13だいたいあってたね。
0467デフォルトの名無しさん
2005/08/10(水) 12:47:000468デフォルトの名無しさん
2005/08/10(水) 20:51:17Spring 付属の jar をぶっこんだ?
まだ 1.1.7 使ってて 1.2 系は試してないけど
付属の jar 入れとけば間違いは少ないと思う。
0469461
2005/08/10(水) 20:53:28>>467
asm-1.5.3.jar
cglib-2.1_2.jar
をWEB-INF/lib/に放り込んでクラスパス通すだけでつ。
「ProxyFactoryBean使うときはCGLIB入れろ」
ってドキュメントに書いてあったのですが、
CGLIB使うときはASM入れないないとNGなんで、
ttp://prdownloads.sourceforge.net/cglib/cglib-2.1_2.jar?download
ttp://forge.objectweb.org/project/download.php?group_id=23&file_id=3084
のミラーからDLしてください。
…というコトではない?
0470デフォルトの名無しさん
2005/08/10(水) 21:14:42添付の jar を必要に応じて加えるだけで
外部のライブラリは不要だったと思うんだけど。。
0471461
2005/08/10(水) 21:47:00サンクス。
>with-dependency
こっちじゃなくて、spring-framework-1.2.3.zip落としちゃって…。
ttp://www.techscore.com/tech/Others/Spring/1.html
にしっかり書いてありました。orz
0472デフォルトの名無しさん
2005/08/19(金) 12:55:20ttp://springide.org/project/wiki/BeansXmlEditor
Screen Shot 見る感じだと
とりあえず欲しい機能は結構揃っているような。
■ このスレッドは過去ログ倉庫に格納されています