諸君、XDocletを知ろうじゃないか

このエントリーをはてなブックマークに追加
85デフォルトの名無しさん:04/01/13 07:02
Web+DB PRESSあげ
86デフォルトの名無しさん:04/04/14 00:31
XDocletムズいっていってたが

Eclipse + JBoss + JBoss IDE or Lomboz
のおかげで以外と楽になったかも。
つうか、このスレの1は神。
日付みて思った。
スレ発見記念age & マルチ

XDocletで、Servlet2.4のweb.xmlを生成するには、どうしたらいいですか?
89デフォルトの名無しさん:04/07/27 18:40
ageてねぇや
90デフォルトの名無しさん:04/07/27 19:27
EclipseとApache Mavenのお陰でXDocletの生成も楽になるのかな?
91デフォルトの名無しさん:04/10/04 14:37:40
XDoclet 2.0系ってどこ行っちゃったの?
ttp://xdoclet.codehaus.org/に何もないし

1.2系も4月以降リリースないし、不安だ・・・。
92デフォルトの名無しさん:04/10/04 16:09:30
SGenで。
93デフォルトの名無しさん:04/10/06 01:03:32
>>91
CVSからゲット。
:pserver:[email protected]:/scm/generama
:pserver:[email protected]:/scm/xdoclet

あと1.2系は最近1.2.2RC1でたよ。

>>92
SGenってライセンスなに?
SGenだけじゃなく、あの人の公開してるプロダクトって
全部ライセンスがわからないんだけど・・・
94デフォルトの名無しさん:04/10/06 01:41:49
>>93
ライセンスどころか、あの人自体がわからないね。
「おたく」って・・・
実際にはXDoclet2がちゃんと表に出てきたら話に登らなくなるでしょ。
95デフォルトの名無しさん:04/10/06 23:59:30
>>94
XDoclet2が使えるレベルになるまでは相当かかるんじゃない?
1.2系のXJavadoc/XDTベースのモジュールが全く使えなくなるわけだし。
今あるモジュール全てをVelociry/Jellyベースのモジュールとして作成しなおすのは結構時間かかるかと。
96デフォルトの名無しさん:04/10/07 00:26:06
>>95
Web/Struts/Hibernate/EJBくらいが使えれば、とりあえず文句はない。
97デフォルトの名無しさん:04/10/15 12:41:34
jdk1.5の新機能さんたちを使ってると
エラーが出ちゃってxdocletが使い物にならん・・・・
こまったにゃぁ〜
98デフォルトの名無しさん:04/10/15 13:16:17
>>97
エラーが出る部分はXDocletの対象からはずす。
サーブレットやらStrutsのActionやらに、新文法が便利だと思えるような処理を書くなという親心だ。
9997:04/10/15 14:09:26
>>98
Actionには書かなくても済みそうだけど
Hibernate使ってるんでそっちが大変そう
新文法楽チンで良いのになぁ今回はあきらめて1.4でやるか・・・
100デフォルトの名無しさん:04/10/16 05:21:40
>>99
Hibernateのマッピングコードにも処理書かなくていいでしょ。
101デフォルトの名無しさん:04/10/27 04:31:41
1.2.2アゲ
これでservlet2.4やらstruts1.2のdtd定義が使える
102デフォルトの名無しさん:04/10/27 04:40:03
しかし、ほとんどのミラーにファイルがないのはいかがなものか。
sourceforge、ミラーの順番が表示のたびにかわるから、どこまで試したかわからんし
103デフォルトの名無しさん:04/10/29 10:39:16
VOXROXにミラーされてたよ。
なんで一週間近くも他はミラーされてないんだ?
104デフォルトの名無しさん:04/10/30 19:14:52
1.2系のバグフィックスよりも、さっさと2.0系だしてほしい。
既存のモジュールをいじったり、
カスタムテンプレートやモジュール作るときにもうXDTをいじりたくない・・・
105デフォルトの名無しさん:04/11/06 23:17:46
106104:04/11/07 01:30:36
))105
サンクス

本体の方はしってたけど、プラグインも開発すすんでいたのね。
CVSのソースとか覗いて勉強してみるよ。
一応CVSリポジトリも貼っとくね。

:pserver:[email protected]:/cvsroot/xdoclet-plugins
(ViewCVS) : ttp://cvs.sourceforge.net/viewcvs.py/xdoclet-plugins/

>>93で貼られているgenerama、xdoclet2のCVSとあわせれば
2.0系のソース&その他リソース類が一式手に入る。
pluginも含めて配布されているファイルに上記のものが全く入っていないため、
サンプルコードやJavadocを入手するにはCVSから入手するしかない。

あと、xdoclet2のベースフレームワークのgeneramaのjarファイルはこれ。

ttp://dist.codehaus.org/generama/jars/generama-1.0.jar
ttp://dist.codehaus.org/generama/jars/generama-1.1-SNAPSHOT.jar

トップからリンクをたどるとパーミッション設定がいかれてるのか
jarファイルまでたどり着けないので上記URLから直接jarファイルを入手。

