失敗
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 |
|
スタックトレース
- 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 には、SAXParserFactory の実装クラス名を記述します。 以下に、Sun (Oracle) 製 JDK を使用している場合の例を示します。
com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl
以上で、org.seasar.framework.exception.ParserConfigurationRuntimeException は発生しなくなるはずです。 S2JDBC-Gen を再実行してみましょう。
