概要
Struts2 2.3を使用して、Webアプリケーションを運用しています。
2.3がEOLを迎えているため、2.5へバージョンアップを行うこととなりました。
2.3使用時からいくつかのプラグインを導入しており、その内、google guiceに関して手詰まりになってしまったため、質問いたします。
google guice使用にあたり、以下のライブラリが2.3導入当時から使用されていました。
guice-2.0
guice-servlet-2.0
guice-struts2-plugin-2.0
https://repo1.maven.org/maven2/com/google/inject/extensions/
この内、struts2バージョンアップに伴って連携を行っているguice-struts2-plugin-2.0.jarが機能しなくなってしまったと考えています。
発生している問題
tomcat起動時以下のメッセージが表示されます。
10 27, 2020 9:06:30 午前 com.google.inject.struts2.GuiceObjectFactory createInjector
情報: Creating injector...
10 27, 2020 9:06:31 午前 com.google.inject.struts2.GuiceObjectFactory$1 configure
情報: No module found. Set 'guice.module' to a Module class name if you'd like to use one.
10 27, 2020 9:06:31 午前 com.google.inject.struts2.GuiceObjectFactory createInjector
情報: Injector created successfully.
10 27, 2020 9:06:37 午前 org.apache.coyote.AbstractProtocol start
情報: プロトコルハンドラー ["http-bio-8080"] を開始しました。
10 27, 2020 9:06:37 午前 org.apache.catalina.startup.Catalina start
情報: Server startup in 39262 ms
guice-struts2-plugin-2.0.jar内のGuiceObjectFactory.classを確認したところ、Creating injector...やInjector created successfully.のメッセージは文字通りInjectorがnullの場合に出力しているようです。
メッセージ自体はinfoレベルなのですが、実際にアクセスすると以下のエラーメッセージでダウンしてしまいます。
2020/10/27 19:24:11:284 ERROR org.apache.struts2.dispatcher.DefaultDispatcherErrorHandler (87) Exception occurred during processing request: null
java.lang.NullPointerException: null
at com.google.inject.struts2.GuiceObjectFactory$ProvidedInterceptor.intercept(GuiceObjectFactory.java:224) ~[guice-struts2-plugin-2.0.jar:?]
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) ~[struts2-core-2.5.22.jar:2.5.22]
at org.apache.struts2.factory.StrutsActionProxy.execute(StrutsActionProxy.java:48) ~[struts2-core-2.5.22.jar:2.5.22]
at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:574) [struts2-core-2.5.22.jar:2.5.22]
at org.apache.struts2.dispatcher.ExecuteOperations.executeAction(ExecuteOperations.java:79) [struts2-core-2.5.22.jar:2.5.22]
at org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:141) [struts2-core-2.5.22.jar:2.5.22]
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) [catalina.jar:7.0.104]
該当のソースコード
struts.xml、web.xmlに対しては前バージョン(2.3.32)使用時から以下のような記述をしており、変更はしていません。
struts.xml
xml
1<?xml version="1.0" encoding="UTF-8" ?> 2<!DOCTYPE struts PUBLIC 3 "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" 4 "http://struts.apache.org/dtds/struts-2.5.dtd"> 5 6<struts> 7 <constant name="struts.enable.DynamicMethodInvocation" value="true" /> 8 <constant name="struts.devMode" value="false" /> 9 <constant name="struts.ui.theme" value="simple" /> 10 <constant name="struts.action.extension" value="do,action,json" /> 11 <constant name="struts.custom.i18n.resources" value="constant,message" /> 12 <constant name="struts.appVersion" value="X.X.X" /> 13 14 <package name="default" namespace="/" extends="struts-default"> 15 ----省略---- 16 </package> 17 18 <include file="webapi.xml" /> 19</struts>
web.xml
xml
1<?xml version="1.0" encoding="UTF-8"?> 2<web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 5 6 <display-name>Struts Blank</display-name> 7 <distributable /> 8 9 <filter> 10 <filter-name>struts2</filter-name> 11 <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> 12 </filter> 13 <listener> 14 <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class> 15 </listener> 16 17 <filter-mapping> 18 <filter-name>struts2</filter-name> 19 <url-pattern>/*</url-pattern> 20 <dispatcher>REQUEST</dispatcher> 21 <dispatcher>FORWARD</dispatcher> 22 </filter-mapping> 23 24 <welcome-file-list> 25 <welcome-file>index.jsp</welcome-file> 26 </welcome-file-list> 27 28 <servlet> 29 <servlet-name>MayaaServlet</servlet-name> 30 <servlet-class>org.seasar.mayaa.impl.MayaaServlet</servlet-class> 31 <load-on-startup>1</load-on-startup> 32 </servlet> 33 34 <servlet-mapping> 35 <servlet-name>MayaaServlet</servlet-name> 36 <url-pattern>*.html</url-pattern> 37 </servlet-mapping> 38</web-app> 39
確認したこと
①struts2.5とgoogle guiceの適合性について調べましたが、有力な情報が得られていない状況です。
②2.5へのバージョンアップに伴ってstruts2内で一部パッケージ移動が発生していますが、guice-struts2-plugin内に対象パッケージをインポートしている箇所はないため、影響はないと考えています。
補足情報
■開発環境OS
Windows10
■使用IDE
eclipse oxygen
■JDK
jdk8u262-b10
■tomcat
7.0.104
■主な使用ライブラリ
struts 2.5.22
guice-2.0
guice-servlet-2.0
guice-struts2-plugin-2.0
ご教示の程よろしくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。