一応、xdocletのproject.xmlみると1.0がベースみたいだけど、1.1の方でも動くみたい。
というかCVSみてもにタグがうってないので、何が違うのかわからない・・・・
107104:04/11/07 01:31:59
>>104じゃなくて>>105だった・・・・
自分にレスしてどうする・・・orz
108デフォルトの名無しさん:04/11/07 18:18:18
webdoclet にて・・・

 あるサーブレットAから拡張したサーブレットBがあるとします。
 A、B両サーブレットそれぞれ以下のように xdoclet タグを記述しています。

 ◆ サーブレットA ◆
  @web.servlet name="ServletA"
  @web.servlet-mapping url-pattern="/servletA"

 ◆サーブレットB ◆
  @web.servlet name="ServletB"
  @web.servlet-mapping url-pattern="/servletB"

 このような状況で webdoclet を走らせると以下のような web.xml が生成されます。

 ◆ 生成された web.xml ('servlet-mapping'のみ抜粋) ◆
  <servlet-mapping>
    <servlet-name>ServletB</servlet-name>
    <url-pattern>/servletB</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>ServletB</servlet-name>
    <url-pattern>/servletA</url-pattern>
  </servlet-mapping>
  <servlet-mapping>
    <servlet-name>ServletA</servlet-name>
    <url-pattern>/servletA</url-pattern>
  </servlet-mapping>

  次レスへ・・・
109デフォルトの名無しさん:04/11/07 18:20:07
>>108の続き

 御覧のように、こちらが期待していない、

  <servlet-mapping>
    <servlet-name>ServletB</servlet-name>
    <url-pattern>/servletA</url-pattern>
  </servlet-mapping>

 のような 'なんだこりゃ?' 的なマッピングが生成されてしまいます・・・。
 思うに、サーブレットA、B間の継承関係を考慮して xdoclet がこのような妙な出力を行ったのではないかと。

 質問なんですが、これってバグなんでしょうか?
 それともこういう仕様なんでしょうか?
 回避の方法ご存じないでしょうか?

 以上です。よろしくお願いします。
110デフォルトの名無しさん:04/11/07 18:20:56
age させていただきます。
111デフォルトの名無しさん:04/11/08 02:37:29
>>108
継承が云々ではなく、単にXDTテンプレートの記述に問題があるだけみたい。

xdoclet-web-module-1.2.2.jarの中にあるXDTテンプレートweb_xml.xdtで
サーブレットマッピングを出力している箇所は以下のようになってる。

<XDtClass:forAllClasses>
<XDtClass:forAllClassTags tagName="web:servlet-mapping">
<servlet-mapping>
<servlet-name><XDtClass:classTagValue tagName="web:servlet" paramName="name"/></servlet-name>
<url-pattern><XDtClass:classTagValue tagName="web:servlet-mapping" paramName="url-pattern"/></url-pattern>
</servlet-mapping>
</XDtClass:forAllClassTags>
</XDtClass:forAllClasses>

外側のforAllClassesが余計なので、
自分でXDTテンプレート修正して差し替えたらOK。

もし、jarファイルの中身を差し替えるのがナニというなら、
とりあえず一回jarファイルからXDTテンプレートファイルをとりだして修正し、
そのあとbuild.xmlでdeploymentdescriptorサブタスクを定義するときに

<deploymentdescriptor templatefile="修正したXDTテンプレートファイル"/>

みたいに指定すれば、jarファイルの中に格納されているやつではなく
templatefile属性で指定したテンプレートファイルで処理が実行されるので
これでも上記の問題は解決できる。

あとの解決方法は、
動的にサーブレットマッピング部分生成するのをやめて
マージファイル(servlet-mappings.xml)を用意するくらいかな。
112デフォルトの名無しさん:04/11/08 18:56:17
ttp://opensource.atlassian.com/projects/xdoclet/browse/XDT-781 で同じ問題が
あがっているようなので、是非そっちにも報告してください。
113デフォルトの名無しさん:04/12/29 09:51:17
最近XDocletの使い方を理解した。

EclipseではJBoss-IDEを使うとコードアシスト機能が使えて便利だ。

web.xmlやstrutsやHibernateやCMP Emtit Bean関係のクラス自動生成のほかに
UMLにも使えるだってね。
これは面白い。

build.xmlにtaskdefを使うのがどうも奇妙な気がするが。

あとはMavenをうまく使えばXDocletの利用ももっと簡単になるのかな?

114デフォルトの名無しさん:04/12/29 14:11:02
>>113
taskdef書くのは別に変じゃないよ。Antの標準タスクに含まれない以上、
それをクラスパスに入れて、taskdef書くのは必須な作業だし。

Mavenで使うにもtaskdefは必要になる。

