[Seasar-user:19348] Re: [Ymir][S2Pluggable]定義ファイルの差し替え

YOKOTA Takehiko [E-MAIL ADDRESS DELETED]
2010年 2月 18日 (木) 14:47:53 JST


横田です。

定義ファイルの差し替えなんていう機能があるんですね…。知りませんでした。

それはさておき、こちらでも試してみましたが、再現させることができませんでした。
具体的には、別のエラーが発生しました。(後述)

田村さんのメールに書かれているエラーをみると、

> org.xml.sax.SAXParseException: The content
> of element type "components" must match
> "(description?,include*,(component|meta|xi:include)*)". at
> file:///C:/Program%20Files/Apache%20Software%20Foundation/Tomcat%206.0/s2container.dicon(
> lineNumber = 43, columnNumber = 14)

という出力があるのでおそらくs2container.diconの書式が間違っているのが
原因かと思いますが、添付していただいたs2container.diconには間違いはない
ようです。

仮にs2container.diconに間違いがないとすると、TooManyRegistrationRuntimeException
エラーが発生します。これはPathResolverのエントリが2つ
・  <component class="org.seasar.cms.pluggable.PluggablePathResolver" />
・  <component class="org.seasar.framework.container.factory.SimplePathResolver">
あるためです。

従って、少なくとも現状のYmirでは今のSimplePathResolverはそのままでは
使えないことになります。すみません。

なお、Ymirの世界で田村さんのやりたいこと:

> 各自ローカルでの開発ではS2JTAを利用し、試験・本番環境ではAP
> サーバ(Weblogic10.3)のJTAを利用したい。

を実現するには、
・開発用のjta.diconはsrc/main/resources-developに配置する
・試験用のjta.diconはsrc/main/webapp-it/WEB-INF/classesに配置する
・本番用のjta.diconはsrc/main/webapp-release/WEB-INF/classesに配置する
として下さい。こうしておくと、ローカルでの開発環境(Eclipse)では
開発用のjta.diconが使われ、MavenでWARをビルドする際「mvn package」
または「mvn -Pit package」とすると試験用のjta.diconが含まれた試験用の
WARが作成され、「mvn -Prelease package」とすると本番用のjta.dkconが
含まれた本番用のWARが作成されます。

以上よろしくお願いします。


