Dolteng - SAStruts + Mayaa + S2JDBC を組み合わせたプロジェクトで S2JDBC-Gen を使用する

失敗

Dolteng で SAStruts + Mayaa + S2JDBC を組み合わせたプロジェクトを作成
図1 SAStruts + Mayaa + S2JDBC プロジェクト

図1 SAStruts + Mayaa + S2JDBC プロジェクト

Dolteng で SAStruts + Mayaa + S2JDBC を組み合わせたプロジェクトを作成しました (図1) 。

s2jdbc-gen-build.xml などの編集を完了させ、S2JDBC-Gen を実行してみると org.seasar.framework.exception. ParserConfigurationRuntimeException が発生し、処理が停止してしまいました (スタックトレース) 。

Mayaa を使わない、SAStruts + S2JDBC だけのプロジェクトでは、この障害は発生しません。Mayaa を使う場合は、何か特別な設定が必要なのでしょうか?

環境

このレポートは、以下の環境について記述したものです。

JDK Java SE Development Kit 6 Update 16
Dolteng プラグイン Dolteng 0.39.0
Seasar
  • S2Container 2.4.40
  • SAStruts 1.0.4 SP 7
  • Mayaa 1.1.18
  • S2JDBC-Gen 2.4.40

スタックトレース

S2JDBC-Gen 実行時のスタックトレース

原因

S2JDBC-Gen を使用するには、XInclude に対応した XML パーサが必要です。 しかし、Mayaa にハンドルされている Xerces (Mayaa 1.1.18 の場合は Xerces 2.7.1) という XML パーサは、XInclude に対応していません。 このため、org.seasar.framework.exception.ParserConfigurationRuntimeException が発生してしまうのです。

解決策

XInclude に対応した XML パーサを使用するように設定する必要があります。 Java SE 5 以上の JDK / JRE にハンドルされている XML パーサは XInclude に対応しているので、この XML パーサを使用するように設定します。

(1) services フォルダの作成

<プロジェクト・ルート>/src/main/resources/META-INF フォルダに、services フォルダを作成します。

(2) javax.xml.parsers.SAXParserFactory の作成

(1) で作成した services フォルダに、javax.xml.parsers.SAXParserFactory を作成します (図2) 。

javax.xml.parsers.SAXParserFactory の作成
図2 javax.xml.parsers.SAXParserFactory

図2 javax.xml.parsers.SAXParserFactory

javax.xml.parsers.SAXParserFactory には、SAXParserFactory の実装クラス名を記述します。 以下に、Sun (Oracle) 製 JDK を使用している場合の例を示します。

[javax.xml.parsers.SAXParserFactory - 実装クラス名の指定]
com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl

以上で、org.seasar.framework.exception.ParserConfigurationRuntimeException は発生しなくなるはずです。 S2JDBC-Gen を再実行してみましょう。

参考サイト

コメント

コメント投稿
(非公開)
     « アイコン一覧 »
(必須)

作成日:2009/12/04
更新日:2009/12/04