竹形誠司 ブログ
ご質問    »トピック一覧
掲示板へのスパムが多いため、「ご質問」のコーナーはユーザー登録制とさせていただきました。お手数ですが、上の「新規ユーザーの登録」メニューより登録をお願いします。
帳票Web
アプリケーション

受注開発始めました
詳しくは こちら
竹形 誠司 著/ラトルズ刊
JSP帳票アプリケーション実践開発入門
JSP帳票アプリケーション
実践開発入門

JSP業務アプリケーション短期開発入門
JSP業務アプリケーション
短期開発入門

Java+MySQL+Tomcatで始めるWebアプリケーション構築入門
Java+MySQL+Tomcatで始めるWebアプリケーション構築入門

Java+MySQL+Tomcatで作る掲示板とブログ
Java+MySQL+Tomcatで作る
掲示板とブログ
名前 java:comp はこのコンテキストにバインドされていません
by まっしゅ[masyu]
--------【竹形による注】----------------------------------------------
DBCPの使い方について、下の記事に簡単にまとめました。
http://www.orquesta.org/takegata/Article/ArticleView.jsp?article_id=306
--------------------------------------------------------------------

コネクションプーリングがうまくいきません。

[web.xml]
<?xml version="1.0" encoding="Windows-31J"?>
    <!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>
    <description>Bbs App</description>
    <resource-ref>
        <description>DB Connection</description>
        <res-ref-name>jdbc/bbs</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
    <session-config>
        <session-timeout>120</session-timeout>
    </session-config>
</web-app>


[コンテキスト名(bbs).xml]
<?xml version='1.0' encoding='utf-8'?>
<Context docBase="/bbs/jsp" path="/bbs"
    reloadable="true" crossContext="true">
    <Resource name="jdbc/bbs"
          removeAbandoned="true"
          removeAbandonedTimeout="60"
          logAbandoned="true"
          auth="Container"
          type="javax.sql.DataSource"
          maxActive="10"
          maxIdle="30"
          maxWait="10000"
          username="(MySQLのユーザー名)"
          password="(パスワード)"
          driverClassName="com.mysql.jdbc.Driver"
          url="jdbc:mysql://localhost/bbs?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=MS932"
            />
</Context>


[エラーメッセージ]
javax.servlet.ServletException: 名前 java:comp はこのコンテキストにバインドされていません
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:843)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:776)
    org.apache.jsp.login_005fok_jsp._jspService(login_005fok_jsp.java:89)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


原因

javax.naming.NameNotFoundException: 名前 java:comp はこのコンテキストにバインドされていません
    org.apache.naming.NamingContext.lookup(NamingContext.java:769)
    org.apache.naming.NamingContext.lookup(NamingContext.java:152)
    javax.naming.InitialContext.lookup(InitialContext.java:351)
    bbs.BbsUser.login(BbsUser.java:28)
    org.apache.jsp.login_005fok_jsp._jspService(login_005fok_jsp.java:62)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


何かおかしいところがあるでしょうか。

また他に調べるべき点はどのようなところでしょうか。

どうぞよろしくご教授ください。
投稿:まっしゅ[masyu]/2007年 03月 31日 04時 19分 /更新:2008年 02月 13日 22時 26分
RE:名前 java:comp はこのコンテキストにバインドされていません
by まっしゅ[masyu]
申し訳ありません、著書名とページ数を明記します。

著書名:「Java+MySQL+Tomcatで作る掲示板とブログ」
2.4「コネクションプーリング」(48ページ)
投稿:まっしゅ[masyu]/2007年 03月 31日 23時 23分
RE:名前 java:comp はこのコンテキストにバインドされていません
by KILROY[KILROY]
 そのあたり、漏れもけっこう苦労した記憶がある。
 とはいえ昔(つーてもたかだか一年前だが)のことなので、今となってはよく覚えていない。
 ただ、当時こんなものを書いてあれこれ試した記憶だけはある。参考になれば、と思う。
package spinstar;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

/**
* 現在未使用の JNDI アクセス用クラス。.
* @author KILROY
*/
public class JNDI {
    private static final String jce = "java:comp/env";

    public static Integer getConnection( String name ) {

        Integer ex = null;
        try {
            // 初期コンテキストを取得
            InitialContext initCtx = new InitialContext();

            Context envCtx = (Context) initCtx.lookup(jce);
            // web.xml に宣言する。
            ex = (Integer)envCtx.lookup("maxExemptions");
            if (ex != null) {
                System.out.println("ex = " + ex );
            } else {
                System.out.println("あかん。");
            }
        } catch (NamingException nmge){
            System.err.println("JNDI のネーミング情報を解決できません。");
            nmge.printStackTrace();
        }
        return ex;
    }

    /**
    * Generic を使うか、クラスを引数に渡すか?
    * @param name
    * @return
    */
    public static String getEnvEntry( String name ) {

        String ex = null;
        try {
            // 初期コンテキストを取得
            InitialContext initCtx = new InitialContext();

            Context envCtx = (Context) initCtx.lookup(jce);
            // web.xml に宣言する。
            ex = (String)envCtx.lookup(name);
            if (ex != null) {
                // データ取得成功
            } else {
                // TODO
            }
        } catch ( NamingException nmge ){
            // JNDI のネーミング情報が解決できなかった
            // TODO
            nmge.printStackTrace();
        }
        return ex;
    }
}
※ちなみにこれは web.xml に記述した宣言がちゃんと取得できるかどうかをチェックするためのロジック。
投稿:KILROY[KILROY]/2007年 03月 31日 23時 49分 /更新:2007年 03月 31日 23時 52分
RE:名前 java:comp はこのコンテキストにバインドされていません
by まっしゅ[masyu]
返信ありがとうございます。

>ちなみにこれは web.xml に記述した宣言がちゃんと取得できるかどうかをチェックするためのロジック。

どちらもNullが返されました。
web.xmlに記述した宣言が取得されていないということなのでしょうか。


[web.xml(/bbs/jsp/WEB-INF下)]
<?xml version="1.0" encoding="Windows-31J"?>
    <!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>
    <description>Bbs App</description>
    <resource-ref>
        <description>DB Connection</description>
        <res-ref-name>jdbc/bbs</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
    <session-config>
        <session-timeout>120</session-timeout>
    </session-config>
