[Seasar-user:13071] jarファイル中のクラスでHotDeploy

Kazuya Sugimoto [E-MAIL ADDRESS DELETED]
2008年 2月 26日 (火) 13:45:43 JST


杉本です。

HotDeplyについて教えていただけないでしょうか。

下記issueをみると対応済みのようですが、HotDeployで
Jarファイル中のクラスをHotDeployしよとするとIORuntimeException
が発生してしまいます。
https://www.seasar.org/issues/browse/CONTAINER-9

環境はEclipseのWTPですが、Web用のプロジェクトと共通用のプロジェクトを
作成しています。Web用のプロジェクトのプロパティで「J2EEモジュール依存関係」
という項目があり、そこで共通用のプロジェクトを追加しています。

WTPでこのように設定すると共通用プロジェクトのクラスファイルがjarファイルになり
WEB-INF/lib以下に出力されます。

Jarファイルが作られるのに時間がかかり間に合っていないのかなとも思った
のですが、時間を空けてjarファイルの更新日時を確認してから試しても駄目でした。
Tomcatを再起動すると例外は発生しなくなります。

Seasar2のせいではないような気がしますが、なにか情報があれば教えてください。

あと、例外発生後にJarファイルに含まれる対象のクラスをエラー前の元の
ソースコードに戻して、Jarファイルが更新されたのを確認してから試すと、
例外が発生しませんでした。

バージョンは以下の通りです。
Seasar 2.4.22
Eclipse 3.3.1.1

スタックトレースは以下の通りです。
org.seasar.framework.exception.IORuntimeException:
[ESSR0040]IO例外が発生しました。理由はjava.io.EOFException: Unexpected end of ZLIB
input stream
	at org.seasar.framework.util.InputStreamUtil.getBytes(InputStreamUtil.java:75)
	at org.seasar.framework.container.hotdeploy.HotdeployClassLoader.defineClass(HotdeployClassLoader.java:102)
	at org.seasar.framework.container.hotdeploy.HotdeployClassLoader.defineClass(HotdeployClassLoader.java:85)
	at org.seasar.framework.container.hotdeploy.HotdeployClassLoader.loadClass(HotdeployClassLoader.java:66)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
	at java.lang.Class.getDeclaredFields0(Native Method)
	at java.lang.Class.privateGetDeclaredFields(Class.java:2259)
	at java.lang.Class.getDeclaredFields(Class.java:1715)
	at org.seasar.framework.beans.impl.BeanDescImpl.addFields(BeanDescImpl.java:732)
	at org.seasar.framework.beans.impl.BeanDescImpl.setupFieldsByClass(BeanDescImpl.java:754)
	at org.seasar.framework.beans.impl.BeanDescImpl.setupFields(BeanDescImpl.java:719)
	at org.seasar.framework.beans.impl.BeanDescImpl.setupFields(BeanDescImpl.java:712)
	at org.seasar.framework.beans.impl.BeanDescImpl.<init>(BeanDescImpl.java:110)
	at org.seasar.framework.beans.factory.BeanDescFactory.getBeanDesc(BeanDescFactory.java:57)
	at org.seasar.framework.container.factory.ConstantAnnotationHandler.createComponentDef(ConstantAnnotationHandler.java:151)
	at org.seasar.framework.container.factory.TigerAnnotationHandler.createComponentDef(TigerAnnotationHandler.java:387)
	at org.seasar.framework.container.creator.ComponentCreatorImpl.createComponentDef(ComponentCreatorImpl.java:262)
	at org.seasar.framework.container.creator.ComponentCreatorImpl.createComponentDef(ComponentCreatorImpl.java:286)
	at org.seasar.framework.container.hotdeploy.HotdeployBehavior.createComponentDef(HotdeployBehavior.java:195)
	at org.seasar.framework.container.hotdeploy.HotdeployBehavior.getComponentDef(HotdeployBehavior.java:141)
	at org.seasar.framework.container.impl.S2ContainerBehavior$DefaultProvider.acquireFromHasComponentDef(S2ContainerBehavior.java:172)
	at org.seasar.framework.container.impl.S2ContainerBehavior.acquireFromHasComponentDef(S2ContainerBehavior.java:86)
	at org.seasar.framework.container.impl.S2ContainerImpl.hasComponentDef(S2ContainerImpl.java:456)
	at org.seasar.struts.filter.RoutingFilter.doFilter(RoutingFilter.java:57)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at org.seasar.framework.container.hotdeploy.HotdeployFilter.doFilter(HotdeployFilter.java:63)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at org.seasar.framework.container.filter.S2ContainerFilter.doFilter(S2ContainerFilter.java:77)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at org.seasar.extension.filter.EncodingFilter.doFilter(EncodingFilter.java:69)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
	at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
	at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
	at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
	at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
	at java.lang.Thread.run(Thread.java:595)
Caused by: java.io.EOFException: Unexpected end of ZLIB input stream
	at java.util.zip.ZipFile$2.fill(ZipFile.java:335)
	at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:134)
	at java.io.FilterInputStream.read(FilterInputStream.java:111)
	at org.seasar.framework.util.InputStreamUtil.getBytes(InputStreamUtil.java:70)
	... 47 more

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

-- 
Kazuya Sugimoto
Microsoft MVP Visual Developer - Solutions Architect
http://d.hatena.ne.jp/sugimotokazuya/


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