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

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

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

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

Struts

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

Tomcat

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

解決済

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

k_kkk
k_kkk

総合スコア4

Java

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

Struts

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

Tomcat

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

1回答

1評価

1クリップ

1127閲覧

投稿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

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="mayaa-default" extends="struts-default"> <result-types> <result-type class="org.seasar.mayaa.struts2.MayaaResult" name="mayaa" /> </result-types> </package> </struts>

該当のソースコード

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

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

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

java

@ParentPackage("hoge") @InterceptorRefs({ @InterceptorRef("hogeDefaultStack"), @InterceptorRef("defaultStack") }) @Results({ @Result(name = "success", type = "mayaa", location = "login.html"), @Result(name = "login", type = "mayaa", location = "index.html") })

試したこと


以下のサイトを参考に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

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

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

Java

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

Struts

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

Tomcat

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