</web-app>

もう一度ここらへんを見直してみることにします。


投稿:まっしゅ[masyu]/2007年 04月 01日 01時 25分 /更新:2007年 04月 01日 01時 25分
RE:名前 java:comp はこのコンテキストにバインドされていません
by KILROY[KILROY]
> もう一度ここらへんを見直してみることにします。
 いや、WEB-INF 配下の web.xml ではなく、Tomcat 側の conf/catalina/localhost の下の 【アプリケーション名】.xml (Tomcat 4.x 以前だったら conf 直下の server.xml)のほうが怪しいと思う。
 WEB-INF 配下の web.xml は、記述をサボってもサーバー側できっちり記述してあったら、けっこう通っちゃうのだ(たぶん、「同じ記述があったら、ローカルな宣言が優先される」形になっているのだと思う)。データベースしかり、taglib しかりである。
 気になるのは java:comp の段階ですでにコケているあたりで、これでは Tomcat がコンテンツサーバ(Java のアプリケーションとのやりとりをサービスする役)の役割を果たしていないように思うのである。
 server.xml の設定は私も毎度毎度梃子摺った記憶があるので、そちらのほうを調べたほうがいいかもしれないと思う。

 ……とはいえ、間違ってたらゴメン。あくまで私がそう思うということです。
投稿:KILROY[KILROY]/2007年 04月 01日 10時 13分 /更新:2007年 04月 01日 10時 13分
RE:名前 java:comp はこのコンテキストにバインドされていません
by まっしゅ[masyu]
ありがとうございます。

[コンテキスト名(bbs).xml]
<?xml version='1.0' encoding='utf-8'?>
<Context docBase="/bbs/jsp" path="/bbs"
    reloadable="true" crossContext="true">
    <Resource name="jdbc/bbs"
          removeAbandoned="true"
          removeAbandonedTimeout="60"
          logAbandoned="true"
          auth="Container"
          type="javax.sql.DataSource"
          maxActive="10"
          maxIdle="30"
          maxWait="10000"
          username="(MySQLのユーザー名)"
          password="(パスワード)"
          driverClassName="com.mysql.jdbc.Driver"
          url="jdbc:mysql://localhost/bbs?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=MS932"
            />
</Context>

こちらですね。一字一字著書と見比べてみます。

投稿:まっしゅ[masyu]/2007年 04月 02日 11時 40分 /更新:2007年 04月 02日 11時 40分
RE:名前 java:comp はこのコンテキストにバインドされていません
by まっしゅ[masyu]
さっぱりわからない…

http://www5.atwiki.jp/cat_the_ripper/pages/19.html

他ページで申し訳ないのですが、このページのとおりに
server.xml、コンテキスト名.xml、web.xmlを書き換えたところ
「404」になってしまいました。
投稿:まっしゅ[masyu]/2007年 04月 03日 00時 55分 /更新:2007年 04月 03日 00時 55分
RE:名前 java:comp はこのコンテキストにバインドされていません
by KILROY[KILROY]
> さっぱりわからない…
 もちつけ。そういうときはまず深呼吸だ、と高校生のときに担任の化学の教諭、ゴージャス吉田先生に教わった。
  Tomcat のインストールディレクトリ(漏れの場合は「C:¥Program Files¥Apache Software Foundation¥Tomcat 5.5」)の下の conf には context.xml も web.xml もあるが、漏れは一度としていじったことがない。開発環境である eclipse が勝手に変更しちゃってる可能性も、たぶん、ない。
 いちおう実行環境について述べておくと、 Windows XP Pro だ。これはたぶん同じだろう。
 変更すべきはまず conf/server.xml である。ここだ。 port は 80 ではない可能性がある(開発用のローカルだと、たいてい 8080 を使う)が、とにかく Tomcat が JSP アプリケーションを提供するポートである。
    <!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->
    <Connector port="80" maxHttpHeaderSize="8192"
              maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
              enableLookups="false" redirectPort="8443" acceptCount="100"
              connectionTimeout="20000" disableUploadTimeout="true"
              useBodyEncodingForURI="true" />
 この最期の行、 useBodyEncodingForURI が true になっていないと 5.5 では文字化けする。
 これ以外で二箇所、
    <!-- Editable user database that can also be used by
        UserDatabaseRealm to authenticate users -->
    <Resource name="UserDatabase" auth="Container"
              type="org.apache.catalina.UserDatabase"
      description="User database that can be updated and saved"
          factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
          pathname="conf/tomcat-users.xml" />

      <!-- This Realm uses the UserDatabase configured in the global JNDI
          resources under the key "UserDatabase".  Any edits
          that are performed against this UserDatabase are immediately
          available for use by the Realm.  -->
      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
            resourceName="UserDatabase"/>
というクサいところがあるが、おそらくはいじらなくて済む。というか、いじった記憶がない。
 あとは、漏れのように同じマシンで複数のバージョンの Tomcat (4.1 と 5.5 とか)を稼動させるとかいった阿呆なマネをする場合は、シャットダウンポートをそれぞれ別にする必要がある(かぶっていると立ち上がらない)が、たぶん必要あるまい。
 で、次は C:¥Program Files¥Apache Software Foundation¥Tomcat 5.5¥conf¥Catalina¥localhost の下の jamyto.xml だ。漏れの場合はこんな感じになっている。 eclipse のワークスペースは「C:¥Eclipse¥workspace 3.2¥jamyto¥webapps」であり、ここにソースから .class ファイルまで一切合財が存在する。
<Context path="/jamyto" reloadable="true" docBase="C:\Eclipse\workspace 3.2\jamyto\webapps" workDir="C:\Eclipse\workspace 3.2\jamyto\work">
    <Resource name="jdbc/shop" removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true" auth="Container" type="javax.sql.DataSource" maxActive="5" maxIdle="30" MaxWait="10000" username="root" password="KILROY" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/shop?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF-8" />
    <Resource name="jdbc/bbs" removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true" auth="Container" type="javax.sql.DataSource" maxActive="5" maxIdle="30" MaxWait="10000" username="root" password="KILROY" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/bbs?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF-8" />
    <Resource name="jdbc/weblog" removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true" auth="Container" type="javax.sql.DataSource" maxActive="5" maxIdle="30" MaxWait="10000" username="root" password="KILROY" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/weblog?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF-8" />
    <Resource name="jdbc/bbss" removeAbandoned="true" removeAbandonedTimeout="60" logAbandoned="true" auth="Container" type="javax.sql.DataSource" maxActive="5" maxIdle="30" MaxWait="10000" username="root" password="KILROY" driverClassName="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/bbss?autoReconnect=true&amp;useUnicode=true&amp;characterEncoding=UTF-8" />
