[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 メーリングリストの案内