- PR -

web.xmlでの listener について

1
投稿者投稿内容
およよ
会議室デビュー日: 2003/12/29
投稿数: 16
投稿日時: 2004-02-06 02:14
宜しくお願い致します。
ただ今Tomcat4.1.29で作っているアプリケーションでServletContextListenerを継承したクラスを使用して、web.xmlの要素として<listener>でこのクラスを設定しています。
しかし、この要素をweb.xmlに入れてTomcatを再起動しアプリのURLを叩くと
「The requested resource (/rms/) is not available.」と出てしまいます。
web.xmlの部分で<listener>の部分をコメントにすると正常に動作します。
サイトなど調べてweb.xml内の要素の順番など、またDTDのバージョンを2.3にしたりとやってみたのですが駄目でした。どなたかご存知の方がいらしたらご享受願いたいと思います。

web.xml
コード:

<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
<display-name>Struts Blank Application</display-name>

<listener>
<listener-class>listeners.TorqueInitServletContextListener</listener-class>
</listener>

<!-- Standard Action Servlet Configuration (with debugging) -->
<servlet>
<servlet-name>action</servlet-name>
<servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
<init-param>
<param-name>config</param-name>
<param-value>/WEB-INF/struts-config.xml</param-value>
</init-param>
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<init-param>
<param-name>detail</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>2</load-on-startup>
</servlet>


<!-- Standard Action Servlet Mapping -->
<servlet-mapping>
<servlet-name>action</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>


<!-- The Usual Welcome File List -->

<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>


<!-- Struts Tag Library Descriptors -->
<taglib>
<taglib-uri>/tags/struts-bean</taglib-uri>
<taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
</taglib>

<taglib>
<taglib-uri>/tags/struts-html</taglib-uri>
<taglib-location>/WEB-INF/struts-html.tld</taglib-location>
</taglib>

<taglib>
<taglib-uri>/tags/struts-logic</taglib-uri>
<taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
</taglib>

<taglib>
<taglib-uri>/tags/struts-nested</taglib-uri>
<taglib-location>/WEB-INF/struts-nested.tld</taglib-location>
</taglib>

<taglib>
<taglib-uri>/tags/struts-tiles</taglib-uri>
<taglib-location>/WEB-INF/struts-tiles.tld</taglib-location>
</taglib>

</web-app>



<listener>を活きにした場合のTomcat起動時のログ

2004/02/06 2:11:30 org.apache.coyote.http11.Http11Protocol init
情報: Coyote HTTP/1.1をポート8090で初期化します
サービス Tomcat-Standalone を起動します
Apache Tomcat/4.1.29
2004/02/06 2:11:32 org.apache.struts.util.PropertyMessageResources <init>
情報: Initializing, config='org.apache.struts.util.LocalStrings', returnNull=true
2004/02/06 2:11:32 org.apache.struts.util.PropertyMessageResources <init>
情報: Initializing, config='org.apache.struts.action.ActionResources', returnNull=true
2004/02/06 2:11:33 org.apache.struts.util.PropertyMessageResources <init>
情報: Initializing, config='resources.application', returnNull=true
2004/02/06 2:11:33 org.apache.struts.tiles.TilesPlugin init
情報: Tiles definition factory loaded for module ''.
2004/02/06 2:11:33 org.apache.struts.validator.ValidatorPlugIn initResources
情報: Loading validation rules file from '/WEB-INF/validator-rules.xml'
2004/02/06 2:11:33 org.apache.struts.validator.ValidatorPlugIn initResources
情報: Loading validation rules file from '/WEB-INF/validation.xml'
2004/02/06 2:11:35 org.apache.struts.util.PropertyMessageResources <init>
情報: Initializing, config='org.apache.struts.util.LocalStrings', returnNull=true
2004/02/06 2:11:35 org.apache.struts.util.PropertyMessageResources <init>
情報: Initializing, config='org.apache.struts.action.ActionResources', returnNull=true
2004/02/06 2:11:36 org.apache.struts.util.PropertyMessageResources <init>
情報: Initializing, config='org.apache.webapp.admin.ApplicationResources', returnNull=true
2004/02/06 2:11:41 org.apache.coyote.http11.Http11Protocol start
情報: Coyote HTTP/1.1をポート 8090 で起動します
2004/02/06 2:11:41 org.apache.jk.common.ChannelSocket init
情報: JK2: ajp13 listening on /0.0.0.0:8009
2004/02/06 2:11:41 org.apache.jk.server.JkMain start
情報: Jk running ID=0 time=16/31 config=C:\\\\Tomcat 4.1\\\\conf\\\\jk2.properties