</Context>
 上から順に、『サーバーアプリケーション開発入門』のショップ、『作る掲示板とブログ』の掲示板とブログ、『Web アプリケーション構築入門』の掲示板用だ。
 最期はアプリケーションのある場所の WEB-INF 直下の web.xml である。なお、この「 WEB-INF 直下」というのがけっこう曲者で、別のところに置いてあって Tomcat が読めない、というケースもあるから要注意。中身はこんなだ。
<?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>
    <resource-ref>
        <description>RDB Connection for Application (BBS)</description>
        <res-ref-name>jdbc/bbs</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>
    <resource-ref>
        <description>RDB Connection for Application (Online Shop)</description>
        <res-ref-name>jdbc/shop</res-ref-name>
        <res-type>javax.sql.DataSource</res-type>
        <res-auth>Container</res-auth>
    </resource-ref>

    <filter>
        <filter-name>UnicodeFilter</filter-name>
        <filter-class>spinstar.UnicodeFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>UnicodeFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <jsp-config>
        <jsp-property-group>
            <display-name>JSP Config</display-name>
            <url-pattern>*.jsp</url-pattern>
            <el-ignored>true</el-ignored>
            <scripting-invalid>false</scripting-invalid>
        </jsp-property-group>
    </jsp-config>
</web-app>
 な? ウェブと掲示板しか定義してないのに、これでちゃんとブログも動いているのである。逆にいえば web.xml には書いてなくてもデータベースにアクセスできちゃう訳で、セキュリティを考えるともっときっちり設定をしておくことが望ましい。
 とりあえず、これを追ってから、どっかおかしなところがないかチェックしてみてくれ。検討を祈る。
投稿:KILROY[KILROY]/2007年 04月 03日 19時 40分 /更新:2007年 04月 03日 20時 00分
RE:名前 java:comp はこのコンテキストにバインドされていません
by 竹形 誠司[takegata]
竹形です。どうも、放ったらかしですみません。
もしかして、Tomcatのwebapps の下にアプリケーションを置いていませんか?他の方からもコンテキストの設定がうまくいかないという問い合わせをいただいたことがあるのですが、その方の場合はwebappsの下にアプリケーションのフォルダを置いていたので、コンテキストの書式が間違っている(この場合はコンテキストが無視されます)のにJSPのページにはアクセスできるという状態で、原因が分かるまでに結構苦労しました。

logディレクトリの下にエラーログがあるので、関係のありそうなエラーが無いかチェックしてみてください。
投稿:竹形 誠司[takegata]/2007年 04月 03日 21時 28分 /更新:2007年 04月 03日 21時 34分
RE:名前 java:comp はこのコンテキストにバインドされていません
by まっしゅ[masyu]
ありがとうございます。深呼吸しました。

>>KILROYさん
何度もありがとうございます。
server.xml、web.xml、コンテキスト名.xmlを見直してみました。
server.xmlの<!-- Define a non-SSL HTTP/1.1 Connector on port 8080 -->に
useBodyEncodingForURI="true"の記述が無かったので、書き足しました。
その他、全く同じです。一見問題ありません。

>>竹形 誠司さん
はじめまして、良い本をありがとうございます。
Tomcatのwebapp下には、特にアプリケーションのフォルダなどはありません。
/balancer
/jsp-examples
/ROOT
/servlets-examples
/tomcat-docs
/webdav
となっています。

それと、最も重要と思われる、こちらの環境を書くのを忘れていました。
こちらのPCはMacOS X Server、WinSCPとPoderosaで遠隔から操作しています。
Tomcat5.5.23、http://(サーバーのURL):8080/で起動を確認できます。
MySQL4.1.22、テーブルを作れたので起動していると思います。

また、一度
WindowsXP Tomcat5.5.20 PostgreSQL8.1
の環境で、著書の通りで掲示板が動くことを確認しています。
投稿:まっしゅ[masyu]/2007年 04月 03日 23時 58分 /更新:2007年 04月 03日 23時 58分
RE:名前 java:comp はこのコンテキストにバインドされていません
by 竹形 誠司[takegata]
あぅー、Macですか。今は出先なんで実機が手元にありません。沖縄に戻ったら環境を作って検証します。来週になってしまいますが・・・・
投稿:竹形 誠司[takegata]/2007年 04月 04日 02時 51分 /更新:2007年 04月 04日 02時 51分
RE:名前 java:comp はこのコンテキストにバインドされていません
by まっしゅ[masyu]
返信ありがとうございます。ご迷惑をおかけします。

実は、Windows+PostgreSQLで動作を確認した後、
C:\直下にある一連のフォルダをコピーして、そのまま動作させようと
していました。

(もちろん、SQL文をPostgreSQLのものからMySQLの使用に書き換え
 JDBCも、MySQLのバージョンのものを用意しました。)

具体的には
 C:\bbs(著書ではC:\jamyto2)を/bbs にコピー
 C:\Program Files\Apache Software Foundation\Tomcat 5.5\common\libの中身を /usr/local/apache-tomcat-5.5.23/common/lib の中にコピー
 その際、JDBCはpostgresql-8.2-504.jdbc3.jarを消し、mysql-connector-java-5.0.5.jarを入れています。

*.classファイルなどもそのままコピーして使おうとしています。
(これは、Macでコンパイルしなおしたほうが良いのでしょうか?)

また、一度基本に立ち返ろうと、コネクションプーリングしていないjspファイルを動かしてみて、出たエラーが以下です。

