質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Guice

Guiceは、Javaで開発されたDIフレームワーク。アノテーションを用いたJavaオブジェクトへの依存性の注入をサポートします。独自のファクトリーを作成する必要なないためテストが容易になり、プログラムのモジュール性を高めることが可能です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Struts

StrutsはJava向けのWebアプリケーションフレームです。MVCモデルに基づいており、JSPやJavaサーブレットを組み合わせ、アプリケーション構築時に使用する各機能を提供しています。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

解決済

Struts2 2.5内でgoogle guiceが動作しない

k_kkk
k_kkk

総合スコア4

Guice

Guiceは、Javaで開発されたDIフレームワーク。アノテーションを用いたJavaオブジェクトへの依存性の注入をサポートします。独自のファクトリーを作成する必要なないためテストが容易になり、プログラムのモジュール性を高めることが可能です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Struts

StrutsはJava向けのWebアプリケーションフレームです。MVCモデルに基づいており、JSPやJavaサーブレットを組み合わせ、アプリケーション構築時に使用する各機能を提供しています。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。

1回答

0評価

0クリップ

1340閲覧

投稿2020/10/27 10:38

概要

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

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN" "http://struts.apache.org/dtds/struts-2.5.dtd"> <struts> <constant name="struts.enable.DynamicMethodInvocation" value="true" /> <constant name="struts.devMode" value="false" /> <constant name="struts.ui.theme" value="simple" /> <constant name="struts.action.extension" value="do,action,json" /> <constant name="struts.custom.i18n.resources" value="constant,message" /> <constant name="struts.appVersion" value="X.X.X" /> <package name="default" namespace="/" extends="struts-default"> ----省略---- </package> <include file="webapi.xml" /> </struts>

web.xml

xml

<?xml version="1.0" encoding="UTF-8"?> <web-app id="WebApp_9" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <display-name>Struts Blank</display-name> <distributable /> <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <listener> <listener-class>org.apache.struts2.tiles.StrutsTilesListener</listener-class> </listener> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> <dispatcher>REQUEST</dispatcher> <dispatcher>FORWARD</dispatcher> </filter-mapping> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>MayaaServlet</servlet-name> <servlet-class>org.seasar.mayaa.impl.MayaaServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>MayaaServlet</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping> </web-app>

確認したこと

①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

ご教示の程よろしくお願い致します。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Guice

Guiceは、Javaで開発されたDIフレームワーク。アノテーションを用いたJavaオブジェクトへの依存性の注入をサポートします。独自のファクトリーを作成する必要なないためテストが容易になり、プログラムのモジュール性を高めることが可能です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Struts

StrutsはJava向けのWebアプリケーションフレームです。MVCモデルに基づいており、JSPやJavaサーブレットを組み合わせ、アプリケーション構築時に使用する各機能を提供しています。

Eclipse

Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

Tomcat

TomcatはApache Software Foundation (ASF)で開発されたオープンソースのWebコンテナです。