JDBCについて

[戻る]
なおぞう 2016/04/18(月) 11:32:23
JAVA、Webアプリ初心者になります。
よろしくお願いします

開発環境
OS Win7 x86 
tomcat8
Java java version "1.8.0_77"
JDBC postgresql-9.4.1208.jar

JAVAのWebアプリケーションでpostgreSQLを利用したいと思っています。
普通にJAVAプログラムを書いた場合、JDBCも動いてDBアクセスしてSELECT結果をだせたの
ですが、サーブレットやJSPにしてみると、下記エラーが出てしまいます。
【サーブレット】
    catch (Exception e) {      rw.println(e);    }

エラー:
java.lang.ClassNotFoundException: org.postgresql.Driver 

      // PostgreSQL JDBC ドライバロード
      Class.forName("org.postgresql.Driver");←ここで駄目という事ですが、パスの
通っているC:\Program Files\Java\jre1.8.0_77\lib\extに postgresql-9.4.1208.jarを
格納しています。


JAVAの単体プログラムではエラーが出ないのに、Webアプリ(サーブレット)にするとエ
ラーとなってしまう理由が全く分かりません。
教えていただけますようお願いします。

JSPでも、ネットで見つけたDBアクセスのサンプルソースを使ってみましたが大量のエ
ラーが出ます(まだエラーチェックしてません)

tetrapod 2016/04/18(月) 16:23:43
オイラも hpux 上に部内 web app である redmine や testlink を構築したことがあるが
( redmine は ruby で testlink は php だから java は使ってない)

この手のエラーは正しくインストールできていないことが原因。
ユーザー権限の設定が誤っているとか、環境変数の設定が足らないとか。
何が正しくインストールできていないのかは調査しないとわからない。

web server (apache httpd や IIS) は、一般的に「権限の低いユーザ」として実行する。
仮に web server の脆弱性を突いた攻撃を食らったとしても、
攻撃者が手にできるのは「低い権限」だけに留めるためだ。
開発者アカウントではうまく動いて web servlet にすると動かない、のはよく聞く話。
開発者アカウントと web server アカウントでは権限も環境変数設定も皆違うので。

ぢゃあどうすればいいか・・・となると遠隔地からアドバイスは難しいんだ。

一足飛びにデータベースを使う、と考えずに
とりあえず1歩づつ確かめてみると良いだろう。

http://javaroad.jp/
Tomcat が正しくインストールできていて Hello World servlet が期待通りに動くか、
あたりから始めてみよう。
http://javaroad.jp/opensource/js_tomcat3.htm
この辺で躓いているようだと先は長い・・・

Web 系はプログラミング以前に環境構築だけでも知っておかなきゃならないことが多い。
途中を飛ばしてしまうと脆弱性だらけなシステムの出来上がりなのでたいへんだよ。

なおぞう 2016/04/18(月) 17:34:00
[[解決]]
>tetrapod 様

アドバイスありがとうございます。
Hello Worldとかは表示できていたのです。
Posgresqlへのアクセスをしようとすると駄目でした。

ですが、解決しました。
サーブレットの方は、JDKに対応するJDBCを3種類落としてきて
C:\tomcat8\libに置き、クラスパスを張った事によって解決しました。
postgresql-9.4.1208.jar
postgresql-9.4.1208.jre6.jar
postgresql-9.4.1208.jre7.jar
多分上記3種のどれかのおかげで動くようになったのだと思います。

jspの方は、サンプルプログラムのコードに間違いがあったようです。

<%@ page import="java.util.*,java.sql.*;" contentType="text/html;
charset=Shift_JIS"%>

と書いてあったのですが、java.sql.* の後ろの セミコロンを消すことによって解決し
ました。
知識が全くないと、とんでもなく基本のところで躓いてしまいますね。

脆弱性についてもどうしたら良いものか…と悩んでおります。

古いスレッドには追加発言できません。