[date_test.jsp](著書の付属CD jamyto2\jsp\bbs\A\以下にあったもの)
<%@ page contentType="text/html; charset=Windows-31J"%>
<%@ page import="java.sql.*,java.util.Date"%>
<HTML>
<HEAD>
<TITLE>掲示板</TITLE>
</HEAD>
<BODY>
【掲示板】
<%
Class.forName("com.mysql.jdbc.Driver");
String strConn="jdbc:mysql://localhost/bbs"
        + "?user=(ユーザ名)&password=(パスワード)"
        + "&useUnicode=true&characterEncoding=MS932";
Connection conn =DriverManager.getConnection(strConn);
Statement stmt = conn.createStatement();
String strSql="SELECT * FROM bbs ORDER BY utter_id";
ResultSet rs = stmt.executeQuery(strSql);
Date date = new Date();
while(rs.next()){
    long lngDateTime = rs.getLong("createdt");
    date.setTime(lngDateTime);
%>
    id:<%= rs.getInt("utter_id")%><BR>
    date_time:<%=date.toString()%><BR>
    author:<%=rs.getString("user_id")%><BR>
    subject:<%=rs.getString("title")%><BR>
    body:<%=rs.getString("body")%><BR>
   
<%
}
conn.close();
%>
</BODY>
</HTML>



[エラーメッセージ]
HTTPステータス 500 -

--------------------------------------------------------------------------------

type 例外レポート

メッセージ

説明 The server encountered an internal error () that prevented it from fulfilling this request.

例外

org.apache.jasper.JasperException: Exception in JSP: /date_test.jsp:14

11: String strConn="jdbc:mysql://localhost/bbs"
12:         + "?user=(ユーザ名)&password=(パスワード)"
13:         + "&useUnicode=true&characterEncoding=MS932";
14: Connection conn =DriverManager.getConnection(strConn);
15: Statement stmt = conn.createStatement();
16: String strSql="SELECT * FROM bbs ORDER BY utter_id";
17: ResultSet rs = stmt.executeQuery(strSql);


Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:506)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


原因

javax.servlet.ServletException: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.net.SocketException
MESSAGE: java.net.ConnectException: Connection refused

STACKTRACE:

java.net.SocketException: java.net.ConnectException: Connection refused
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:156)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:284)
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:2569)
    at com.mysql.jdbc.Connection.<init>(Connection.java:1485)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
    at java.sql.DriverManager.getConnection(DriverManager.java:525)
    at java.sql.DriverManager.getConnection(DriverManager.java:193)
    at org.apache.jsp.date_005ftest_jsp._jspService(date_005ftest_jsp.java:57)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
    at java.lang.Thread.run(Thread.java:613)


** END NESTED EXCEPTION **



Last packet sent to the server was 21 ms ago.
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:843)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:776)
    org.apache.jsp.date_005ftest_jsp._jspService(date_005ftest_jsp.java:95)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


原因

com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.net.SocketException
MESSAGE: java.net.ConnectException: Connection refused

STACKTRACE:

java.net.SocketException: java.net.ConnectException: Connection refused
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:156)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:284)
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:2569)
    at com.mysql.jdbc.Connection.<init>(Connection.java:1485)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
    at java.sql.DriverManager.getConnection(DriverManager.java:525)
    at java.sql.DriverManager.getConnection(DriverManager.java:193)
    at org.apache.jsp.date_005ftest_jsp._jspService(date_005ftest_jsp.java:57)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
    at java.lang.Thread.run(Thread.java:613)


** END NESTED EXCEPTION **



Last packet sent to the server was 21 ms ago.
    com.mysql.jdbc.Connection.createNewIO(Connection.java:2643)
    com.mysql.jdbc.Connection.<init>(Connection.java:1485)
    com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
    java.sql.DriverManager.getConnection(DriverManager.java:525)
    java.sql.DriverManager.getConnection(DriverManager.java:193)
    org.apache.jsp.date_005ftest_jsp._jspService(date_005ftest_jsp.java:57)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


注意 原因のすべてのスタックトレースは、Apache Tomcat/5.5.23のログに記録されています


--------------------------------------------------------------------------------

Apache Tomcat/5.5.23



投稿:まっしゅ[masyu]/2007年 04月 05日 23時 21分 /更新:2007年 04月 05日 23時 24分
RE:名前 java:comp はこのコンテキストにバインドされていません
by 竹形 誠司[takegata]
MacOS 10.4.8 Tomcat 5.5.23 MySQL 4.1.22 connector/J 5.0.5 の構成でDBCPを使った接続ができることを確認しました(設定方法は本書に書かれているものと同じです)。

転送したソースが文字化けなどを起こしていないか、確認してください。また、.javaのソースは念のためにコンパイルしなおしてみてください。

まずは、DBCPを使わずにMySQLにアクセスできるようになるまで、がんばってください。MySQLのターミナルからテスト用の簡単なテーブルを作成して、insert文でテストデータを挿入し、JSPで表示できることを確認しましょう。例を示します。

mysqlターミナルからの入力
mysql>create database testdb;
mysql>grant all on testdb.* to Mulder@localhost identified by 'TrustNo1';
mysql>use testdb;
mysql>create table testtbl(id int auto_increment primary key,name varchar(64));
mysql>insert into testtbl set name='ichiro';
上記テーブルの内容を表示するJSPコード
<%@ page contentType="text/html; charset=utf-8"%>
<%@ page import = "java.sql.*"%>
<HTML>
<HEAD><TITLE>no dbcp</TITLE></HEAD>
<BODY>
test<BR>
<%
Class.forName("com.mysql.jdbc.Driver");
String strConn="jdbc:mysql://localhost/testdb"
  +"?user=Mulder&password=TrustNo1";
Connection conn = DriverManager.getConnection(strConn);
Statement stmt = conn.createStatement();
String strSql="select * from testtbl";
ResultSet rs = stmt.executeQuery(strSql);
while(rs.next()){%>
<%=rs.getInt("id")%>:<%=rs.getString("name")%><BR>
<%}
conn.close();
%>
</BODY>
</HTML>

