Home > Java

Java Archive

DevLoader改変、Mayaa対応編


昨日のDevLoader改変により、最近のSeasarを使ったプロジェクトに対応したものの、今日いざ自分のMayaaを使ったプロジェクトのjarファイルをMavenで管理させたら見事に上手く動きませんでした。

というわけでMayaaに対応しました。既に昨日のdevloader-3.2.1ex.jarを使ってみちゃっている方はもう一度同じファイル名のファイルを下記より落とし直してください。

今回の改変版を使わなくてもデプロイ自体は一見上手くいきます。でも、ページレンダリング時にMayaa以外のTaglib(StrutsとかJSTL)のタグがあると、デプロイ時のMayaaのTLD検索でMavenで管理したjarファイルが見えていないためエラーになります。

なのでTLDファイルだけをjarファイルから抜き出してWEB-INF/以下とかに配置しても解決するんですが、それもちょっと面倒だったり、使ってるjarとTLDでバージョンの差異が出たりすると面倒なので、Mavenで管理しているjarファイル内のTLDファイルを使えるようにしました。

解決方法にはシステムプロパティを使いました。どうやって対応しようか悩みながらMayaaのTLD検索してるクラスを見てたら、org.seasar.mayaa.impl.builder.library.scanner.ResourceScannerがjava.class.pathというシステムプロパティに書かれているjarファイルを参照していたので、これにDevLoaderで追加されるMavenリポジトリにあるjarファイルのパスを追加しています。また、複数プロジェクトがある時でもそのプロジェクトで使われているjarファイルだけを追加しているので衝突しておかしくなることもないです。

java.class.pathというグローバルなプロパティを使うのはちょっと抵抗があるかもしれないけど、DevLoaderは開発時だけなので問題ないと思います。

m2eclipseプラグインとSysdeo/SQLI Eclipse Tomcat Launcher pluginのDevLoader改変

  • 2007-11-16 (金)
  • Java

id:dragon3さんが書かれたm2eclipseプラグインと tomcatプラグイン (DevLoader) の組み合わせを最近のSeasarでよく使われているgeronimo-apiやgeronimo-servletのjarがある状態で動かさそうとすると、TomcatのFilter初期化時にjava.lang.ClassCastExceptionが再発してしまうので、dragon3のソースを参考に $TOMCAT_HOME/conf/devloader.conf を参照して任意のjarファイルやクラスパスを除外するように改変してみました。以下、使い方。

  1. http://integ.jp/java/devloader/ から devloader-3.2.1ex.jar と devloader.conf をダウンロード
  2. devloader-3.2.1ex.jar をTomcatのライブラリパスに配置する
    • Tomcat 5.x: $TOMCAT_HOME/server/lib
    • Tomcat 6.x: $TOMCAT_HOME/lib
  3. devloader.conf を $TOMCAT_HOME/conf に配置する
    • デフォルトでTomcatとGeronimo用のが書いてあります
      • [12/2追記] devloader.confが存在しない場合、TomcatとGeronimoの問題になるjarを除外するようにしました。要 devloader-3.2.1ex.jar の再ダウンロード。

あとはプロジェクトのProperties -> Tomcat -> 開発用クラスローダーのクラスパスで、次の設定をすれば良いです。

  • チェックする: 開発用クラスローダーを有効にする
    • チェックする: /プロジェクト名/target/classes (例)
    • チェックする: org.maven.ide.eclipse.MAVEN_CLASSPATH_CONTAINER
      • 絶対パスで表示されてるMavenリポジトリのjarファイルはチェックしない

$TOMCAT_HOME/conf/devloader.conf はJavaの正規表現で除外したいものを行ごとに書けば良いです。TomcatとGeronimo以外でどんなのがあるか知らないのでとりあえずこの2つだけ書いてあります(多くの場合、これ以上編集する必要ないと思います)。

# for Tomcat
(.*)/servlet-api(.*).jar
(.*)/jsp-api(.*).jar
# for Geronimo
(.*)/geronimo-jsp(.*).jar
file:/(.*)/geronimo-servlet(.*).jar

ただ、結構前からSeasarにはGeronimoのライブラリが使われているので、もしかしたらもっと良い方法が既にあったりするんじゃないかなっと思ってます。もっと良い方法をご存じでしたら是非教えてください(>_<)。

そして、動かしたかったcubby-examplesが動いたー。

Windows Vista 64-bit版でEclipseでSWTが崩れる件


これを書いた翌日にリリースされてたEclipse 3.4M3で直ってました。これでプログラム書く環境は確保できた。

Windows Vista 64-bit版でEclipse


