2017-03-26 7 views
1

私はJAVA RESTful APIにはかなり新しく、今は作成しようとしています。私はいくつかのチュートリアルを見ましたが、その人はデータベースを使用していなかったので、実行時にarraylistまたはsthにのみデータを格納していました。安心なjava api(JAX-RS、Jersey)内でmysql dbを使用するには?

データベース接続を作成してから単純なクエリを作成しようとしましたが、Javaアプリケーションとして実行しているときにうまく動作しますが、Webアプリケーション内で使用しようとすると接続できません私のDBに渡して例外をスローします。

例外:ここ

SEVERE: Servlet.service() for servlet [Jersey Web Application] in context 
with path [/restapi] threw exception [java.lang.IllegalStateException: 
Cannot connect the database!] with root cause 
java.sql.SQLException: No suitable driver found for 
jdbc:mysql://localhost:3306/restapi?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC 

は、Javaアプリケーションとして動作します私のコード、ですが、Webアプリケーションではありません:

public class AuthService { 
    private String url = "jdbc:mysql://localhost:3306/restapi?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC"; 
    public List<User> getAllUsers() { 
     List<User> users = new ArrayList<User>(); 
     try (Connection conn = DriverManager.getConnection(url, "blabla", "blabla")) { 

      Statement stmt = conn.createStatement(); 
      String sql; 
      sql = "SELECT * FROM users"; 
      ResultSet rs = stmt.executeQuery(sql); 
      while(rs.next()){ 

       int id = rs.getInt("id"); 
       String login = rs.getString("login"); 
       String first = rs.getString("firstname"); 
       String last = rs.getString("lastname"); 

       users.add(new User(id, login, first, last));    
      } 


     } catch (SQLException e) { 
      throw new IllegalStateException("Cannot connect the database!", e); 
     } 
    return users; 
} 

おそらくこれは、接続するための正しい方法ではありません(私はたぶんすべてのクエリのDBに接続したくないので)DBに、しかしそれは今私にとっては重要ではありません。

(。答えのための私の英語のため申し訳ありませんが、おかげで)

+0

"javaアプリケーション"と "webapp"の区別はできますか? mysqlのためのいくつかのサポートライブラリが欠けているように見えます。おそらく、ジャージーのビルドプロセスは、それらを何か別の方法で組み込む必要がありますか? –

答えて

1

エラーメッセージは明らかに、それはエラーメッセージの下の行にmysql driverを見つけることができなかったことを述べている: -

のjava.sql。 SQLExceptionます。mysql:// localhostを: JDBCが見つかりません、適切なドライバ?3306/restapi useUnicode =真& useJDBCCompliantTimezoneShift =真& useLegacyDatetimeCode = falseを& serverTimezone = UTC

Web-Projectにmysql-connector jarを含めて動作させる必要があります。 Mavenを使用している場合、以下の依存関係をコードに含める必要があります。それ以外の場合は、手動でjarをダウンロードしてクラスパスに配置します。

<!--Mysql-Connector--> 
<dependency> 
    <groupId>mysql</groupId> 
    <artifactId>mysql-connector-java</artifactId> 
    <version>5.1.36</version> 
</dependency> 

はまた、私は目的のjava、ジャージーを使用してRESTfulなJavaアプリケーションを開発する方法のクイックスタートを与えるために、mysqlの、春と休止状態であるサンプルアプリケーションを、作成しました。ここをクリックしてください。https://github.com/amitmbm/rest

関連する問題