投稿:竹形 誠司[takegata]/2007年 04月 11日 06時 06分 /更新:2007年 04月 11日 06時 11分
まさかとは思うけれど念のため。
by KILROY[KILROY]
 JNDI 関連のロジックで、リソースを引っ張ってこようと思ったら NullPointerException が返ってきた、という場合、「JDBC のコネクターが適切に認識されていない」という可能性がある。
 私もつい先日ディスクの空き領域不足から Tomcat の実行環境をぶっ飛ばして Tomcat を再インストールしたときに、 JDBC のコネクターの配置を忘れて似たようなエラー( 500 エラー)を出した。

 ……で、思ったのだけど、Mac OS X の場合、たしかデフォルトで Tomcat サーバーがインストールされているので、後から改めて Tomcat をインストールすると「どっちが動いているか分らない」という状況になったりしそうな気がする。

 以前、仕事で 4.1 と 5.5 の両方を動かしていたことがあるのだけれど、
シャットダウンポートがかぶっていると片方しか立ち上がらない。
同じ docbase を見ている場合、どちらか片方の Tomcat (先に立ち上がったほう)からしかアプリケーションとして見えない。
とかいった制約があるものの、Tomcat が複数立ち上がっていても運用上はまったく問題がない。さらに、一方をポート 8080 、もう一方を 8085 とかに設定しておき、 Apache をプロキシサーバとして走らせておいて(たしか Mac OS X には Apache も標準でインストールされていたはず)ポート 80 経由で公開すると、本当にどっちがどっちかわからない。運用・営業担当者の混乱すまいことか(^_^;)。

 「見ている Tomcat と動いていると思っている Tomcat が別物」とかいった可能性は非常に少ないとは思うものの、万一ということがあるので念のため。
投稿:KILROY[KILROY]/2007年 04月 12日 10時 28分 /更新:2007年 04月 12日 10時 30分
RE:名前 java:comp はこのコンテキストにバインドされていません
by まっしゅ[masyu]
ソースの文字化けをふせぐため、ファイル転送ではなく
直接apacheのサイトからtomcat5.5をDLしなおしました。
また、自分の書いたソースも、文字化けしていないことを確認しました。

>見ている Tomcat と動いていると思っている Tomcat が別物

まさかと思い、
# find / -name startup
としてみると、

/Users/***/.../apache-tomcat-5.5.23/webapps/tomcat-docs/architecture/startup
/usr/local/tomcat5/apache-tomcat-5.5.23/webapps/tomcat-docs/architecture/startup

上のふたつがヒットし、下のものが私のDLしたものでした。
また、どちらのtomcatのserver.xmlにも

<Connector port="8080" maxHttpHeaderSize="8192"
              maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
              enableLookups="false" redirectPort="8443" acceptCount="100"
              connectionTimeout="20000" disableUploadTimeout="true" />

の記述があり、同じポートを使用しているような状態であることがわかりました。

私のDLしたtomcatを消し、もともと入っていたtomcatで動かしてみます。
投稿:まっしゅ[masyu]/2007年 04月 12日 22時 14分 /更新:2007年 04月 12日 22時 14分
RE:名前 java:comp はこのコンテキストにバインドされていません
by まっしゅ[masyu]
お久しぶりです、いまだ問題が解決していないまっしゅです。

以前発見してダブっていたTomcat5.5.23の片方を消しました。
また、さらにMacにもともと入っていたTomcat(こちらは4.1.29)がありましたが
そちらもshutdown後消しました。

その後、ブラウザからJSPファイルにアクセスしました。
「テスト」と表示するだけのJSPは表示できるのですが、
データベースにアクセスしようとすると同様の「」が、
2007年 04月 11日 06時 06分に竹形さんから頂いたソースにアクセスすると
「org.apache.jasper.JasperException: Communications link failure due to underlying exception:
** BEGIN NESTED EXCEPTION **
java.net.SocketException
MESSAGE: java.net.ConnectException: Connection refused ...」
のエラーがでます。
(2007年 04月 05日 23時 21分の私の書き込みとほぼ同じエラーです)
もちろん、指示通りテーブルは作成しています。
投稿:まっしゅ[masyu]/2007年 04月 17日 17時 41分 /更新:2007年 04月 17日 17時 41分
RE:名前 java:comp はこのコンテキストにバインドされていません
by 竹形 誠司[takegata]
logディレクトリに手がかりになりそうなエラーログはありませんか?
投稿:竹形 誠司[takegata]/2007年 04月 17日 18時 02分 /更新:2007年 04月 17日 18時 03分
RE:名前 java:comp はこのコンテキストにバインドされていません
by まっしゅ[masyu]
何週間もお手伝いいただき、ありがとうございます。
どうにも進展しない中、私には向いていないんじゃないかと不安になっております。
ご迷惑でしょうがぜひ動くまでお付き合い願いたいです。

>エラーログ

エラーログをコピペします。一度Macをリブートしたからか
Tomcatがとまっていたり、動かしたりと余分なエラーが
含まれているかもしれませんが

[catalina.2007-04-25.log ]

Last login: Tue Apr 24 15:23:47 2007
Welcome to Darwin!
-mail:~ admin$ ls     
%backup%~                              Movies                                  Sites
Desktop                                Music                                  config.php
Documents                              Pictures                                test.jsp
Library                                Public                                  ???158.217.77.40???????????????.rtf
-mail:~ admin$ cd /
-mail:/ admin$ ls
Applications    Groups          System          bbs            etc            opt            usr
Desktop        Library        Users          bin            mach            private        var
Desktop DB      Network        Volumes        cores          mach.sym        sbin
Desktop DF      Shared Items    automount      dev            mach_kernel    tmp
-mail:/ admin$ cd /usr/local/tomcat5
-mail:/usr/local/tomcat5 admin$ ls
apache-tomcat-5.5.23
-mail:/usr/local/tomcat5 admin$ cd apache-tomcat-5.5.23
-mail:/usr/local/tomcat5/apache-tomcat-5.5.23 admin$ sh bin/startup.sh
        at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:359)
        at java.net.ServerSocket.bind(ServerSocket.java:319)
        at java.net.ServerSocket.<init>(ServerSocket.java:185)
        at org.apache.catalina.core.StandardServer.await(StandardServer.java:363)
        at org.apache.catalina.startup.Catalina.await(Catalina.java:616)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:576)
        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:585)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