とりあえず大学の環境をWindows Vista 64-bit版に移行しました。だいたい問題無く、これなら大丈夫かなーっと思ってたらEclipseがとても大丈夫じゃありませんでした。

  • OK: JDK 1.4.2_16 32-bit版 + Eclipse 3.3.1.1 32-bit版
  • NG: JDK 1.5.0_13 64-bit版 + Eclipse 3.3.1.1 32-bit版
  • NG: JDK 1.6.0_03 64-bit版 + Eclipse 3.3.1.1 32-bit版
  • OK: JDK 1.4.2_16 32-bit版 + Eclipse 3.3.1.1 32-bit版 WPF版
  • NG: JDK 1.5.0_13 64-bit版 + Eclipse 3.3.1.1 32-bit版 WPF版
  • NG: JDK 1.6.0_03 64-bit版 + Eclipse 3.3.1.1 32-bit版 WPF版
  • NG: JDK 1.4.2_16 32-bit版 + Eclipse 3.4M2 64-bit版
  • OK: JDK 1.5.0_13 64-bit版 + Eclipse 3.4M2 64-bit版
  • OK: JDK 1.6.0_03 64-bit版 + Eclipse 3.4M2 64-bit版
    • JDK 64-bit版: jdk-*-amd64.exe
    • Eclipse 64-bit版: eclipse-*-win32-x86_64.zip

  • 環境
    • JDK 1.5, 1.6はSun JDK 64-bit版
    • Eclipseの起動オプション例: C:\Software\Eclipse\eclipse.exe -Xmx512m -Xms256m -data E:\Java\Eclipse\Workspace\Web -configuration E:\Java\Eclipse\Configuration -vm C:\Software\Java\jdk-1.5\jre\bin\javaw.exe

NGなのは起動時にエラー吐いて落ちます。今現在の環境でVista 64-bit版環境でJDK 1.5以降 + Eclipseで動かしたい場合は、Stable版は諦めるしかないようです。また、SWTのVista対応がまだ完全じゃなくて一部レイアウトが崩れたりします(追記: 正式にリリースされたEclipse 3.4以降は問題ありません)。

Subversiveの認証ダイアログでユーザ名のテキストフィールドが崩れて見えない図

Subversiveの認証ダイアログでユーザ名のテキストフィールドが崩れて見えない図

  • Tab キー で移動して入力すれば一応使えます。

S2DirectoryのAccess Object名の変更 保留


すいません、20日に書いたS2DirectoryのAccess Object名の変更ですが、Diaoが発音しにくいと僕の周りで不評だったので現状のDirectoryDaoのままでまだいきたいと思います。。

S2DirectoryのAccess Object名の変更検討


現在のDirectoryDaoだと、冗長だったり、S2DaoのDaoと紛らわしかったり、トラブルの原因となったりするので、変更を検討したいと思います。

変更といってもCreatorを追加するだけなので、既にDirectoryDaoで使っている方もcreator.diconを変更しない限り今まで通りで大丈夫です。

変更案としてid:koichikさんにご提案いただいたNaoにしようかなと思っていましたが、NamingだとDNSの色が強いので、1文字多くなっちゃいますがDiaoにしようかなと思ってます。

JdbcManager


重要ポイントは次の感じなのかな。

  • ManyToOne、OneToMany、OneToOneサポート
  • Pagerサポート
  • DaoインタフェースからDxoによる条件句生成へ、Daoインタフェースさようなら?
    • 例: @ConversionRule("managerId : managerId_GT")

あと測らないと判らないけど、conditionsをMapで渡すことで従来実行時にDTOインスタンスからリフレクションで値取得してた部分のコストが低減されるかも?

注意しないといけなさそうな点は次の感じかな。

  • Page、ActionクラスでjdbcManagerを使う場合、注意しないとロジックの分離がなし崩しになり、生SQLを直接書いてる感じになっちゃうかも?
    • 共通部分はService、Logicで!
  • エンティティクラスごとに生成したAutoSelectのインスタンスを使い回すのはNG。実行時ごとにjdbcManager.from(エンティティクラス)から手順を踏む。
    • 例: ServiceやLogicにDaoインスタンスを持たせてた部分をAutoSelectのインスタンスに置き換えて使い回すのはダメ。

従来のS2Daoより出来ることが増えて良い感じだけど、Daoインタフェースが無くなるのに抵抗がある人がいるかもしれないっと思いました。もちろんS2Daoも今後も継続していかれるとのことなので好きな方を使えばOK。

WEB+DB PRESS Vol.39の構成管理実践


Cargo Maven 2 Pluginによるリリース良いな、今度ためしてみよう。

サーバメンテナンスのお知らせ: 2007/04/28 (Sat.) 10:00 – 17:00 +0900 (JST) (予定)


1週間前に既に告知済みですが、当日ということで。

Seasarの一部サーバを置かせていただいている施設のネットワークメンテナンスのため、下記の期間一部サービスがご利用できなくなります。期間中ご不便をおかけいたしますが、ご理解の程よろしくお願いいたします。

  • 停止期間: 2007/04/28 (Sat.) 10:00 – 17:00 +0900 (JST) (予定)
  • 利用可能サービス: 各プロジェクトサイト閲覧, Mavenリポジトリ閲覧, イベントサイト機能
  • 停止サービス:
    • 全利用者向け: SeasarWiki, メーリングリスト, トラッキング, SVNリポジトリ操作, SVNブラウザ
      • メンテナンス期間中にメーリングリストに投稿されたメールはメンテナンス終了後に配送されます。
    • コミッタ向け: メンバー用ページ, SSH接続

S2StrutsQualifiedポイ


S2StrutsQualifiedでやってたことがSplitUpperActionPathNamingRuleとしてS2Struts内に取り込んでいただけたので、次のS2StrutsからはもうS2StrutsQualifiedいらない(゜ー゜)アヒャ。

ホーム > Java

検索
フィード
メタ情報

Return to page top