読者です 読者をやめる 読者になる 読者になる

この日記は私的なものであり所属会社の見解とは無関係です。 GitHub: takahashikzn

struts-2.1.8リリース

Struts2

さりげなくStruts-2.1.8がリリースされていました。

変更点

Backward compatibility issues with prior development release

  • The bean named-variable was renamed to namedVariable ww-3092
  • If the @Result annotation is marked at the method level, it will override class-level @Result annotations ww-3043
  • The @ParentPackage annotation can now be inherited ww-3162
  • The DefaultActionMapper now honors the dynamic method invocation configuration value as well as using the newer camelCase naming conventions for its shortcuts (redirectAction: instead of redirect-action:) ww-3129

振る舞いが変更になった箇所がある。

  • named-variableというBeanの名前をnamedVariableへ変更した。
  • @Resultアノテーションをメソッドに付与している場合、クラスに付与している@Resultを上書きするようになった。
  • @ParentPackageアノテーションを継承できるようにした。
  • DefaultActionMapperが、動的メソッド実行設定値(なんだそれ?)としてキャメルケースの命名規約を解釈できるようにした。(例えば、redirect-action:ではなくredirectAction:とできるようにした)

New Features and Plugins

  • Struts now has a JSON plugin to support a JSON result type
  • Struts has an embeddedjsp plugin for compiling JSPs possibly packaged within a jar
  • The Struts 2 Spring plugin now supports spring's reloading class loader
  • Struts now supports a full-featured OSGi Plugin osgi plugin

新機能及び新プラグイン

  • JSON結果タイプをサポートするJSONプラグイン。
  • jarにパッケージングされたjspをコンパイルして実行できるようにするembeddedjspプラグイン。 (← 素晴らしい!!)
  • Struts2-SpringプラグインはSpringのクラスローダーリロードに対応。
  • OSGiの機能を完全に利用可能とするosgiプラグイン。

Struts-2.1.8へ移行してみた

とりあえず起動してみるとこんなエラーが。

java.lang.NoClassDefFoundError: org/aspectj/weaver/loadtime/ClassPreProcessorAgentAdapter
	at org.springframework.context.weaving.AspectJWeavingEnabler.postProcessBeanFactory(AspectJWeavingEnabler.java:69)
	at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:553)
	at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:536)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:362)
	at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3934)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4429)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
	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:583)
	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:288)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: java.lang.ClassNotFoundException: org.aspectj.weaver.loadtime.ClassPreProcessorAgentAdapter
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
	... 22 more
2009/10/12 18:42:34 org.apache.catalina.core.StandardContext listenerStart
致命的: クラス org.springframework.web.context.ContextLoaderListener のリスナインスタンスにコンテキスト初期化イベントを送信中の例外です
java.lang.NoClassDefFoundError: org/aspectj/weaver/loadtime/ClassPreProcessorAgentAdapter
	at org.springframework.context.weaving.AspectJWeavingEnabler.postProcessBeanFactory(AspectJWeavingEnabler.java:69)
	at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:553)
	at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:536)
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:362)
	at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:255)
	at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:199)
	at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:45)
	at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3934)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4429)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
	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:583)
	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:288)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: java.lang.ClassNotFoundException: org.aspectj.weaver.loadtime.ClassPreProcessorAgentAdapter
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1387)
	at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1233)
	at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
	... 22 more


Struts-2.1.8では、以前のxwork-2.1.2からxwork-core-2.1.6へ依存関係が変更されたのですが、
xwork-core-2.1.6.jarはAspectJ関連のクラスを含まないために起きているようです。


そこで、ランタイムライブラリとしてaspectjweaver-1.5.4を追加してみたら直りました。


その他では、ざっと見た限り特に問題はないようです。