2007/04/25 8:46:26 org.apache.catalina.connector.Connector pause
~Rv~V・SI: ~Cv~C~M~Cg~CR~C~K~Cn~C~S~Ch~C~I~B翻H蛞N~^~R痞N~~B・N芸Ts~B・B桍B・B
ava.lang.NullPointerException
        at org.apache.jk.server.JkMain.pause(JkMain.java:679)
        at org.apache.jk.server.JkCoyoteHandler.pause(JkCoyoteHandler.java:163)
        at org.apache.catalina.connector.Connector.pause(Connector.java:1032)
        at org.apache.catalina.core.StandardService.stop(StandardService.java:489)
        at org.apache.catalina.core.StandardServer.stop(StandardServer.java:734)
        at org.apache.catalina.startup.Catalina.stop(Catalina.java:602)        at org.apache.catalina.startup.Catalina$CatalinaShutdownHook.run(Catalina.java:645)
2007/04/25 8:46:27 org.apache.catalina.core.StandardService stop
~O轎U鰛 ~CT~A[~Cr~CX Catalina ~B閖R痞N~~B・B桍B
股007/04/25 8:46:27 org.apache.catalina.connector.MapperListener destroy
~Lx~M~P: Error unregistering MBeanServerDelegate
java.lang.NullPointerException
        at org.apache.catalina.connector.MapperListener.destroy(MapperListener.java:162)
        at org.apache.catalina.connector.Connector.stop(Connector.java:1138)
        at org.apache.catalina.core.StandardService.stop(StandardService.java:519)
        at org.apache.catalina.core.StandardServer.stop(StandardServer.java:734)
        at org.apache.catalina.startup.Catalina.stop(Catalina.java:602)
        at org.apache.catalina.startup.Catalina$CatalinaShutdownHook.run(Catalina.java:645)
2007/04/25 8:46:27 org.apache.coyote.http11.Http11BaseProtocol destroy
~O轎U鰛 Coyote HTTP/1.1~B 鑁ttp-8080 ~B・R痞N~~B・B桍B
股007/04/25 8:46:27 org.apache.catalina.connector.Connector stop
~Rv~V・SI: Coyote~CR~Cl~CN~C^~B・KN~S・B・B蛞B竹B−B桍B・B
鰓007/04/25 8:46:27 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
~O轎U鰛 Failed shutdown of Apache Portable Runtime

[manager.2007-04-25.log]
何も書かれていないです

投稿:まっしゅ[masyu]/2007年 04月 25日 09時 06分 /更新:2007年 04月 25日 09時 06分
RE:名前 java:comp はこのコンテキストにバインドされていません
by 竹形 誠司[takegata]
依然として下のエラーが出ているということでよろしいでしょうか。
org.apache.jasper.JasperException: Exception in JSP: /date_test.jsp:14

11: String strConn="jdbc:mysql://localhost/bbs"
12:        + "?user=(ユーザ名)&password=(パスワード)"
13:        + "&useUnicode=true&characterEncoding=MS932";
14: Connection conn =DriverManager.getConnection(strConn);
15: Statement stmt = conn.createStatement();
16: String strSql="SELECT * FROM bbs ORDER BY utter_id";
17: ResultSet rs = stmt.executeQuery(strSql);


Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:506)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


原因

javax.servlet.ServletException: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.net.SocketException
MESSAGE: java.net.ConnectException: Connection refused

STACKTRACE:

java.net.SocketException: java.net.ConnectException: Connection refused
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:156)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:284)
このエラーは

14: Connection conn =DriverManager.getConnection(strConn);
の所で起こっていて、原因は

java.net.SocketException
MESSAGE: java.net.ConnectException: Connection refused
ということですね。これは、ネットワークのコネクションが拒否されたという意味です。MySQLとJDBCはソケットインターフェイスを通じて通信をしているので、セキュリティの設定などでポート(デフォルトでは“3306”)が閉じられているために、このエラーが発生しているのかも知れません。このあたりをチェックしてみてはいかがでしょうか。


投稿:竹形 誠司[takegata]/2007年 04月 25日 21時 28分 /更新:2007年 04月 25日 21時 28分
RE:名前 java:comp はこのコンテキストにバインドされていません
by まっしゅ[masyu]
ありがとうございます

使用しているポートを調べたり、ポートを開いて通信を許可するのに
my.cnfというファイルを探せ、とGoogleから言われたのですが
どうにもそのファイルが見つかりません。

# netstat -an | grep 3306

としても、全く反応が返ってきません。

もう少し調べてみます。


ところで、JDBCなどのJarファイルたちなのですが
Tomcatのcommon/libにあるものではなく、
/コンテキスト名/jsp/WEB-INFにあるものを認識しているようです。
/コンテキスト名/jsp/WEB-INFの中身をごっそり消すと、
「jarファイルたちが無い!」というエラーが出ます。

(Tomcatのcommon/libの中身を消しても、動作に影響ありません)

本来なら、/コンテキスト名/jsp/WEB-INFは空のはずですよね
ここもおかしい気がしていますが、動くからいいやとほうりっぱなしです・・

投稿:まっしゅ[masyu]/2007年 04月 26日 00時 42分 /更新:2007年 04月 26日 00時 42分
RE:名前 java:comp はこのコンテキストにバインドされていません
by まっしゅ[masyu]
返信が遅くなりました。
どうもYahooメールは、パスワードの再発行のメールを
迷惑メールボックスに入れてしまうようで、難儀しました。

>MySQLとJDBCはソケットインターフェイスを通じて通信をしているので、セキュリティの設定などでポート(デフォルトでは“3306”)が閉じられているために、このエラーが発生しているのかも知れません。このあたりをチェックしてみてはいかがでしょうか。

いろいろ調べてみたのですが、MySQLのMy.cnfは
port  = 3306になっていて
skip-networkingはコメントアウトされています

ただ、SHOW VARIABLES;を投げると、ポート0が返ってくるのが気になりますが
同じサーバーに入っているXoopsが動いているということなので、
ポートは3306で、通信もできる状態なのかなと思います。
(あやふやですみません)

相変わらず同じエラーが出ています。
投稿:まっしゅ[masyu]/2007年 05月 06日 11時 39分 /更新:2007年 05月 06日 11時 39分
RE:名前 java:comp はこのコンテキストにバインドされていません
by 竹形 誠司[takegata]
えーっと、そうですか。困りましたね。
まず、mysqlが動いているかどうかを確認しましょう。
Mac OSの場合は /usr/local あたりにmysqlディレクトリがあると思います。
ターミナルを起動して、その中のbinディレクトリへ行ってください。