宜しくお願い致します。


[ メッセージ編集済み 編集者: およよ 編集日時 2004-02-06 02:15 ]

[ メッセージ編集済み 編集者: およよ 編集日時 2004-02-06 02:16 ]

[ メッセージ編集済み 編集者: およよ 編集日時 2004-02-06 02:16 ]
masaka
常連さん
会議室デビュー日: 2003/08/04
投稿数: 27
お住まい・勤務地: 東京
投稿日時: 2004-02-06 08:53
ServletContextListenerのソースはどうなってますか?

contextInitialized()内でExceptionが発生していませんか?

# 関係ないとは思いますが
# 情報: Coyote HTTP/1.1をポート 8090 で起動します
# ↑ポートが8090になっているのがちょっと気になります。
およよ
会議室デビュー日: 2003/12/29
投稿数: 16
投稿日時: 2004-02-06 10:28
masaka様有難う御座います。
Listenerのソースですが、ある雑誌のTorque特集に出ていたリスナーをそのまま使用しているのですが、もちろん環境に合わせて個々の個所は設定しておりコンパイルエラーなどは出ていません。また今はちょっとログはコピー出来ないのですが、TomcatのログにExceptionは発生していないです。
因みにソースですが、
コード:
package listeners;

import java.io.PrintWriter;
import java.io.StringWriter;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import org.apache.torque.Torque;
import org.apache.torque.TorqueException;

public class TorqueInitServletContextListener
	implements ServletContextListener {
	public TorqueInitServletContextListener() {
	}
	/* (non-Javadoc)
	 * @see javax.servlet.ServletContextListener#contextInitialized(javax.servlet.ServletContextEvent)
	 */
	public void contextInitialized(ServletContextEvent event) {
		ServletContext context = event.getServletContext();
		String path = "/WEB-INF/Torque.properties";
		String realPath = context.getRealPath(path);
		try {
			Torque.init(realPath);
		} catch (TorqueException te) {
			try {
				StringWriter str = new StringWriter();
				PrintWriter p = new PrintWriter(str);
				te.printStackTrace(p);
				context.log(str.toString());			
			} catch (Exception e) {
			}
		}
	}

	/* (non-Javadoc)
	 * @see javax.servlet.ServletContextListener#contextDestroyed(javax.servlet.ServletContextEvent)
	 */
	public void contextDestroyed(ServletContextEvent arg0) {
	}

}


です。
今現在会社に居まして実際のコードではないのですが、その雑誌のサイトから同じものをダウンロードしたものです。
また、8090というポート指定ですが、これはオラクルが入っていて8080で競合してしまったのでとりあえず8090という設定にしてあります。
宜しくお願い致します。
masaka
常連さん
会議室デビュー日: 2003/08/04
投稿数: 27
お住まい・勤務地: 東京
投稿日時: 2004-02-09 17:44
web.xmlの<listener>の部分をコメントにすると正常に動作する、ということなので、TorqueInitServletContextListenerが悪さをしたのではないかと思ったのですが、どうでしょう?

