Javaの道 Javaに関する
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道 >  掲示板 >  掲示板(Java(Ecripse)とmysqlの連携がうまくいきません。)
閲覧数:11480
掲示板(Java(Ecripse)とmysqlの連携がうまくいきません。)
名前
題名 Java(Ecripse)とmysqlの連携がうまくいきません。
質問内容

質問を評価する
(0ポイント)
現在はじめてのJSPサーブレットで勉強しており、
Ecrips 3.7 indigoから、接続用サーブレットでデータ
ベースにつなごうと思っても、エラーが出てしまいま
す。この接続用サーブレットは、違うパソコンで試した
ときは使えました。(コメントアウトしてるものが文字
化けしてますが関係ないですよね?)
mysqlやtomcatのフォルダのパスが必要であればお伝え
します。
なにか解決になるためのアドバイスを頂ければ幸いで
す。
OS Windows xp service pack3
mysql virsion 5.5.33
workbench 6.0 CE
作業としては、
work bench にてsampleというスキーマを作成。
todo_listテーブルの中に項目を入れてます。
rootにpasswordというパスワード設定。
server.xmlのGlobal Naming Resourceの中に
<Resource driverClassName="com.mysql.jdbc.Driver" 
initialSize="5" maxActive="5" maxIdle="5" 
maxWait="5000" name="jdbc/localDB "  
type="javax.sql.DataSource" 
url="jdbc:mysql://127.0.0.1:3306/sample" 
username="root"  password="password" />
を追加。
context.xmlの中に
<ResourceLink name="jdbc/localDB" 
global="jdbc/localDB" type="javax.sql.DataSource" 
/>
を追加
web.xmlのweb-appの中に
<resource-ref>
<res-ref-name>jdbc/localDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
を追加とconnector j のjarファイルをtomcatのlibへコ
ピーしました。
エラーが下記になります。
例外レポート

メッセージ 

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

例外 

java.lang.NullPointerException
    sample.web.ConnectServlet.doGet(ConnectSer
vlet.java:48)
    javax.servlet.http.HttpServlet.service(Htt
pServlet.java:621)
    javax.servlet.http.HttpServlet.service(Htt
pServlet.java:728)


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

ログは、下記になります。
8 17, 2013 4:17:17 午後 
org.apache.catalina.core.StandardWrapperValve 
invoke
SEVERE: サーブレット sample.web.ConnectServlet の
Servlet.service()が例外を投げました
java.lang.NullPointerException
    at 
sample.web.ConnectServlet.doGet(ConnectServlet.jav
a:48)
    at 
javax.servlet.http.HttpServlet.service(HttpServlet
.java:621)
    at 
javax.servlet.http.HttpServlet.service(HttpServlet
.java:728)
    at 
org.apache.catalina.core.ApplicationFilterChain.in
ternalDoFilter(ApplicationFilterChain.java:305)
    at 
org.apache.catalina.core.ApplicationFilterChain.do
Filter(ApplicationFilterChain.java:210)
    at 
org.apache.catalina.core.StandardWrapperValve.invo
ke(StandardWrapperValve.java:222)
    at 
org.apache.catalina.core.StandardContextValve.invo
ke(StandardContextValve.java:123)
    at 
org.apache.catalina.authenticator.AuthenticatorBas
e.invoke(AuthenticatorBase.java:502)
    at 
org.apache.catalina.core.StandardHostValve.invoke(
StandardHostValve.java:171)
    at 
org.apache.catalina.valves.ErrorReportValve.invoke
(ErrorReportValve.java:99)
    at 
org.apache.catalina.valves.AccessLogValve.invoke(A
ccessLogValve.java:953)
    at 
org.apache.catalina.core.StandardEngineValve.invok
e(StandardEngineValve.java:118)
    at 
org.apache.catalina.connector.CoyoteAdapter.servic
e(CoyoteAdapter.java:408)
    at 
org.apache.coyote.http11.AbstractHttp11Processor.p
rocess(AbstractHttp11Processor.java:1023)
    at 
org.apache.coyote.AbstractProtocol$AbstractConnect
ionHandler.process(AbstractProtocol.java:589)
    at 
org.apache.tomcat.util.net.JIoEndpoint$SocketProce
ssor.run(JIoEndpoint.java:310)
    at 
java.util.concurrent.ThreadPoolExecutor.runWorker(
ThreadPoolExecutor.java:1145)
    at 
java.util.concurrent.ThreadPoolExecutor$Worker.run
(ThreadPoolExecutor.java:615)
    at java.lang.Thread.run(Thread.java:724)
質問日時 2013-08-17 16:32:00
名前
匿名
回答内容

