トップページ⇒tech
134コメント40KB

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

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
諸君、XDocletを知っているかね?何、知らぬ?

XDocletはソースのコメントにこちゃこちゃ書いてあんなものやこんなものを生成するツールだ。
Docletちゅうたら、JavaDocを想像するやつぁー、ちょっといい感じだ。
XDocletはJavaDocじゃなくて、ejb用のxmlとかweb用のxmlとかを自動生成してくれる。優れものじゃ。

恐らく、このスレは諸君の理解が行き届くまですぐには立ち上がらぬだろうが、、、わしは辛抱強く待つぞ。

http://xdoclet.sourceforge.net/
0084デフォルトの名無しさんNGNG
保守あげ
0085デフォルトの名無しさんNGNG
Web+DB PRESSあげ
0086デフォルトの名無しさんNGNG
XDocletムズいっていってたが

Eclipse + JBoss + JBoss IDE or Lomboz
のおかげで以外と楽になったかも。
0087デフォルトの名無しさんNGNG
つうか、このスレの1は神。
日付みて思った。
0088デフォルトの名無しさんNGNG
スレ発見記念age & マルチ

XDocletで、Servlet2.4のweb.xmlを生成するには、どうしたらいいですか?
0089デフォルトの名無しさんNGNG
ageてねぇや
0090デフォルトの名無しさんNGNG
EclipseとApache Mavenのお陰でXDocletの生成も楽になるのかな?
0091デフォルトの名無しさんNGNG
XDoclet 2.0系ってどこ行っちゃったの?
ttp://xdoclet.codehaus.org/に何もないし。

1.2系も4月以降リリースないし、不安だ・・・。
0092デフォルトの名無しさんNGNG
SGenで。
0093デフォルトの名無しさんNGNG
>>91
CVSからゲット。
:pserver:[email protected]:/scm/generama
:pserver:[email protected]:/scm/xdoclet

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

>>92
SGenってライセンスなに?
SGenだけじゃなく、あの人の公開してるプロダクトって
全部ライセンスがわからないんだけど・・・
0094デフォルトの名無しさんNGNG
>>93
ライセンスどころか、あの人自体がわからないね。
「おたく」って・・・
実際にはXDoclet2がちゃんと表に出てきたら話に登らなくなるでしょ。
0095デフォルトの名無しさんNGNG
>>94
XDoclet2が使えるレベルになるまでは相当かかるんじゃない?
1.2系のXJavadoc/XDTベースのモジュールが全く使えなくなるわけだし。
今あるモジュール全てをVelociry/Jellyベースのモジュールとして作成しなおすのは結構時間かかるかと。
0096デフォルトの名無しさんNGNG
>>95
Web/Struts/Hibernate/EJBくらいが使えれば、とりあえず文句はない。
0097デフォルトの名無しさんNGNG
jdk1.5の新機能さんたちを使ってると
エラーが出ちゃってxdocletが使い物にならん・・・・
こまったにゃぁ〜
0098デフォルトの名無しさんNGNG
>>97
エラーが出る部分はXDocletの対象からはずす。
サーブレットやらStrutsのActionやらに、新文法が便利だと思えるような処理を書くなという親心だ。
009997NGNG
>>98
Actionには書かなくても済みそうだけど
Hibernate使ってるんでそっちが大変そう
新文法楽チンで良いのになぁ今回はあきらめて1.4でやるか・・・
0100デフォルトの名無しさんNGNG
>>99
Hibernateのマッピングコードにも処理書かなくていいでしょ。
0101デフォルトの名無しさんNGNG
1.2.2アゲ
これでservlet2.4やらstruts1.2のdtd定義が使える
0102デフォルトの名無しさんNGNG
しかし、ほとんどのミラーにファイルがないのはいかがなものか。
sourceforge、ミラーの順番が表示のたびにかわるから、どこまで試したかわからんし
0103デフォルトの名無しさんNGNG
VOXROXにミラーされてたよ。
なんで一週間近くも他はミラーされてないんだ?
0104デフォルトの名無しさんNGNG
1.2系のバグフィックスよりも、さっさと2.0系だしてほしい。
既存のモジュールをいじったり、
カスタムテンプレートやモジュール作るときにもうXDTをいじりたくない・・・
0105デフォルトの名無しさんNGNG
http://dist.codehaus.org/xdoclet/jars/xdoclet-2.0.jar
ftp://ftp.sourceforge.net/pub/sourceforge/x/xd/xdoclet-plugins/xdoclet-plugins-1.0-alpha-1-bin.zip
0106104NGNG
))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みてもにタグがうってないので、何が違うのかわからない・・・・
0107104NGNG
>>104じゃなくて>>105だった・・・・
自分にレスしてどうする・・・orz
0108デフォルトの名無しさんNGNG
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>

  次レスへ・・・
0109デフォルトの名無しさんNGNG
>>108の続き

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

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

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

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

 以上です。よろしくお願いします。
0110デフォルトの名無しさんNGNG
age させていただきます。
0111デフォルトの名無しさんNGNG
>>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)を用意するくらいかな。
0112デフォルトの名無しさんNGNG
ttp://opensource.atlassian.com/projects/xdoclet/browse/XDT-781 で同じ問題が
あがっているようなので、是非そっちにも報告してください。
0113デフォルトの名無しさんNGNG
最近XDocletの使い方を理解した。

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

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

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

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

0114デフォルトの名無しさんNGNG
>>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>

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

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

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

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

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

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

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

Soooo Coooooool!!

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

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

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