- PR -

このエラーの原因について教えてください

1
投稿者投稿内容
ちひろ
会議室デビュー日: 2005/06/07
投稿数: 4
投稿日時: 2005-06-07 12:30
学校のゼミでシステム開発を行っており、そのサーバー環境を作っています。
開発したウェブアプリを実際のゼミ室のパソコンに移行し
実行して、MySQLと接続する画面でエラーが出てしまい、悩んでおります。
その環境ですが、OS:Linux RedHat9,Apache2,Tomcat4.1.30,j2sdk1.4.2_04,MySQL3.23.54aです。
このTomcatのserver.xmlは以下の通りです。Tomcatのweb.xmlは標準のままです。
<Context path="/unification" docBase="unification" debug="0"
reloadable="true" crossContext="true">

<Resource name="jdbc/db_2005" auth="Container"
type="javax.sql.DataSource"/>

<ResourceParams name="jdbc/db_2005">
<parameter>
<name>username</name>
<value>ユーザネーム</value> ←実際はちゃんとしたネームです。
</parameter>
<parameter>
<name>password</name>
<value>パスワード</value> ←実際はちゃんとしたパスワードです。
</parameter>
<parameter>
<name>driverClassName</name>
<value>com.mysql.jdbc.Driver</value>
</parameter>
<parameter>
<name>url</name>


<value>jdbc:mysql://localhost/db_2005?useUnicode=true&amp;characterEncoding=sjis</value>
</parameter>
<parameter>
<name>maxActive</name>
<value>4</value>
</parameter>
<parameter>
<name>maxWait</name>
<value>5000</value>
</parameter>
<parameter>
<name>maxIdle</name>
<value>2</value>
</parameter>
<parameter>
<name>validationQuery</name>
<value>SELECT count(*) FROM softlist</value>
</parameter>
</ResourceParams>
</Context>

エラーは以下の通り。
HTTP Status 500 -

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

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling

this request.

exception

org.apache.jasper.JasperException: Cannot create PoolableConnectionFactory, cause: Data

source rejected establishment of connection, message from server: "#HY000Host

'localhost.localdomain' is not allowed to connect to this MySQL server"
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:254)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at

org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j

ava:247)
at

org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at

org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Standar

dPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at

org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Standar

dPipeline.java:643)
at org.apache.catalina.valves.RequestFilterValve.process(RequestFilterValve.java:336)
at org.apache.catalina.valves.RemoteAddrValve.invoke(RemoteAddrValve.java:131)
at

org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Standar

dPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2422)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at

org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Standar

dPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at

org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Standar

dPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:163)
at

org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Standar

dPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at

org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Standar

dPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:199)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:324)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:415)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:681)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:615)
at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:794)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:687)
at java.lang.Thread.run(Thread.java:534)


root cause

javax.servlet.ServletException: Cannot create PoolableConnectionFactory, cause: Data

source rejected establishment of connection, message from server: "#HY000Host

'localhost.localdomain' is not allowed to connect to this MySQL server"
at

org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:536)
at org.apache.jsp.present_1_jsp._jspService(present_1_jsp.java:190)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:137)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:210)
at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:241)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
at

org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j

ava:247)
at

org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:193)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:256)
at

org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Standar

dPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at

org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Standar

dPipeline.java:643)
at org.apache.catalina.valves.RequestFilterValve.process(RequestFilterValve.java:336)
at org.apache.catalina.valves.RemoteAddrValve.invoke(RemoteAddrValve.java:131)
at

org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Standar

dPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2422)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180)
at

org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Standar

dPipeline.java:643)
at org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.java:171)
at

org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Standar

dPipeline.java:641)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:163)
at

org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Standar

dPipeline.java:641)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:174)
at

org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invokeNext(Standar

dPipeline.java:643)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
at org.apache.coyote.tomcat4.CoyoteAdapter.service(CoyoteAdapter.java:199)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:324)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:415)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:681)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:615)
at org.apache.jk.common.SocketConnection.runIt(ChannelSocket.java:794)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:687)
at java.lang.Thread.run(Thread.java:534)



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

Apache Tomcat/4.1.30-LE-jdk14

"#HY000Host 'localhost.localdomain' is not allowed to connect to this MySQL serverと上記

