[Seasar-user:17593] Re: 【S2JDBC+clwork】maven-packageでProtocolException
HALT halt
[E-MAIL ADDRESS DELETED]
2009年 6月 2日 (火) 23:53:50 JST
小林さん
お世話になります。大塚です。
ご回答ありがとうございました。
> S2JDBC をお使いということなので Seasar2.4 系が
> 使われているはずですが (Eclipse 上では実際に
> 2.4 系が使われているのでしょう),コマンドラインで
> 動かす場合のクラスパスに古い Seasar2 の Jar が
> 含まれているのではないでしょうか.
s2xworkのPOMを確認したところ、s2-frameworkの2.3系に依存していたので、
これをexcludeすることで、問題を解決することができました。
また別件の問題なのですが、このcliアプリをFatJar(Uber-Jar)として固めて、
java -classpath cliApp.jar xxx.Main
の様に実行すると
Exception in thread "main" java.lang.IllegalArgumentException: Parameter 'directory' is not a directory
というエラーが発生しました。
※このFatJarを解凍して実行すると、処理が正常終了します。
そこで試しに、
http://s2xwork.sandbox.seasar.org/clwork/ja/download.html
のS2XWork+clworkで試したところ、FatJarにすると同じようなエラーが発生しました。
-----------------以下エラー内容------------------
Exception in thread "main" java.lang.IllegalArgumentException: Parameter 'directory' is not a directory
at org.apache.commons.io.FileUtils.listFiles(FileUtils.java:293)
at org.seasar.xwork.annotation.AnnotationConfigurationProvider.searchAnnotation(AnnotationConfigurationProvider.java:85)
at org.seasar.xwork.annotation.AnnotationConfigurationProvider.init(AnnotationConfigurationProvider.java:72)
at com.opensymphony.xwork.config.impl.DefaultConfiguration.reload(DefaultConfiguration.java:86)
at com.opensymphony.xwork.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:55)
at com.opensymphony.xwork.DefaultActionProxy.(DefaultActionProxy.java:60)
at com.opensymphony.xwork.DefaultActionProxyFactory.createActionProxy(DefaultActionProxyFactory.java:39)
at org.seasar.xwork.clwork.CommandLineDispatcher.dispatch(CommandLineDispatcher.java:48)
at org.seasar.xwork.example.webwork.Main.main(Main.java:15)
-----------------エラー内容終り------------------
そこで、s2xwork-tigerの当該箇所のコードを見てみると、
org.seasar.xwork.annotation.AnnotationConfigurationProvider#searchAnnotation()
で
File root = AnnotationConfigurationProvider.getRootPath(resource);
Collection files = FileUtils.listFiles(
new File(root.getAbsolutePath()+ File.separator + classPackage.replace(".", File.separator)),
new SuffixFileFilter("class"),
TrueFileFilter.INSTANCE);
のような処理になっていました。
本番での稼動を考えると、FatJarによる配備が望ましいのですが、
FatJarで実行する場合はs2xwork-tigerのXWorkActionを使用できないのでしょうか?
----------------------------------------
> Date: Mon, 1 Jun 2009 23:00:25 +0900
> From: [E-MAIL ADDRESS DELETED]
> To: [E-MAIL ADDRESS DELETED]
> Subject: [Seasar-user:17582] Re: 【S2JDBC+clwork】maven-packageでProtocolException
>
> 小林 (koichik) です.
>
> Date: Mon, 1 Jun 2009 22:40:05 +0900
> From: HALT halt
> To:
> Subject: [Seasar-user:17581] 【S2JDBC+clwork】maven-packageでProtocolException
>
>> 現在、S2JDBC+S2Mai(Velocity)+clworkでコマンドラインのアプリを作成しており、
>> Eclipseでは問題なく実行できました。
>>
>> ところが、Mavenでpackageしたものを実行すると、下記のエラーが発生しました。
> (略)
>> Caused by: java.net.ProtocolException: Server redirected too many times (20)
> (略)
>> at org.seasar.framework.util.SAXParserUtil.parse(SAXParserUtil.java:41)
>
> dicon ファイルに指定されている DTD が s2-framework の
> Jar ファイルの中に存在しないためにネットワークに
> アクセスして例外が発生しているようです.
>
> そもそもネットワークアクセスするのがおかしいのですが,
>
>> at org.seasar.framework.container.factory.XmlS2ContainerBuilder.parse(XmlS2ContainerBuilder.java:71)
>> at org.seasar.framework.container.factory.XmlS2ContainerBuilder.build(XmlS2ContainerBuilder.java:58)
>
> この行番号からは,かなり古い Seasar2 が使われて
> いるようです.
> よって,例えば Seasar2.4 の DTD を指定した dicon
> ファイルを Seasar2.3 以前で使おうとしている状況が
> 考えられます.
>
> S2JDBC をお使いということなので Seasar2.4 系が
> 使われているはずですが (Eclipse 上では実際に
> 2.4 系が使われているのでしょう),コマンドラインで
> 動かす場合のクラスパスに古い Seasar2 の Jar が
> 含まれているのではないでしょうか.
>
>
> --
>
> "Koichi Kobayashi"
> "[E-MAIL ADDRESS DELETED]"
> "http://d.hatena.ne.jp/koichik"
>
>
> _______________________________________________
> Seasar-user mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
_________________________________________________________________
写真もデータもSkyDriveで安全にネット上に保存
http://clk.atdmt.com/GBL/go/153787333/direct/01/
Seasar-user メーリングリストの案内