- PR -

JSPプログラム起動の際,localhostでは起動していたがサーバーにつなぐとうまくいかない

投稿者投稿内容
mso
ぬし
会議室デビュー日: 2003/12/04
投稿数: 496
お住まい・勤務地: 宮城
投稿日時: 2004-01-28 09:44
サーバ側(Unix)のJDBCの設定などはされていますか???
単純にJDBCの接続が出来ていないみたいですが。。。。
ぎんが
常連さん
会議室デビュー日: 2003/09/09
投稿数: 24
投稿日時: 2004-01-29 21:41
JDBCはmysql-connector-java-3.0.8-stable-bin.jarをj2sdk1.4.2/jre/lib/ext
ディレクトリにコピーをしただけに留まっています.
どの本にもそのほかの設定を書いていないので,
JDBCの設定の方法を教えていただけないでしょうか?
ぎんが
常連さん
会議室デビュー日: 2003/09/09
投稿数: 24
投稿日時: 2004-01-29 21:51
[quote]
インギさんの書き込み (2004-01-27 23:55) より:
>localhostではwindowsをまた運用するサーバーはunixです.
これは、localhost では接続できたが、Windows(Tomcat*.*.*) -> unix(MySQL*.*.*) とりあえず,JSPファイルの最初の部分と,インポートされるJAVAファイルの前半
のソースを記載します.
悲しいかな検討がつきません.

***JSPファイルの最初の部分**********
<%@ page language="java" %>
<%@ page contentType="text/html;charset=Shift_JIS" %>
<%@ page import="java.sql.*,db_c.DBConnect" %>

***上のJSPファイルからインポートされるJAVAファイルの前半**********
package db_c;
import java.sql.*;
import java.util.*;

public class DBConnect {
private String driver;
private String url;
private String user;
private String password;

private int maxConnect;
private int cout;
private Vector connectionPool = new Vector();
private static DBConnect instance;

public static synchronized DBConnect getInstance() {
if (instance == null) {
instance = new DBConnect();
}
return instance;
}

private DBConnect() {
this.driver = "com.mysql.jdbc.Driver";
this.url = "jdbc:mysql://ホストコンピュータ/データベース名?useUnicode=true&characterEncoding=SJIS";
this.user = "root";
this.password = "";
this.maxConnection = 10;
}


aa
ぬし
会議室デビュー日: 2004/01/08
投稿数: 299
投稿日時: 2004-01-29 22:27
ping hostnameは通っていますか?
ぎんが
常連さん
会議室デビュー日: 2003/09/09
投稿数: 24
投稿日時: 2004-01-29 22:40
ping hostname
は通っています.

[quote]
>インギさんの書き込み (2004-01-27 23:55) より:
>>localhostではwindowsをまた運用するサーバーはunixです.
>これは、localhost では接続できたが、Windows(Tomcat*.*.*) -> unix(MySQL*.*.*)
> はうまくいかない、ということでしょうか?

そういうことです.

>unix -> unix は Ok なのでしょうか?
>また、もう一度お聞きしますが JSP に依存した話ではないんですよね?
>なぜしつこく聞くかというと、タイトルには、JSP から接続を試みた場合のみ
>うまくいかないようなニュアンスがあるからです。

unix->unixはOKかどうかを調べる事ができない環境にいます.
mysql単体では動作します.

>私は MySQL 使ったことないのですが、ちょっと調べると autoReconnect を有効に
>設定すると回避できる、とか最新のドライバを使えば OK などの情報がありますね。
>どんなことを試しましたか?
>http://www.mvnforum.com/mvnforum/viewthread?thread=208

autoReconnectを有効にしてみましたが変化はありませんでした.

>MysqlIO.java の 1333 行目や、558 行目で何をしようとしてるか確認してみては
>いかがでしょうか。
>あと、MySQL のバージョンとか、telnet で接続すること自体は可能/不可能と
>かいった情報は切り分けの助けになりそうです。

申し訳ありませんがもう少し詳しく説明していただけないでしょうか.
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-01-30 01:44
・JSP が関係するかどうかについて
しつこいですが、問題の切り分けにはこういった情報は大事です。Tomcat の起動スクリプトのクラスパスがおかしいのかもしれないですし。

・telnet で接続可能かどうかについて
Unix マシンで MySQL のポートが開いているかどうかを調べるためです。
MySQL のポートでリスンすらしていなければ JDBC の設定ではなくて、MySQL 側の設定の問題といえます。
UNIX 側で
$ netstat -an
とすることでもリスンしているかどうか確認できます。「ポート」「リスン」とかわからなかったら、「TCP/IP」「ソケット」とかで調べて勉強してください。

別の切り口では JDBC URL のホスト名を MySQL がインストールされていないマシンの名前にしてみる、という手もあります。同じ例外がでるようであれば Unix 側の問題である可能性が高いのでは?

・なぜ、MysqlIO.java の 1333 行目や、558 行目をしらべるのか?
スタックトレース↓
java.io.IOException: Unexpected end of input stream at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:1333) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:558) at com.mysql.jdbc.Connection.createNewIO
より、MysqlIO の 1333 行目で例外を投げているのがわかるからです。どういう条件がそろった時にこの例外を投げるのかを調べることで原因の究明につながる可能性があります。
簡単に言えば「オープンソースなんだから自分で解決しなさい!」ってことです。
オープンソース製品を使うということは自分でサポートする、ということなんですから・・・。
#この掲示板で質問をするな!って意味ではないですよ。そういう切り分け方もある、という話です。

[ メッセージ編集済み 編集者: インギ 編集日時 2004-01-30 01:48 ]
Keisuke
大ベテラン
会議室デビュー日: 2003/10/24
投稿数: 105
投稿日時: 2004-01-30 02:37
MySql のユーザー設定はリモートアクセスが可能になっていますか?

確認する方法は、
$ mysql -p -h <UnixのIP> -u <DBユーザー名>
で認証されるかどうかです。

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