- PR -

Struts + Tomcatでエラー

1
投稿者投稿内容
moc
会議室デビュー日: 2003/09/12
投稿数: 13
投稿日時: 2003-09-12 13:31
はじめて投稿させて頂きます。
struts1.1+Tomcat4.1.27でstruts_config設定ファイルにActionFormなど指定して
起動させると、以下のエラーがでてしまい、困っています。
どなたかstrutsに特にお詳しい方、教えてください。
どういう原因が主に考えられるのでしょうか?
--
java.lang.ClassCastException
at org.apache.struts.tiles.TilesRequestProcessor.initDefinitionsMapping(TilesRequestProcessor.java:126)
at org.apache.struts.tiles.TilesRequestProcessor.init(TilesRequestProcessor.java:116)
at org.apache.struts.action.ActionServlet.getRequestProcessor(ActionServlet.java:872)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1482)
at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:507)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2416)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:172)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(StandardPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:223)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:601)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:392)
at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:565)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:619)
at java.lang.Thread.run(Thread.java:536)
Dandan
常連さん
会議室デビュー日: 2002/01/17
投稿数: 25
投稿日時: 2003-09-12 18:06
TilesRequestProcessor#init()

なのでstruts-config.xmlの記述間違えではないかと思います。

以下推測ですが、Tilesを使っていないなら、
コード:
<controller processorClass="org.apache.struts.acrion.RequestProcessor" />


に変更してみるとか、Tilesを使っているならばプラグインの記述忘れとかありませんか。
コード:
<plug-in className="org.apache.struts.tiles.TilesPlugin">
    <set-property property="definitions-config" value="/WEB-INF/tiles-layout-define.xml" />
    <set-property property="definitions-debug" value="1" />
    <set-property property="moduleAware" value="true" />
    <set-property property="definitions-parser-validate" value="true" />
</plug-in>

moc
会議室デビュー日: 2003/09/12
投稿数: 13
投稿日時: 2003-09-12 18:55
Dandanさん、どうも有難うございました!
おっしゃられたとおり、struts_config.xmlにはもともと、Tiles使っていないため
<controller processorClass="org.apache.struts.tiles.TilesRequestProcessor"/>
と入れてありましたが、
<controller processorClass="org.apache.struts.action.RequestProcessor"/>
に変えて、実行しましたら、http://localhost:8088/test/logon.doで表示されました!どうも有難うござました。。ちなみにTilesPluginのところも調べてコメントに
してたんですよ。しかし、上記はどう違うんでしょう??(実行できれば急ぎではありませんが。。それから、あと、もう1つすみません。
struts_config.xmlで
<action-mappings>
<action path="/logon" type="test.action.LogonAction" name="LogonForm"
scope="request" input="/logon.jsp">
<forward name="success" path="/menu.jsp" />
</action>
</action-mappings>
と設定しています。
この場合、ブラウザでhttp://localhost:8088/test/logonと入力し実行したら、
logon.jspが表示されるのかと思ったのですが・・test/logon.jspと
実行しないと、表示されません。logon.jspから、ログオンボタン押下で
menu.jspでは入力値表示される作りになっています。
設定ファイルで、action path="/logon"としているのに、どうして表示されない
んでしょうか? input="/logon.jsp"としているので、そう指定しないと
表示されないものなんでしょうか? 教えてください。よろしくお願い致します。

PAL
ベテラン
会議室デビュー日: 2002/11/14
投稿数: 63
投稿日時: 2003-09-12 20:23
引用:
設定ファイルで、action path="/logon"としているのに、どうして表示されない
んでしょうか? input="/logon.jsp"としているので、そう指定しないと
表示されないものなんでしょうか? 教えてください。よろしくお願い致します。


ここは、web.xmlの
<!-- Standard Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>

に同期しています。
login.doで直接Actionが起動します。
つまり、jspのファイルの表示にはstruts.configは関連していません。

login.jspの表示(taglibにより諸々の変換はあり)
 ⇒ボタンクリック⇒Formに従い、login.doのリクエスト要求が発生
  ⇒struts-config.xmlに従い、Actionが起動
となっています。
生成されたjspファイルを見てみると分かりますよ。

あと、質問自体参考書などを見れば分かる事が多い気がするので、
一度書籍に目を通されるのが良いと思いますよ。


[ メッセージ編集済み 編集者: PAL 編集日時 2003-09-12 20:30 ]
moc
会議室デビュー日: 2003/09/12
投稿数: 13
投稿日時: 2003-09-12 22:25
もっと本等でも勉強します。。失礼しました。
確認したかったのは、はじめのinput画面login.jspをstrtus_config設定ファイルで
どこかに指定しておけないのかな、ということでした。
index.jspにhtml:linkタグで/login.jspを指定しておけば
できました。。そこからは、strtus_configで指定してある、Action遷移で
行えますので。。ブラウザでは、http://localhost:8080/testでokでした。
<global-forwards>とかでできないものなのかがまだよく理解できてません。。
PAL
ベテラン
会議室デビュー日: 2002/11/14
投稿数: 63
投稿日時: 2003-09-16 10:50
http://localhost:8080/testでログイン画面を出したいのであれば、

web.xmlに
<!-- The Usual Welcome File List -->
<welcome-file-list>
<welcome-file>/login.jsp</welcome-file>
</welcome-file-list>
で良いでしょう。
moc
会議室デビュー日: 2003/09/12
投稿数: 13
投稿日時: 2003-09-18 14:10
うまくいきました。わかりました。
有難うございました。
1

スキルアップ/キャリアアップ(JOB@IT)