例:
iBook:~ takegata$ cd /usr/local/mysql/bin
iBook:/usr/local/mysql/bin takegata$
iBook:~ takegata$ というのはMacのターミナルのプロンプトです。ここで、lsコマンドを実行すると、mysql関連の実行ファイルの一覧が表示されるはずです。

この状態で、mysqlを実行します。

iBook:/usr/local/mysql/bin takegata$ ./mysql -u root -p
標準のターミナルでは、カレントディレクトリにもパスが通っていないので、実行ファイルの前に ./ を(ドット・スラッシュ)つけます。

これでmysqlのプロンプトが表示されるかどうかを試してみてください。
投稿:竹形 誠司[takegata]/2007年 05月 10日 02時 52分 /更新:2007年 05月 10日 02時 53分
RE:名前 java:comp はこのコンテキストにバインドされていません
by まっしゅ[masyu]
遅くなりました

>Mac OSの場合は /usr/local あたりにmysqlディレクトリがあると思います。

実は、/usr/localというディリクトリは無かったのです。
今Tomcatがある/usr/local/は、Tomcatを展開するときに
無理やり作ったものです。

とりあえず/usr/bin/mysqlというのがそれっぽいかな?と思い、
教えていた頂いたコマンドを実行しました


-mail:/usr/bin root# cd /     
-mail:/ root# cd /usr/bin
(長いのでちょっと略)
myisam_ftdump                  zgrep
myisamchk                      zip
myisamlog                      zipcloak
myisampack                      zipgrep
mysql                          zipinfo
mysql_client_test              zipnote
mysql_config                    zipsplit
mysql_convert_table_format      zless
mysql_create_system_tables      zmore
mysql_explain_log              znew
mysql_find_rows                zprint
mysql_fix_extensions
-mail:/usr/bin root# ./mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 446 to server version: 4.1.22-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

これはmysqlのプロンプトが表示された、ということでよいんでしょうか・・
投稿:まっしゅ[masyu]/2007年 05月 25日 15時 14分 /更新:2007年 05月 25日 15時 14分
RE:名前 java:comp はこのコンテキストにバインドされていません
by 竹形 誠司[takegata]
そうですね、これがmysqlのプロンプトです。mysqlのサーバーは動いているようですね(バージョンが4.1のようですから、私の本の記述と異なる部分があるかも知れません)。
ここから次のように入力してみてください。
mysql>create database testdb;
mysql>grant all on testdb.* to Mulder@localhost identified by 'TrustNo1';
mysql>use testdb;
mysql>create table testtbl(id int auto_increment primary key,name varchar(64));
mysql>insert into testtbl set name='ichiro';
これで、testdbというデータベース領域にtesttblというテーブルが作成されます。次に、上記テーブルの内容を表示する次のようなJSPコードをTomcatのディレクトリに置いて試してみてください。
<%@ page contentType="text/html; charset=utf-8"%>
<%@ page import = "java.sql.*"%>
<HTML>
<HEAD><TITLE>no dbcp</TITLE></HEAD>
<BODY>
test<BR>
<%
Class.forName("com.mysql.jdbc.Driver");
String strConn="jdbc:mysql://localhost/testdb"
  +"?user=Mulder&password=TrustNo1";
Connection conn = DriverManager.getConnection(strConn);
Statement stmt = conn.createStatement();
String strSql="select * from testtbl";
ResultSet rs = stmt.executeQuery(strSql);
while(rs.next()){%>
<%=rs.getInt("id")%>:<%=rs.getString("name")%><BR>
<%}
conn.close();
%>
</BODY>
</HTML>
投稿:竹形 誠司[takegata]/2007年 05月 25日 21時 35分 /更新:2007年 05月 25日 21時 38分
RE:名前 java:comp はこのコンテキストにバインドされていません
by まっしゅ[masyu]
結果から言うと、ダメでした。

-mail:~ admin$ cd /usr/bin
-mail:/usr/bin admin$ ./mysql -u root -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 686 to server version: 4.1.22-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> create database testdb;
ERROR 1007 (HY000): Can't create database 'testdb'; database exists
mysql> grant all on testdb.* to Mulder@localhost identified by 'TrustNo1';
Query OK, 0 rows affected (0.17 sec)

mysql> use testdb;
Database changed
mysql> create table testtbl(id int auto_increment primary key,name varchar(64));
ERROR 1050 (42S01): Table 'testtbl' already exists
mysql> insert into testtbl set name='ichiro';
Query OK, 1 row affected (0.07 sec)

mysql> exit
Bye
-mail:/usr/bin root# cp /Users/Admin/test.jsp /usr/local/tomcat5/apache-tomcat-5.5.23/webapps/servlets-examples
-mail:/usr/bin root#  sh /usr/local/tomcat5/apache-tomcat-5.5.23/bin/startup.sh
Using CATALINA_BASE:  /usr/local/tomcat5/apache-tomcat-5.5.23
Using CATALINA_HOME:  /usr/local/tomcat5/apache-tomcat-5.5.23
Using CATALINA_TMPDIR: /usr/local/tomcat5/apache-tomcat-5.5.23/temp
Using JRE_HOME:      /System/Library/Frameworks/JavaVM.framework/Versions/1.5/Home
-mail:/usr/bin root#
エラーが出ました。

type 例外レポート

メッセージ

説明 The server encountered an internal error () that prevented it from fulfilling this request.

例外

org.apache.jasper.JasperException: Exception in JSP: /test.jsp:11

8: Class.forName("com.mysql.jdbc.Driver");
9: String strConn="jdbc:mysql://localhost/testdb"
10:  +"?user=Mulder&password=TrustNo1";
11: Connection conn = DriverManager.getConnection(strConn);
12: Statement stmt = conn.createStatement();
13: String strSql="select * from testtbl";
14: ResultSet rs = stmt.executeQuery(strSql);


Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:467)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:371)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


原因

javax.servlet.ServletException: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.net.SocketException
MESSAGE: java.net.ConnectException: Connection refused

STACKTRACE:

