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

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

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

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

Struts

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

Tomcat

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

Q&A

解決済

1回答

3006閲覧

Struts2 2.3から2.5へバージョンアップするとmayaaが認識されなくなってしまう

退会済みユーザー

退会済みユーザー

総合スコア0

Java

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

Struts

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

Tomcat

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

1グッド

1クリップ

投稿2020/10/23 02:39

概要

Struts2 2.3を使用して、Webアプリケーションを運用しています。
2.3がEOLを迎えているため、2.5へバージョンアップを行うこととなりました。
https://www.jpcert.or.jp/at/2020/at200034.html

2.3使用時からいくつかのプラグインを導入しており、その内、struts2-mayaa-plugin-1.0.1.jarに関して手詰まりになってしまったため、質問いたします。
http://mayaa.seasar.org/subprojects/index.html#mayaastruts2

発生している問題

今回発生している問題は、struts2-convention-pluginを使用したResults,Resultアノテーション内に
@Result(name = "success", type = "mayaa", location = "login.html")
と記述した場合に mayaa が認識されない事象になります。

tomcat起動時に以下のエラーメッセージが表示されます。
・エラーメッセージ
Result type [mayaa] which is defined in the Result annotation on the class [class jp.co.abc.hoge.action.XXXAction] or determined by the file extension or is the default result type for the PackageConfig of the action, could not be found as a result-type defined for the Struts/XWork package [jp.co.abc.hoge.action#hoge#] - [unknown location]

既にstruts2-mayaa-plugin-1.0.1.jar内にstrutrs-defaultを継承する記述があり、typeの定義等もされているので、読み込めていない原因が特定できません。

xml

1<?xml version="1.0" encoding="UTF-8" ?> 2 3<!DOCTYPE struts PUBLIC 4 "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 5 "http://struts.apache.org/dtds/struts-2.0.dtd"> 6 7<struts> 8 <package name="mayaa-default" extends="struts-default"> 9 <result-types> 10 <result-type class="org.seasar.mayaa.struts2.MayaaResult" 11 name="mayaa" /> 12 </result-types> 13 </package> 14</struts>

該当のソースコード

struts.xmlに対しては前バージョン(2.3.32)使用時から以下のような記述をしており、変更はしていません。

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 ---------mayaa-defaultを使用しない他パッケージに関する宣言のため省略------------ 19 20 <package name="hoge" namespace="/hoge" extends="mayaa-default"> 21 <interceptors> 22 <interceptor name="hogeDefaultStack" class="jp.co.abc.hoge.interceptor.LoginInterceptor" /> 23 </interceptors> 24 <global-results> 25 <result name="login_error">login.html</result> 26 <result name="error">login.html</result> 27 </global-results> 28 </package> 29 30 <include file="webapi.xml" /> 31</struts>

また、対応するAction.javaには以下の通り定義しています。

java

1@ParentPackage("hoge") 2@InterceptorRefs({ 3 @InterceptorRef("hogeDefaultStack"), 4 @InterceptorRef("defaultStack") 5}) 6@Results({ 7 @Result(name = "success", type = "mayaa", location = "login.html"), 8 @Result(name = "login", type = "mayaa", location = "index.html") 9}) 10

試したこと


以下のサイトを参考に2.3→2.5へのバージョンアップに伴う基本的な変更点については既に反映済みで、ビルドエラーはありません。
https://cwiki.apache.org/confluence/display/WW/Struts+2.3+to+2.5+migration#space-menu-link-content


アノテーションを用いず、struts.xmlに直接actionやResultを列挙する形式でも試しましたが、エラーに変化はありませんでした。


struts.xmlの
<package name="hoge" namespace="/hoge" extends="mayaa-default">
からmayaa-defaultを適当な文字列に変更した場合、読み込めない旨、エラーメッセージが表示されるのでmayaa-default自体は読み込めていると思われます。

補足情報

■使用IDE
eclipse oxygen

■JDK
jdk8u262-b10

■tomcat
7.0.104

■主な使用ライブラリ
struts 2.5.22
mayaa-1.1.34.jar
struts2-mayaa-plugin-1.0.1

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

A-pZ👍を押しています

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

struts2-mayaa-plugin-1.0.1を見たところ、Struts2.3までの実装である org.apache.struts2.dispatcher.StrutsResultSupport を継承しており、これは Struts2.5ではパッケージが移動していて、このままではこのプラグインは動作しません。

2.3.x org.apache.struts2.dispatcher.StrutsResultSupport 2.5.x org.apache.struts2.result.StrutsResultSupport;

こちらソースコード( https://github.com/seasarorg/mayaa-struts2 )がこちらにあるので、Struts2.5系に対応したパッケージ移動させれば可能ではないかと思います。(別途、私の方でも検証しています)

投稿2020/10/24 04:01

A-pZ

総合スコア12011

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/10/26 01:19 編集

プラグイン自体の動作不能を疑っていたのですが、ご指摘の通り継承先が間違っておりました。 本件については解決致しましたので、ベストアンサーとさせていただきます。ご対応ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問