にありますが、MySQLのどの部分を変えればこれは解決するんでしょうか。
ここで使うウェブアプリのserver.xmlのContextで、JDBCを定義する箇所で、
<name>url</name>

<value>jdbc:mysql://localhost/db_2005?useUnicode=true&amp;characterEncoding=sjis</value>
</parameter>とlocalhostと書いているため、これが原因かと思い、
このパソコンのIPアドレスに変えたりしたものの、同じエラーが出ます。
軽いアドバイスでいいんで、よろしくお願いします。
未記入X
大ベテラン
会議室デビュー日: 2005/05/19
投稿数: 136
投稿日時: 2005-06-07 13:05
ちょっとググったら出てきたページを見ると…
Ja-Jakarta Project 掲示板とマルチポストですか。
http://www.jajakarta.org/kvasir/bbs/technical/1536?msg=4#msg5103

マルチポストが嫌われる理由はwww.google.comなどで自分で探して考えましょう。

#第三者様HPへのリンクであった為アドレスをgoogleに変更

[ メッセージ編集済み 編集者: 未記入 編集日時 2005-06-07 15:48 ]
Gio
ぬし
会議室デビュー日: 2003/11/28
投稿数: 350
お住まい・勤務地: 都内から横浜の間に少量発生中
投稿日時: 2005-06-07 14:02
きちんと 3-tired architecture を理解し、どの情報がどのファイルで定義されているか理解してからシステムを作りましょう。
質問の仕方を見る限りではアプリケーションサーバとデータベースサーバの違いすら理解していないように見えます。
(少なくとも、理解していれば「アプリケーションサーバとデータベースサーバは同一マシンにしていて、OSは〜」という言明になるはず)

あと学校のゼミならば、指導教官や同じゼミの仲間に尋ねた方が早いと思います。

以下蛇足:
引用:

軽いアドバイスでいいんで、よろしくお願いします。


それでは軽いアドバイスを。

・ゼミ室マシンが localhost および localhost.localdomain という名前で自分自身にアクセスできるか調べる
・DNS が導入されていれば、自分自身の名前および qualified domain name でアクセスできるか調べる
・DNS がない場合は、IP アドレスを直接指定した ping や netstat で、最低限、自分自身の中でネットワーク不通がないか調べる
・パーソナルファイアウォールソフト等がリクエストを拒絶していないか調べる
(これはあまり関係ないかも。スタックトレースには DB への接続失敗により DataSource が作れなかったと出ていますから。)
・ゼミ室マシンで MySQL が起動されているか調べる
・MySQL 上に指定した名前のテーブルが存在するか調べる
・存在する場合、テーブルの構造やアクセス権に問題がないか調べる
(テーブルのアクセス権は、通常ユーザでコマンドラインインタフェースを使った場合と、Webアプリケーションが動作する権限のユーザの場合で違う挙動を示し、これによるトラブルがかなり多いので念入りに調べること)
・Apache, Tomcat, j2sdk, MySQL のバージョンが完全にあっているか調べる
・開発に使ったマシンとゼミ室マシンでその他のソフトの違い(有無、バージョン)が影響していないか調べる
(特に Linux の場合は、OS 自体のディストリビューションが影響しなさそうで微妙に影響することもあるので念入りに)
・両マシンでブート直後に起動されるプロセスの違いも全部調べる
・もしクリーンインストール可能なマシンが用意できればだが、そのマシンに OS のインストールから各種プラットフォームの設定まで全部やり直して、問題が再現するか確認する
・設定の手順と内容を完全に洗い出して仲間や指導教官に説明し、不備がないかレビューしてもらう

くらいでしょうか。軽いところでは。
ちひろ
会議室デビュー日: 2005/06/07
投稿数: 4
投稿日時: 2005-06-07 15:11
最近掲示板に投稿するようになり、ネット掲示板にルールがあることを知りませんでした。
どうもすいませんでした。

Gioさん、アドバイスどうもありがとうございました。何分若輩者でして、まだまだ
勉強が足らないようです。MySQLとTomcatは同一のサーバです。OSはLinuxです。
多くのアドバイスどうもありがとうございます。これら一つ一つ勉強し、
調べていきたいと思います。また、何かわからないところがあったら、
アドバイスよろしくお願いします。
1

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