とら さんは書きました:
> お世話様です。田村です。
> 
> http://s2container.seasar.org/2.4/ja/DIContainer.html#ConfigFileReplacement
> 
> Ymirにて、上記を参考にS2Containerの「定義ファイルの差し替え」
> を行おうと設定したのですが、コンテキスト初期化時に下記の例外が
> でて起動に失敗しました。
> 
> s2-classbuilderにてdiconファイルの置き換えにて代替することが
> できたのですが、S2Containerの「定義ファイルの差し替え」と併用
> することは出来ないでしょうか?
> 
> ◆環境
> Ymir-1.0.6
> Seasar-2.4.40
> s2-classbuilder-0.0.12-SNAPSHOT
> s2-pluggable-0.0.13
> 
> Tomcat-6.0.24
> 
> ◆ログ
> 2010-02-18 13:27:52,031 DEBUG main [Logger#log():231] -
> S2Containerを作成します。path=external.dicon
> 2010-02-18 13:27:52,062 DEBUG main [Logger#log():231] -
> S2Containerを作成しました。path=external.dicon
> 2010-02-18 13:27:52,078 DEBUG main [Logger#log():231] -
> S2Containerを作成します。path=global.dicon
> 2010-02-18 13:27:52,093 DEBUG main [Logger#log():231] -
> S2Containerを作成しました。path=global.dicon
> 2010/02/18 13:27:52 org.apache.catalina.core.StandardContext listenerStart
> 致命的: クラス org.seasar.ymir.servlet.YmirListener のリスナインスタンスにコンテキスト初期化イベントを送信中の例外です
> java.lang.ExceptionInInitializerError
> at org.seasar.cms.pluggable.impl.PluggableContainerFactoryImpl.createS2Container(PluggableContainerFactoryImpl.java:99)
> at org.seasar.cms.pluggable.impl.PluggableContainerFactoryImpl.prepareForContainer(PluggableContainerFactoryImpl.java:93)
> at org.seasar.cms.pluggable.SingletonPluggableContainerFactory.prepareForContainer(SingletonPluggableContainerFactory.java:59)
> at org.seasar.cms.pluggable.servlet.PluggableListener.contextInitialized(PluggableListener.java:21)
> at org.seasar.ymir.servlet.YmirListener.contextInitialized(YmirListener.java:25)
> at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3972)
> at org.apache.catalina.core.StandardContext.start(StandardContext.java:4467)
> at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
> at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
> at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526)
> at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:637)
> at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:563)
> at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:498)
> at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
> at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
> at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
> at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
> at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)
> at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
> at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
> at org.apache.catalina.core.StandardService.start(StandardService.java:516)
> at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
> at org.apache.catalina.startup.Catalina.start(Catalina.java:593)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
> at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
> Caused by: org.seasar.framework.exception.SAXRuntimeException:
> [ESSR0054]SAXで例外が発生しました。理由はorg.xml.sax.SAXParseException: The content
> of element type "components" must match
> "(description?,include*,(component|meta|xi:include)*)". at
> file:///C:/Program%20Files/Apache%20Software%20Foundation/Tomcat%206.0/s2container.dicon(
> lineNumber = 43, columnNumber = 14)
> at org.seasar.framework.util.SAXParserUtil.parse(SAXParserUtil.java:57)
> at org.seasar.framework.xml.SaxHandlerParser.parse(SaxHandlerParser.java:117)
> at org.seasar.framework.xml.SaxHandlerParser.parse(SaxHandlerParser.java:107)
> at org.seasar.framework.container.factory.XmlS2ContainerBuilder.parse(XmlS2ContainerBuilder.java:170)
> at org.seasar.framework.container.factory.XmlS2ContainerBuilder.build(XmlS2ContainerBuilder.java:148)
> at org.seasar.framework.container.factory.S2ContainerFactory.configure(S2ContainerFactory.java:237)
> at org.seasar.framework.container.factory.S2ContainerFactory.configure(S2ContainerFactory.java:215)
> at org.seasar.framework.container.factory.S2ContainerFactory.<clinit>(S2ContainerFactory.java:120)
> ... 29 more
> Caused by: org.xml.sax.SAXParseException: The content of element type
> "components" must match
> "(description?,include*,(component|meta|xi:include)*)".
> at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:195)
> at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.error(ErrorHandlerWrapper.java:131)
> at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:384)
> at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:318)
> at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.handleEndElement(XMLDTDValidator.java:2017)
> at com.sun.org.apache.xerces.internal.impl.dtd.XMLDTDValidator.endElement(XMLDTDValidator.java:901)
> at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanEndElement(XMLDocumentFragmentScannerImpl.java:1774)
> at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2930)
> at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:648)
> at com.sun.org.apache.xerces.internal.impl.XMLNSDocumentScannerImpl.next(XMLNSDocumentScannerImpl.java:140)
> at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
> at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:807)
> at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:737)
> at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:107)
> at com.sun.org.apache.xerces.internal.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1205)
> at com.sun.org.apache.xerces.internal.jaxp.SAXParserImpl$JAXPSAXParser.parse(SAXParserImpl.java:522)
> at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
> at org.seasar.framework.util.SAXParserUtil.parse(SAXParserUtil.java:55)
> ... 36 more
> 
> ◆diconファイル
> /src/main/resources/s2container.dicon
> 内容は添付します。
> 
> ◆やりたいこと
> 各自ローカルでの開発ではS2JTAを利用し、試験・本番環境ではAP
> サーバ(Weblogic10.3)のJTAを利用したい。
> 
> 
> 以上、よろしくお願いします。
> --
> TAMURA Tadayuki mailto:[E-MAIL ADDRESS DELETED]
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user


-- 
YOKOTA Takehiko
  [E-MAIL ADDRESS DELETED]


Seasar-user メーリングリストの案内