先週8/29にS2Flex2のrc-1をリリースした後akabana-user[1]にあったsampleがJDK1.4環境で動作しないという問題にハマっていました。
実行環境とコンパイル環境をJDK1.4にすべて揃えて実行すると簡単に再現しました。
Exceptionの内容を見てみると、backport175でAnnotationを呼び出すところで例外が発生しているようです。
ERROR 2006-09-02 02:50:32,319 [http-8080-Processor25] could not retrieve the bytecode for class [examples/flex2/add/service/impl/AddServiceImpl$$EnhancedByS2AOP$$1f796d0] org.codehaus.backport175.reader.ReaderException: could not retrieve the bytecode for class : :
AOPをはずしてみたらというアドバイスのもと、flex2_example-customizer.diconからAOPの部分をコメントアウトして実行すると動作するようになりました。
AOPをもとの設定に戻して、s2flex2-backport175を外してAnnotationを利用しない形にしても動作しました。
今のところ、S2Flex2 + JDK1.4 + CoolDeploy環境ではAOPかAnnotationのどちらかを諦めることになってしまいます。
まずはbackport175のエラーしているクラスを探してたところ、backport175のページからはソースコードがたどれないので
fisheyeのページで探して見つけることができました。
Loaderから該当のクラスを呼び出す際にクラスが見つけられていないようにみえます。
原因はどこにあるのか..
・CoolDeploy/HotDeployではClassLoaderが異なっている?
・backport175でのアノテーション?
ヒントになる事がわかる方、教えてください。m(__)m
#上記とは別にs2flex2-backport175/s2flex2-tigerでのバグを発見して
#修正することができました。この2つはrc-2として近くリリースする予定です。
backport175
http://backport175.codehaus.org/
ソースコード
http://fisheye.codehaus.org/browse/backport175
以下は例外発生時のStackTraceです。
DEBUG 2006-09-04 18:50:32,240 [http-8080-Processor25] BEGIN
examples.flex2.add.service.impl.AddServiceImpl#calculate2(examples.flex2.add.dto.AddDto@f51766)
DEBUG 2006-09-04 18:50:32,240 [http-8080-Processor25] END
examples.flex2.add.service.impl.AddServiceImpl#calculate2(examples.flex2.add.dto.AddDto@f51766)
: examples.flex2.add.dto.AddDto@f51766
ERROR 2006-09-04 18:50:32,319 [http-8080-Processor25] could not
retrieve the bytecode for class
[examples/flex2/add/service/impl/AddServiceImpl$$EnhancedByS2AOP$$1f796d0]
org.codehaus.backport175.reader.ReaderException: could not retrieve
the bytecode for class
[examples/flex2/add/service/impl/AddServiceImpl$$EnhancedByS2AOP$$1f796d0]
at org.codehaus.backport175.reader.bytecode.AnnotationReader.parse(AnnotationReader.java:917)
at org.codehaus.backport175.reader.bytecode.AnnotationReader.(AnnotationReader.java:936)
at org.codehaus.backport175.reader.bytecode.AnnotationReader.getReaderFor(AnnotationReader.java:196)
at org.codehaus.backport175.reader.bytecode.AnnotationReader.getReaderFor(AnnotationReader.java:167)
at org.codehaus.backport175.reader.Annotations.getAnnotation(Annotations.java:87)
at org.seasar.flex2.util.data.transfer.annotation.handler.Backport175ActionAnnotationHandler.getExportStorageType(Backport175ActionAnnotationHandler.java:32)
at org.seasar.flex2.util.data.transfer.impl.TransferImpl.exportToStorage(TransferImpl.java:43)
at org.seasar.flex2.rpc.remoting.service.impl.DataTransferSupportedRemotingServiceInvokerImpl.invoke(DataTransferSupportedRemotingServiceInvokerImpl.java:48)
この記事に対するコメント