<preGoal name="java:compile">
<attainGoal name="xdoclet:doclet"/>
</preGoal>
<goal name="xdoclet:doclet">
<attainGoal name="xdoclet:ejbdoclet"/>
</goal>
<goal name="xdoclet:ejbdoclet">
<mkdir dir="${maven.xdoclet.ejbdoclet.destDir}"/>
<taskdef name="ejbdoclet"
classname="xdoclet.modules.ejb.EjbDocletTask"
classpathref="maven.dependency.classpath"/>
<ejbdoclet destDir="${maven.xdoclet.ejbdoclet.destDir}"
ejbSpec="${maven.xdoclet.ejbdoclet.ejbspec}" ...>
...
</ejbdoclet>
<path id="ejbdoclet.java.compile.src.set" location="${maven.xdoclet.ejbdoclet.destDir}"/>
<m:addPath id="maven.compile.src.set" refid="ejbdoclet.java.compile.src.set"/>
</goal>

こんな感じ。
115デフォルトの名無しさん:04/12/29 16:13:21
そうだったのか。
goalを自作しているのか
116デフォルトの名無しさん:05/01/29 17:58:15
「LookupDispatchAction」を継承したActionクラスに
@struts.action を記述しても struts-config.xml に
反映されないのは仕様でしようか?
117デフォルトの名無しさん:05/01/29 18:00:29
↑ベテランさん教えてください。
118デフォルトの名無しさん:05/01/29 20:02:50
>>116
他のActionは吐かれてくるの?

ありがちな間違いだとタスクのfilesetに入れ忘れとか。
XDocletでstruts-config.xml作った事ないから知らんけど。

クラスの継承元でフィルタされるって事はなさそうかな。
119デフォルトの名無しさん:05/01/29 21:36:41
>>118
どうも♪

「org.apache.struts.action.Action」では正常に動作することを
確認しています。また、build.xmlの該当箇所を穴の開くほど何度
もにらみ続けたのでfilesetの入れ忘れはないです。

>>クラスの継承元で・・・
あぅ、勉強不足でわからないです、これ。

とりあえずは対応するマージファイル「struts-actions.xml」に
設定を直書きすることでことなきを得ております・・・が、これじゃ
せっかくXDocletを使ってても全然クールじゃないですねぇ。
仕様だったらしようがないですが。残念。
120デフォルトの名無しさん:05/01/30 00:34:21
XDocletの仕様を考えると、Actionクラスを継承したクラスはstruts-configの種にしてくれるはずだけど。
ドキュメンテーションコメントになっていないとかがありがちなミスだな。
121デフォルトの名無しさん:05/02/01 11:37:56
動きました!!
DispatchAction, LookupDispatchAction, ...etc.

すばらしい!!
惚れ直したぜXDoclet!! ビバ!XDoclet!!

Soooo Coooooool!!

122デフォルトの名無しさん:05/02/01 23:54:29
というのは、J2SE5を使わないからいえる話で。
アノテーションとか入ったら全然だめ。
123デフォルトの名無しさん:05/02/02 00:49:31
まあアノテーションが本格的に使われるようになったら
XDocletの機能もアノテーションで実装されるようになるだろ。
124デフォルトの名無しさん:05/02/02 08:37:40
なんか、そーとー前からいってるのに2.0って動きがないんだよねぇ。
バナーコンテストやってたくらいしか。
125デフォルトの名無しさん:2005/04/18(月) 23:06:10
XDoclet 1.2.3 リリース上げ

「Latest bug fix release, plus enhancements to various modules.」
ってことだから、そろそろ2.x系が本格的になるのかな?

>>124
CVSは動いてるみたいなんだけどね。
126デフォルトの名無しさん:2005/05/15(日) 01:29:46
age
127デフォルトの名無しさん:2005/07/10(日) 09:26:20
build.xmlファイルのサンプルは付属もの以外にどこかあるでしょうか?
ant走らせるとエラー、そのままもう一度実行すると、
情報: Running <remoteinterface/>
とか出るのに生成はされず。もう一度実行するとコード生成される状況です。
128127:2005/07/10(日) 17:29:40
現象がよくわからないので、また来週やってみまつ。
129デフォルトの名無しさん:2005/07/17(日) 01:46:40
xdocletとアノテーションとbackport175についてエロい人語ってみてください
130デフォルトの名無しさん:2005/07/17(日) 02:33:29
アノテーション・・・標準。記述力が高い。コンパイルだけで使える。J2SE5以降じゃないと使えない。
backport175・・・標準に近い。Genericsと組み合わせれない。引数アノテーションが使えない。コンパイル以外に処理が必要。J2SE1.4以前で使える。
XDoclet・・・非標準。実行時情報としては使えない。XDTは非常に書きづらい。時代遅れ。しかし先駆け。歴史的価値。J2SE1.4以前で使える。J2SE5の文法と同時に使えない。
131デフォルトの名無しさん:2005/12/03(土) 17:56:37
>>127
Eclipse3.1から追加された
antデバッグを使ってみるとええんじゃねえの?
132デフォルトの名無しさん:2005/12/03(土) 17:57:25
っていうかXDocletがJava SE % Tigerの
アノテーションに対応しているかどうかの
ほうが重要だと思うんだけど。
133デフォルトの名無しさん:2006/02/11(土) 12:51:36
XDoclet2用のJBossプラグインって誰も作ってないの?
134デフォルトの名無しさん
XどきゅれっとがJAVAを救う!
とうわけで保守AGE