--------【竹形による注】----------------------------------------------
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&useUnicode=true&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)
何かおかしいところがあるでしょうか。
また他に調べるべき点はどのようなところでしょうか。
どうぞよろしくご教授ください。
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&useUnicode=true&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ページ)
著書名:「Java+MySQL+Tomcatで作る掲示板とブログ」
2.4「コネクションプーリング」(48ページ)
投稿:まっしゅ[masyu]/2007年 03月 31日 23時 23分
そのあたり、漏れもけっこう苦労した記憶がある。
とはいえ昔(つーてもたかだか一年前だが)のことなので、今となってはよく覚えていない。
ただ、当時こんなものを書いてあれこれ試した記憶だけはある。参考になれば、と思う。
とはいえ昔(つーてもたかだか一年前だが)のことなので、今となってはよく覚えていない。
ただ、当時こんなものを書いてあれこれ試した記憶だけはある。参考になれば、と思う。
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 に記述した宣言がちゃんと取得できるかどうかをチェックするためのロジック。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;
}
}
投稿:KILROY[KILROY]/2007年 03月 31日 23時 49分
/更新:2007年 03月 31日 23時 52分
返信ありがとうございます。
>ちなみにこれは 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>
もう一度ここらへんを見直してみることにします。
>ちなみにこれは 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分
> もう一度ここらへんを見直してみることにします。
いや、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 の設定は私も毎度毎度梃子摺った記憶があるので、そちらのほうを調べたほうがいいかもしれないと思う。
……とはいえ、間違ってたらゴメン。あくまで私がそう思うということです。
いや、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分
ありがとうございます。
[コンテキスト名(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&useUnicode=true&characterEncoding=MS932"
/>
</Context>
こちらですね。一字一字著書と見比べてみます。
[コンテキスト名(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&useUnicode=true&characterEncoding=MS932"
/>
</Context>
こちらですね。一字一字著書と見比べてみます。
投稿:まっしゅ[masyu]/2007年 04月 02日 11時 40分
/更新:2007年 04月 02日 11時 40分
さっぱりわからない…
http://www5.atwiki.jp/cat_the_ripper/pages/19.html
他ページで申し訳ないのですが、このページのとおりに
server.xml、コンテキスト名.xml、web.xmlを書き換えたところ
「404」になってしまいました。
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分
> さっぱりわからない…
もちつけ。そういうときはまず深呼吸だ、と高校生のときに担任の化学の教諭、ゴージャス吉田先生に教わった。
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 アプリケーションを提供するポートである。
これ以外で二箇所、
あとは、漏れのように同じマシンで複数のバージョンの 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 ファイルまで一切合財が存在する。
最期はアプリケーションのある場所の WEB-INF 直下の web.xml である。なお、この「 WEB-INF 直下」というのがけっこう曲者で、別のところに置いてあって Tomcat が読めない、というケースもあるから要注意。中身はこんなだ。
とりあえず、これを追ってから、どっかおかしなところがないかチェックしてみてくれ。検討を祈る。
もちつけ。そういうときはまず深呼吸だ、と高校生のときに担任の化学の教諭、ゴージャス吉田先生に教わった。
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 では文字化けする。<Connector port="80" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"
useBodyEncodingForURI="true" />
これ以外で二箇所、
<!-- 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" />
と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"/>
というクサいところがあるが、おそらくはいじらなくて済む。というか、いじった記憶がない。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&useUnicode=true&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&useUnicode=true&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&useUnicode=true&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&useUnicode=true&characterEncoding=UTF-8" />
</Context>
上から順に、『サーバーアプリケーション開発入門』のショップ、『作る掲示板とブログ』の掲示板とブログ、『Web アプリケーション構築入門』の掲示板用だ。<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&useUnicode=true&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&useUnicode=true&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&useUnicode=true&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&useUnicode=true&characterEncoding=UTF-8" />
</Context>
最期はアプリケーションのある場所の 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 には書いてなくてもデータベースにアクセスできちゃう訳で、セキュリティを考えるともっときっちり設定をしておくことが望ましい。<!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>
とりあえず、これを追ってから、どっかおかしなところがないかチェックしてみてくれ。検討を祈る。
投稿:KILROY[KILROY]/2007年 04月 03日 19時 40分
/更新:2007年 04月 03日 20時 00分
竹形です。どうも、放ったらかしですみません。
もしかして、Tomcatのwebapps の下にアプリケーションを置いていませんか?他の方からもコンテキストの設定がうまくいかないという問い合わせをいただいたことがあるのですが、その方の場合はwebappsの下にアプリケーションのフォルダを置いていたので、コンテキストの書式が間違っている(この場合はコンテキストが無視されます)のにJSPのページにはアクセスできるという状態で、原因が分かるまでに結構苦労しました。
logディレクトリの下にエラーログがあるので、関係のありそうなエラーが無いかチェックしてみてください。
もしかして、Tomcatのwebapps の下にアプリケーションを置いていませんか?他の方からもコンテキストの設定がうまくいかないという問い合わせをいただいたことがあるのですが、その方の場合はwebappsの下にアプリケーションのフォルダを置いていたので、コンテキストの書式が間違っている(この場合はコンテキストが無視されます)のにJSPのページにはアクセスできるという状態で、原因が分かるまでに結構苦労しました。
logディレクトリの下にエラーログがあるので、関係のありそうなエラーが無いかチェックしてみてください。
投稿:竹形 誠司[takegata]/2007年 04月 03日 21時 28分
/更新:2007年 04月 03日 21時 34分
ありがとうございます。深呼吸しました。
>>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
の環境で、著書の通りで掲示板が動くことを確認しています。
>>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分
あぅー、Macですか。今は出先なんで実機が手元にありません。沖縄に戻ったら環境を作って検証します。来週になってしまいますが・・・・
投稿:竹形 誠司[takegata]/2007年 04月 04日 02時 51分
/更新:2007年 04月 04日 02時 51分
返信ありがとうございます。ご迷惑をおかけします。
実は、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
実は、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分
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ターミナルからの入力
転送したソースが文字化けなどを起こしていないか、確認してください。また、.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コード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';
<%@ 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>
<%@ 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分
JNDI 関連のロジックで、リソースを引っ張ってこようと思ったら NullPointerException が返ってきた、という場合、「JDBC のコネクターが適切に認識されていない」という可能性がある。
私もつい先日ディスクの空き領域不足から Tomcat の実行環境をぶっ飛ばして Tomcat を再インストールしたときに、 JDBC のコネクターの配置を忘れて似たようなエラー( 500 エラー)を出した。
……で、思ったのだけど、Mac OS X の場合、たしかデフォルトで Tomcat サーバーがインストールされているので、後から改めて Tomcat をインストールすると「どっちが動いているか分らない」という状況になったりしそうな気がする。
以前、仕事で 4.1 と 5.5 の両方を動かしていたことがあるのだけれど、
「見ている Tomcat と動いていると思っている Tomcat が別物」とかいった可能性は非常に少ないとは思うものの、万一ということがあるので念のため。
私もつい先日ディスクの空き領域不足から 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分
ソースの文字化けをふせぐため、ファイル転送ではなく
直接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で動かしてみます。
直接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分
お久しぶりです、いまだ問題が解決していないまっしゅです。
以前発見してダブっていた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分の私の書き込みとほぼ同じエラーです)
もちろん、指示通りテーブルは作成しています。
以前発見してダブっていた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分
logディレクトリに手がかりになりそうなエラーログはありませんか?
投稿:竹形 誠司[takegata]/2007年 04月 17日 18時 02分
/更新:2007年 04月 17日 18時 03分
何週間もお手伝いいただき、ありがとうございます。
どうにも進展しない中、私には向いていないんじゃないかと不安になっております。
ご迷惑でしょうがぜひ動くまでお付き合い願いたいです。
>エラーログ
エラーログをコピペします。一度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
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]
何も書かれていないです
どうにも進展しない中、私には向いていないんじゃないかと不安になっております。
ご迷惑でしょうがぜひ動くまでお付き合い願いたいです。
>エラーログ
エラーログをコピペします。一度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分
依然として下のエラーが出ているということでよろしいでしょうか。
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)
このエラーは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”)が閉じられているために、このエラーが発生しているのかも知れません。このあたりをチェックしてみてはいかがでしょうか。MESSAGE: java.net.ConnectException: Connection refused
投稿:竹形 誠司[takegata]/2007年 04月 25日 21時 28分
/更新:2007年 04月 25日 21時 28分
ありがとうございます
使用しているポートを調べたり、ポートを開いて通信を許可するのに
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は空のはずですよね
ここもおかしい気がしていますが、動くからいいやとほうりっぱなしです・・
使用しているポートを調べたり、ポートを開いて通信を許可するのに
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分
返信が遅くなりました。
どうもYahooメールは、パスワードの再発行のメールを
迷惑メールボックスに入れてしまうようで、難儀しました。
>MySQLとJDBCはソケットインターフェイスを通じて通信をしているので、セキュリティの設定などでポート(デフォルトでは“3306”)が閉じられているために、このエラーが発生しているのかも知れません。このあたりをチェックしてみてはいかがでしょうか。
いろいろ調べてみたのですが、MySQLのMy.cnfは
port = 3306になっていて
skip-networkingはコメントアウトされています
ただ、SHOW VARIABLES;を投げると、ポート0が返ってくるのが気になりますが
同じサーバーに入っているXoopsが動いているということなので、
ポートは3306で、通信もできる状態なのかなと思います。
(あやふやですみません)
相変わらず同じエラーが出ています。
どうも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分
えーっと、そうですか。困りましたね。
まず、mysqlが動いているかどうかを確認しましょう。
Mac OSの場合は /usr/local あたりにmysqlディレクトリがあると思います。
ターミナルを起動して、その中のbinディレクトリへ行ってください。
例:
この状態で、mysqlを実行します。
これでmysqlのプロンプトが表示されるかどうかを試してみてください。
まず、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関連の実行ファイルの一覧が表示されるはずです。iBook:/usr/local/mysql/bin takegata$
この状態で、mysqlを実行します。
iBook:/usr/local/mysql/bin takegata$ ./mysql -u root -p
標準のターミナルでは、カレントディレクトリにもパスが通っていないので、実行ファイルの前に ./ を(ドット・スラッシュ)つけます。これでmysqlのプロンプトが表示されるかどうかを試してみてください。
投稿:竹形 誠司[takegata]/2007年 05月 10日 02時 52分
/更新:2007年 05月 10日 02時 53分
遅くなりました
>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のプロンプトが表示された、ということでよいんでしょうか・・
>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>
投稿:まっしゅ[masyu]/2007年 05月 25日 15時 14分
/更新:2007年 05月 25日 15時 14分
そうですね、これが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のディレクトリに置いて試してみてください。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';
<%@ 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>
<%@ 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分
結果から言うと、ダメでした。
-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#
エラーが出ました。-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)
メッセージ
説明 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分
これと同じ症状みたいですね。
http://forums.mysql.com/read.php?39,74971,74971#msg-74971
で、Appleのサイトにこんな情報がありました。
http://docs.info.apple.com/article.html?artnum=302936
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分
ありがとうございます。
まさしく、URL先と同じ症状でした。
英語は苦手なのですががんばってみました
>Go to /Applications/Server
>MySQLマネージャーを立ち上げて、MySQLのサービスを止める
>Allow network connectionsっていうチェックボックスを選択する。
>MySQLのサービスを再起動(Restart)する
…しかし、上を実行しても現状変わりありません。
あきらめたほうが良いのでしょうか
まさしく、URL先と同じ症状でした。
英語は苦手なのですががんばってみました
>Go to /Applications/Server
>MySQLマネージャーを立ち上げて、MySQLのサービスを止める
>Allow network connectionsっていうチェックボックスを選択する。
>MySQLのサービスを再起動(Restart)する
…しかし、上を実行しても現状変わりありません。
あきらめたほうが良いのでしょうか
投稿:まっしゅ[masyu]/2007年 06月 11日 02時 51分
/更新:2007年 06月 11日 02時 51分
こっちを試してみてはどうでしょう。
1. /etc/mysqlManager.plist を開いて、<string>no</string>になっている部分を<string>yes</string>に修正します。
2. MySQLサービスを停止して再起動します。
とりあえず、
/etc/mysqlManager.plist を開いて、<string>no</string>になっているかどうか見てみてください。
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. 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分
>/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>
<!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分
うーん、そうですか。それでいいはずですねぇ。
MySQLは確かに再起動されたでしょうか。マシン自体をリブートとかしてみましたか?
あとは、JDBCのバージョンが関係しているかも知れません。JDBCのバージョンは何をお使いでしたっけ?
MySQLは確かに再起動されたでしょうか。マシン自体をリブートとかしてみましたか?
あとは、JDBCのバージョンが関係しているかも知れません。JDBCのバージョンは何をお使いでしたっけ?
投稿:竹形 誠司[takegata]/2007年 06月 13日 00時 31分
/更新:2007年 06月 13日 00時 31分
>MySQLは確かに再起動されたでしょうか。マシン自体をリブートとかしてみましたか?
はい、しました。
>あとは、JDBCのバージョンが関係しているかも知れません。JDBCのバージョンは何をお使いでしたっけ?
JDBCはmysql-connector-java-5.0.5-bin.jarという名前です。
バージョンは5.0.5ということでしょうか
はい、しました。
>あとは、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分
うーむ、そうですか。JDBCのバージョンは私のiBookで動いているものと同じなので、問題はなさそうです。何でしょうねぇ・・・・
ちょっと古い情報ですが、localhostの代わりに127.0.0.1を指定したら動いたという人の話を見かけました。あんまり関係ないとは思うんですが、一応。
↓です。
http://mtlab.ecn.fpu.ac.jp/WSM_2002/021023212519.html
また何か情報見つかったら報告します。
ちょっと古い情報ですが、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分