ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Java質問&情報提供サイトコミュのTomcat起動エラーについて

  • mixiチェック
  • このエントリーをはてなブックマークに追加
はじめまして、宜しくお願いします。
現在、tomcat起動時に下記のエラーが出て困っています。

環境:tomcat5.5, jdk1.5.0_15, windows Xp

致命的: Null component Catalina:type=DataSource,path=/test,host=localhost,class=javax.sql.DataSource,name="jdbc/myoracle"

このままDB接続用のプログラムを書くと今度は

javax.naming.NameNotFoundException: 名前 java:comp はこのコンテキストにバインドされていません

とエラーが出ます。

ちょっと長くなりますが、設定内容を提示させて頂きます。

web.xml(WEB-INF直下)---------------------
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" 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>test</display-name>
<servlet>
<servlet-name>testServlet</servlet-name>
<servlet-class>jp.co.TestServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>testServlet</servlet-name>
<url-pattern>/testServlet</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<resource-ref>
<description>Oracle Datasource example</description>
<res-ref-name>jdbc/myoracle</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
</web-app>

test.xml(%CATALINA_HOME%/localhost直下)---------------------
<?xml version="1.0" encoding="Windows-31J"?>
<Context
crossContext="true"
docBase="test"
path="/test"
reloadable="true"
workDir="work\Catalina\localhost\test">
<Valve className="org.apache.catalina.valves.AccessLogValve" prefix="Wpportal_log." suffix=".txt" pattern="common"/>
<Resource
name="jdbc/myoracle"
auth="Container"
type="javax.sql.DataSource"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@サーバ名:1521:DB名"
username="ユーザ名"
password="パスワード"
maxActive="20"
maxIdle="10"
maxWait="-1"
/>
</Context>

データソース設定部分をコメントアウトし、単にJSPを表示させることはうまくいきます。
ojdbc14.jarはcommon/libに配置しました。

長い間悩んでいますのでどうか宜しくお願いします。

コメント(14)

http://www.jajakarta.org/tomcat/tomcat5.0/ja/docs/tomcat-docs/jndi-datasource-examples-howto.html

これは参考になりませんか?
返事ありがとうございます。
最初はそのサイトを参考にweb.xml, context.xml, javaのプログラムを作成したのですが、
同じエラーで上手くいかなかったので、色々検索した結果、提示させて頂いた内容に行き着きました。
ライブラリが足りないんでしょうか?ojdbcがあれば上手くいくと思っていたのですが・・・
??test.xml??

server.xmlかcontext.xmlではなく?
>yo4takaさま

(Eclipseで開発しているという前提でプロジェクト、という単語を使用します)
Tomcat5.x系からServer.xmlではなく、%CATALINA_HOME%/localhost/プロジェクト名.xmlが推奨されています。
ちなみにMETA-INF/context.xmlに記述したContext要素はプロジェクト名.warがデプロイされたタイミングで、%CATALINA_HOME%/localhost/直下にCopyされます。手動でやる手間が省けるので便利ですよね。

上記の質問はそれらの記述方法は正しいはずなのに正常に動作しない、ということでしょう。

で、自分的な憶測と試行錯誤の結果も含めて。
同上とまったく同じエラーメッセージは出せませんでしたが、原因はクラスローダーの読込み順にあると考えます。
%CATALINA_HOME%/common/libにベンダーJDBC.jarを置いたとすると、Tomcat起動時にはそのJDBC.jarのインスタンスが優先使用されます。
するとWEB-INF/lib/配下にある他のjarファイル、または自作ソースは自身のプロジェクトのライブラリ(WEB-INF/lib/配下のもの)を読みに行きます。すると起動時のインスタンスと違うもの(違うデータソース)、となりますので、nullになる、と思います。

上記理由により、次のエラーメッセージにあるような結果、バインドされていない、に連鎖するんだと思います。

環境的な問題はどういう方法で作成したのか、クラスパスを間違っていないか、など複数の要因があるから一概には分からないですよね。
(結論はwarファイルを作るときにきちんと指定すればいけるっす、ということで…(汗))

トピ主さん、結果報告とクローズはしたほうが良いと思いますよ。
ではでは。
> ほ(´∀`)り様

おぉー、ご説明頂きありがとうございます。

> Tomcat5.x系からServer.xmlではなく、%CATALINA_HOME%/localhost/プロジェクト名.xmlが推奨されています。
知らなかったので勉強になりました。

みなさんお返事ありがとうございます。
結果報告が遅れまして、申し訳ありませんあせあせ(飛び散る汗)
かなり悩んでいたのですが、最終的に「/WEB-INF/lib」のライブラリを整理すると解消されました。
おそらく ほ(´∀`)り さんがおっしゃっていた理由なんだと思います。
(かなりたくさんjarを格納していたので特定はできていませんが・・・)
本当にありがとうございました!
>あひるはそれがとても嫌いです
嫌いなのはわかりましたが、私はあひるさんの意見には反対です。

>自分のスキルアップに繋がりません。
スキルアップ目的でやっているわけではない人はいくらでもいると思います。
人それぞれではないでしょうか?

>8

まあ話をそれることは承知で。

>スキルアップ目的でやっているわけではない人はいくらでもいると思います。
>人それぞれではないでしょうか?

スキルアップして損はないわけで。
というか時間がない時をのぞいてロジカルに考え、ロジカルに処理する
癖がない人はSEとしては成長しないは自明のことかと。

あひるさんのいうことは別に正面から批判することでもないかと
批判というか、ここで言う必要があるでしょうか?
ということです。

掲示板は匿名性というメリットがある反面、思ったことをすぐに書いてしまう傾向がある気がします。
ここで論議をする気はありませんが、特に「お節介」と頭につけるんであれば言わなくていいんじゃない?ということです。

以上です。
>結果報告とクローズはしたほうが良いと思います

自分の発言が原因ですね、ごめんなさいm(__)m

ただ、個人的にはここに質問を投げている時点で【理解したい】という思いがあることは誰が見ても明白だと思います。
だからあえてそこは指摘されることは無いかなぁ、と思います(老婆心だと思いますが。

さらに言うなら
>かなりたくさんjarを格納していたので特定はできていません
成長意欲の無い人がやたらとjarを取り込むことはないと思います。

文字って上手く伝わらないことも多いですが、そのあたりは十分に想像できるんじゃないでしょうか。
私も表現が上手くないので今度はあひるさまや§明日のSE§さまの気分を害するかも知れません。

共通しているのは叱咤激励だと思うので、それで十分じゃないですかね。
本件はクローズさせて頂きます。
他の方々の気分を害してしまっているかもしれません、大変申し訳ありません。
また本件の解決に協力してくださった方々、本当にありがとうございました。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Java質問&情報提供サイト 更新情報

Java質問&情報提供サイトのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。