java.net.SocketException: java.net.ConnectException: Connection refused
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:156)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:284)
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:2569)
    at com.mysql.jdbc.Connection.<init>(Connection.java:1485)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
    at java.sql.DriverManager.getConnection(DriverManager.java:525)
    at java.sql.DriverManager.getConnection(DriverManager.java:193)
    at org.apache.jsp.test_jsp._jspService(test_jsp.java:53)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
    at java.lang.Thread.run(Thread.java:613)


** END NESTED EXCEPTION **



Last packet sent to the server was 9 ms ago.
    org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:846)
    org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:779)
    org.apache.jsp.test_jsp._jspService(test_jsp.java:76)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


原因

com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.net.SocketException
MESSAGE: java.net.ConnectException: Connection refused

STACKTRACE:

java.net.SocketException: java.net.ConnectException: Connection refused
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:156)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:284)
    at com.mysql.jdbc.Connection.createNewIO(Connection.java:2569)
    at com.mysql.jdbc.Connection.<init>(Connection.java:1485)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
    at java.sql.DriverManager.getConnection(DriverManager.java:525)
    at java.sql.DriverManager.getConnection(DriverManager.java:193)
    at org.apache.jsp.test_jsp._jspService(test_jsp.java:53)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:210)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:151)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:870)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:685)
    at java.lang.Thread.run(Thread.java:613)


** END NESTED EXCEPTION **



Last packet sent to the server was 9 ms ago.
    com.mysql.jdbc.Connection.createNewIO(Connection.java:2643)
    com.mysql.jdbc.Connection.<init>(Connection.java:1485)
    com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:266)
    java.sql.DriverManager.getConnection(DriverManager.java:525)
    java.sql.DriverManager.getConnection(DriverManager.java:193)
    org.apache.jsp.test_jsp._jspService(test_jsp.java:53)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:328)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:315)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)


投稿:まっしゅ[masyu]/2007年 05月 29日 20時 13分 /更新:2007年 05月 29日 20時 13分
RE:名前 java:comp はこのコンテキストにバインドされていません
by 竹形 誠司[takegata]
これと同じ症状みたいですね。
http://forums.mysql.com/read.php?39,74971,74971#msg-74971

で、Appleのサイトにこんな情報がありました。
http://docs.info.apple.com/article.html?artnum=302936

投稿:竹形 誠司[takegata]/2007年 05月 30日 16時 58分 /更新:2007年 05月 30日 16時 58分
RE:名前 java:comp はこのコンテキストにバインドされていません
by まっしゅ[masyu]
ありがとうございます。

まさしく、URL先と同じ症状でした。
英語は苦手なのですががんばってみました

>Go to /Applications/Server
>MySQLマネージャーを立ち上げて、MySQLのサービスを止める
>Allow network connectionsっていうチェックボックスを選択する。
>MySQLのサービスを再起動(Restart)する

…しかし、上を実行しても現状変わりありません。
あきらめたほうが良いのでしょうか
投稿:まっしゅ[masyu]/2007年 06月 11日 02時 51分 /更新:2007年 06月 11日 02時 51分
RE:名前 java:comp はこのコンテキストにバインドされていません
by 竹形 誠司[takegata]
こっちを試してみてはどうでしょう。
For Mac OS X Server without Server Tools (headless installation):

  1. Edit the file /etc/mysqlManager.plist so that it has "yes"
    instead of "no" for the key "allowNetwork":

              <key>allowNetwork</key>
              <string>yes</string>

  2. Stop and start the MySQL Service:
      1. Execute this command: sudo SystemStarter stop MySQL
      2. Wait a few seconds and confirm that the service has shut down.
      3. Execute: sudo SystemStarter start MySQL
上の英文の意味は

1. /etc/mysqlManager.plist を開いて、<string>no</string>になっている部分を<string>yes</string>に修正します。

2. MySQLサービスを停止して再起動します。

とりあえず、

/etc/mysqlManager.plist を開いて、<string>no</string>になっているかどうか見てみてください。

投稿:竹形 誠司[takegata]/2007年 06月 11日 07時 23分 /更新:2007年 06月 11日 07時 23分
RE:名前 java:comp はこのコンテキストにバインドされていません
by まっしゅ[masyu]
>/etc/mysqlManager.plist を開いて、<string>no</string>になっているかどうか見てみてください。

確認しました。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
        <key>allowNetwork</key>
        <string>yes</string>
</dict>
</plist>
投稿:まっしゅ[masyu]/2007年 06月 12日 15時 24分 /更新:2007年 06月 12日 15時 24分
RE:名前 java:comp はこのコンテキストにバインドされていません
by 竹形 誠司[takegata]
うーん、そうですか。それでいいはずですねぇ。

MySQLは確かに再起動されたでしょうか。マシン自体をリブートとかしてみましたか?

あとは、JDBCのバージョンが関係しているかも知れません。JDBCのバージョンは何をお使いでしたっけ?
投稿:竹形 誠司[takegata]/2007年 06月 13日 00時 31分 /更新:2007年 06月 13日 00時 31分
RE:名前 java:comp はこのコンテキストにバインドされていません
by まっしゅ[masyu]
>MySQLは確かに再起動されたでしょうか。マシン自体をリブートとかしてみましたか?

はい、しました。

>あとは、JDBCのバージョンが関係しているかも知れません。JDBCのバージョンは何をお使いでしたっけ?

JDBCはmysql-connector-java-5.0.5-bin.jarという名前です。
バージョンは5.0.5ということでしょうか
投稿:まっしゅ[masyu]/2007年 06月 14日 23時 18分 /更新:2007年 06月 14日 23時 18分
RE:名前 java:comp はこのコンテキストにバインドされていません
by 竹形 誠司[takegata]
うーむ、そうですか。JDBCのバージョンは私のiBookで動いているものと同じなので、問題はなさそうです。何でしょうねぇ・・・・

ちょっと古い情報ですが、localhostの代わりに127.0.0.1を指定したら動いたという人の話を見かけました。あんまり関係ないとは思うんですが、一応。
↓です。
http://mtlab.ecn.fpu.ac.jp/WSM_2002/021023212519.html

また何か情報見つかったら報告します。
投稿:竹形 誠司[takegata]/2007年 06月 15日 08時 40分 /更新:2007年 06月 15日 08時 40分