ログは出ていないということですが、このソースだとExceptionが発生してもログに書かれない事も有り得ます。Eclipseを使っているように見受けられるので、ステップ実行してもう一度Exceptionが出ていないかどうか、確かめてみてはいかがでしょうか?
およよ
会議室デビュー日: 2003/12/29
投稿数: 16
投稿日時: 2004-02-09 20:16
masaka様ありがとうございます。
あれから色々と違うバージョンのTomcatを使ってみたりもしたのですが、やはり結果は変わらずでした。
masakaさんのご推測通りEclipseを使用しております。(最初に書いておけば良かったですね、すいません)
一つ気になったのは、『examples』にあるweb.xmlにも<listener>要素があるのですが、こちらは特に問題なく通っているようです。もしかしたらEclipseの方で何か原因があるのではないかと思い、EclipseでのTomcat始動ではなく通常のプロンプトでの起動で試してみようと考えています。
確かEclipseのTomcatランチャープラグインでTomcat4.1.27まで対応のパッチが出てたようなことをどこかで読みました。
またmasakaさんのアドバイスにあるステップ実行でもExceptionが出ていないかを確かめてもみようと思います。
どうもありがとうございました。
また結果が出ましたら報告をしたいと思います。
およよ
会議室デビュー日: 2003/12/29
投稿数: 16
投稿日時: 2004-02-10 01:40
自己レスです。
Eclipseか何かの原因かなと思っていましたが、そうではなかったですね。
試しにTomcat5.0.18で同じアプリケーションをwebappの下に配置してそれぞれ設定を変更し、<listener>を活きにしてTomcatをEclipse上で起動したら、このようなログが出力されました。ブラウザでリンクを叩いても『The requested resource (/oyoyo/) is not available.』とエラー画面が表示されます。

2004/02/10 1:31:33 org.apache.coyote.http11.Http11Protocol init
情報: Coyote HTTP/1.1をポート8090で初期化します
2004/02/10 1:31:33 org.apache.catalina.startup.Catalina load
情報: Initialization processed in 2156 ms
2004/02/10 1:31:33 org.apache.catalina.core.StandardService start
情報: サービス Catalina を起動します
2004/02/10 1:31:33 org.apache.catalina.core.StandardEngine start
情報: Starting Servlet Engine: Apache Tomcat/5.0.18
2004/02/10 1:31:33 org.apache.catalina.core.StandardHost start
情報: XML検証は無効です
2004/02/10 1:31:34 org.apache.catalina.core.StandardContext listenerStart
致命的: 前のエラーのためにアプリケーションリスナのインストールをスキップします
2004/02/10 1:31:34 org.apache.catalina.core.StandardContext start
致命的: Error listenerStart
2004/02/10 1:31:34 org.apache.catalina.core.StandardContext start
致命的: 以前のエラーのためにコンテキストの起動が失敗しました
2004/02/10 1:31:34 org.apache.catalina.core.StandardHost getDeployer
情報: Create Host deployer for direct deployment ( non-jmx )
2004/02/10 1:31:34 org.apache.catalina.core.StandardHostDeployer install
情報: コンテキスト設定ファイルのURL file:C:\Tomcat 5.0\conf\Catalina\localhost\admin.xml を処理しています
2004/02/10 1:31:35 org.apache.struts.util.PropertyMessageResources <init>
情報: Initializing, config='org.apache.struts.util.LocalStrings', returnNull=true
2004/02/10 1:31:35 org.apache.struts.util.PropertyMessageResources <init>
情報: Initializing, config='org.apache.struts.action.ActionResources', returnNull=true
2004/02/10 1:31:36 org.apache.struts.util.PropertyMessageResources <init>
情報: Initializing, config='org.apache.webapp.admin.ApplicationResources', returnNull=true
2004/02/10 1:31:37 org.apache.catalina.core.StandardHostDeployer install
情報: コンテキスト設定ファイルのURL file:C:\Tomcat 5.0\conf\Catalina\localhost\balancer.xml を処理しています
2004/02/10 1:31:38 org.apache.catalina.core.StandardHostDeployer install
情報: コンテキスト設定ファイルのURL file:C:\Tomcat 5.0\conf\Catalina\localhost\manager.xml を処理しています
2004/02/10 1:31:38 org.apache.catalina.core.StandardHostDeployer install
情報: URL file:C:\Tomcat 5.0\webapps\B-RMS からコンテキストパス /B-RMS にWebアプリケーションをインストールします
2004/02/10 1:31:38 org.apache.catalina.core.StandardContext listenerStart
致命的: 前のエラーのためにアプリケーションリスナのインストールをスキップします
2004/02/10 1:31:38 org.apache.catalina.core.StandardContext start
致命的: Error listenerStart
2004/02/10 1:31:38 org.apache.catalina.core.StandardContext start
致命的: 以前のエラーのためにコンテキストの起動が失敗しました
2004/02/10 1:31:38 org.apache.catalina.core.StandardHostDeployer install
情報: URL file:C:\Tomcat 5.0\webapps\jsp-examples からコンテキストパス /jsp-examples にWebアプリケーションをインストールします
2004/02/10 1:31:39 org.apache.catalina.core.StandardHostDeployer install
情報: URL file:C:\Tomcat 5.0\webapps\ROOT からコンテキストパス にWebアプリケーションをインストールします
2004/02/10 1:31:39 org.apache.catalina.core.StandardHostDeployer install
情報: URL file:C:\Tomcat 5.0\webapps\servlets-examples からコンテキストパス /servlets-examples にWebアプリケーションをインストールします
2004/02/10 1:31:39 org.apache.catalina.core.StandardHostDeployer install
情報: URL file:C:\Tomcat 5.0\webapps\tomcat-docs からコンテキストパス /tomcat-docs にWebアプリケーションをインストールします
2004/02/10 1:31:39 org.apache.coyote.http11.Http11Protocol start
情報: Coyote HTTP/1.1をポート 8090 で起動します
2004/02/10 1:31:40 org.apache.jk.common.ChannelSocket init
情報: JK2: ajp13 listening on /0.0.0.0:8009
2004/02/10 1:31:40 org.apache.jk.server.JkMain start
情報: Jk running ID=0 time=0/31 config=C:\Tomcat 5.0\conf\jk2.properties
2004/02/10 1:31:40 org.apache.catalina.startup.Catalina start
情報: Server startup in 7016 ms