回答を評価する
(0ポイント)
>エラーが出てしまいます。
で、何を調べて何を試したの?
回答日時 2013-08-18 07:18:01
名前
回答内容

回答を評価する
(0ポイント)
ご返信ありがとうございます。

試したのは、
ecripse上で外部jarファイルの追加としてconnector j 
のjarファイルを追加した。
接続サーブレットのプロジェクト内のWEB-INF内にも追
加してみた。
データベースは起動していて、ワークベンチ内でrootユ
ーザーにpasswordの設定を行った。

クラスパスの設定は、tomcatのlibないに置くと自動参
照してくれるそうなんで、してません。

下記のソースでJDBCドライバのロードを行ったんです
が、こちらでも404エラーが出ます。

public class chkLoadJdbc {
  public static void main(String[] args) {
        String msg = "";
        try {
          
Class.forName("com.mysql.jdbc.Driver").newInstance
();
          msg = "ドライバのロードに成功しました";
        } catch (ClassNotFoundException e){
          msg = "ドライバのロードに失敗しました";
        }
        System.out.println(msg);
    }
}

うーん、JDBCのロードがうまくいってないのでしょう
か?
もしまだ何か試す必要があればアドバイスいただければ
と思います。
よろしくお願いします。
回答日時 2013-08-18 10:38:31
名前
匿名
回答内容

回答を評価する
(0ポイント)
>java.lang.NullPointerException
>    sample.web.ConnectServlet.doGet(ConnectServlet.java:48)
こいつのソースがないので、他人は質問者が適切な推測をしてるかどうか、判断しようがない。

>下記のソースでJDBCドライバのロードを行ったんです
>が、こちらでも404エラーが出ます。
なんでこのクラスの実行で404エラーになるの?
回答日時 2013-08-18 21:49:55
名前
回答内容

回答を評価する
(0ポイント)
ご返信ありがとうございます。
>下記のソースでJDBCドライバのロードを行ったんです
>が、こちらでも404エラーが出ます。
こちらのエラーに関しては、よく理解できてないので明
日もう少し調べて見ます。

最初の接続サーブレットのエラーのソースは下記になり
ます。最初に出しとくべきでした。すいません。

package sample.web;

import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;

import javax.naming.InitialContext;
import javax.naming.NamingException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;

import sample.dao.DatabaseConnection;

/**
 * Servlet implementation class ConnectServlet
 */
@WebServlet("/ConnectServlet")
public class ConnectServlet extends HttpServlet {
    private static final long serialVersionUID 
= 1L;

    protected void doGet(HttpServletRequest 
request, HttpServletResponse response) throws 
ServletException, IOException {

        Connection connection = null;

        try {
            // JNDI蜿ら&#65533;繧ウ繝ウ繝&#65533;く繧ケ繝医r蜿門
セ&#65533;
            InitialContext initCtx = new 
InitialContext();

            // Tomcat縺ァ邂。逅&#65533;&繧後◆繝&#65533;&#65533;繧ソ繝
吶&#65533;繧ケ謗・邯壹rJNDI邨檎罰縺ァ蜿門セ励&#65533;
            // java:comp/env/繧貞ソ&#65533;★縺、縺代k縲
&#65533;
            DataSource ds = (DataSource) initCtx
                    
.lookup("java:comp/env/jdbc/localDB");

            // 繝&#65533;&#65533;繧ソ繝吶&#65533;繧ケ謗・邯壹r蜿門セ励
☆繧&#65533;
            connection = ds.getConnection();

            // 謗・邯壹′豁」縺励¥螳御コ&#65533;☆繧九→繧
ウ繝ウ繧ス繝シ繝ォ縺ォ繝。繝&#65533;そ繝シ繧ク繧貞&#65533;蜉&#65533;
            log("接続");

        } catch (Exception e) {
            throw new ServletException(e);
        } finally {
            try {
                connection.close();
                log("接続解除");
            } catch (SQLException e) {
                throw new ServletException(e);
            }
        }

        
request.getRequestDispatcher("/complete.html").for
ward(request, response);
    }
}
回答日時 2013-08-18 23:54:09
名前
回答内容

回答を評価する
(0ポイント)
みなさん。大変申し訳ございません。

sever.xmlに追記するname="jdbc/localDB "が中にスペースが入っており、除去すると解決しました。

ありがとうございました。
回答日時 2013-08-19 10:26:17
回答内容を入力し、「確認」ボタンをクリックしてください。
ログインしていません。ログインしなくても回答はできますが、ログインすると、質問・回答の管理、更新があった場合のメールでの通知を受けることができます。 ユーザIDをお持ちでない方は「ID登録」からユーザIDの登録を行ってください。
氏名 匿名
回答内容
 



このページのトップへ
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道_CopyrightJavaの道