その時のTomcatのログにはこのようなエラーが出ておりました。
2004-02-10 01:44:46 StandardContext[/balancer]org.apache.webapp.balancer.BalancerFilter: init(): ruleChain: [org.apache.webapp.balancer.RuleChain: [org.apache.webapp.balancer.rules.URLStringMatchRule: Target string: News / Redirect URL: http://www.cnn.com], [org.apache.webapp.balancer.rules.RequestParameterRule: Target param name: paramName / Target param value: paramValue / Redirect URL: http://www.yahoo.com], [org.apache.webapp.balancer.rules.AcceptEverythingRule: Redirect URL: http://jakarta.apache.org]]
2004-02-10 01:44:47 StandardContext[/B-RMS]クラス listeners.TorqueInitServletContextListener のアプリケーションリスナの設定中にエラーが発生しました
java.lang.NoClassDefFoundError: org/apache/torque/TorqueException
at java.lang.Class.getDeclaredConstructors0(Native Method)
at java.lang.Class.privateGetDeclaredConstructors(Class.java:1590)
at java.lang.Class.getConstructor0(Class.java:1762)
at java.lang.Class.newInstance0(Class.java:276)
at java.lang.Class.newInstance(Class.java:259)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3724)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4269)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:866)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:850)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:638)
at org.apache.catalina.core.StandardHostDeployer.install(StandardHostDeployer.java:320)
at org.apache.catalina.core.StandardHost.install(StandardHost.java:875)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:727)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:477)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1008)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:394)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:166)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1133)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:832)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1125)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:518)
at org.apache.catalina.core.StandardService.start(StandardService.java:519)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:2345)
at org.apache.catalina.startup.Catalina.start(Catalina.java:598)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:297)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:398)


どなたかご存知の方がいらしたらご教授願いたいと思います。
宜しくお願い致します。

[ メッセージ編集済み 編集者: およよ 編集日時 2004-02-10 01:48 ]
mami
会議室デビュー日: 2006/01/25
投稿数: 1
投稿日時: 2006-01-25 00:13
1.tomcat シャットダウン
2.eclipse\workspace\B-RMS\work配下のファイルを削除
3.tomcat 起動
を行ってみたらどうでしょう?
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2006-01-25 00:36
java.lang.NoClassDefFoundError: org/apache/torque/TorqueException
と出ていますが、TorqueExceptionというクラスが見つからないとの事です。
web-inf/libディレクトリにtorque関係のjarファイルは含まれていますか?

また、例外を握りつぶすようなプログラムの書き方はやめましょう。
1

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