2016-07-20 34 views
0

Hallo alle zusammen ..Create-Methode in WebService (JAX-WS) Daten zu MySQL DB

Ich bin neu in Web-Service einfachen Web-Service (JAX-WS) zu schaffen, so versucht senden an Glass Fish Server 4.1.1, dieser Dienst sendet Daten an MySQL-Datenbank wie this, aber ich bekomme this Fehler, warum ich nicht weiß!?!?

MEIN CODES:

package com.me.coder; 

    import java.sql.Connection; 
    import java.sql.DriverManager; 
    import java.sql.ResultSet; 
    import java.sql.SQLException; 
    import java.sql.Statement; 
    import javax.jws.WebService; 
    import javax.jws.WebMethod; 
    import javax.jws.WebParam; 

    /** 
    * 
    * @author MacbookPro 
    */ 
    @WebService(serviceName = "GetWriteToDB") 
    public class GetWriteToDB { 

     /** 
     * Web service operation 
     */ 

     @WebMethod(operationName = "sendToDb") 
     public void sendToDb(@WebParam(name = "id") int id, @WebParam(name = "name") String name, @WebParam(name = "location") double location, @WebParam(name = "date") String date) { 
      String host = "jdbc:mysql://localhost/onurDB"; 
      String user = "onur"; 
      String pass = "onurdb958"; 

      try(Connection conn = DriverManager.getConnection(host,user,pass); 
       Statement smt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE); 
       ){ 
       String SQL = "INSERT INTO `GoogleLoc`(`ID`, `NAME`, `LOCATION`, `DATE`) VALUES ('" + id + "','" + name + "','"+ location + "','" + date + "')"; 
       smt.executeUpdate(SQL); 

      }catch(SQLException ex){ 
       System.out.println("SQLException : " + ex); 
      } 

     } 
    } 

Zur Kontrolle versuchten gleiche Codes in Java SE-Klasse funktionierte perfekt. So:

package send; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.sql.Statement; 

/** 
* 
* @author MacbookPro 
*/ 
public class Send { 

    /** 
    * @param args the command line arguments 
    */ 
    private static String name,date; 
    private static int location,id; 


    public static void main(String[] args) throws IOException { 
     String host = "jdbc:mysql://localhost/onurDB"; 
     String user = "onur"; 
     String pass = "onurdb958"; 

     try(Connection conn = DriverManager.getConnection(host,user,pass); 
      Statement smt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE); 
      ){ 

      insertData(smt); 
     }catch(SQLException ex){ 
      System.out.println("SQLException : " + ex); 
     } 
    } 
     private static void insertData(Statement smt) throws SQLException, IOException { 
     BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); 
     System.out.print("Enter ID : "); 
     String id = bf.readLine(); 
     System.out.print("Enter Name : "); 
     String name = bf.readLine(); 
     System.out.print("Enter Location : "); 
     String location = bf.readLine(); 
     System.out.print("Enter Date : "); 
     String date = bf.readLine(); 
     String sql; 
     sql = "INSERT INTO `GoogleLoc`(`ID`, `NAME`, `LOCATION`, `DATE`) VALUES ('" + id + "','" + name + "','" 
       + location + "','" + date + "')"; 
     smt.executeUpdate(sql); 
     System.out.println("Success! data inserted."); 
    } 
} 

ich meine Schuld in @WebMethod

Jemand kann mir bitte helfen vorstellen kann ???

Vielen Dank für alle ..

+0

in Ihrem Screenshot, haben wir nicht das Ende des Stacktrace. – davidxxx

+0

@davidhxxx Es zeigt nicht viel mehr als ... –

Antwort

0

Gelöst!

Wir brauchen Codes wie folgt zu ändern:

package com.me.coder; 

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 
import java.sql.Statement; 
import java.util.logging.Level; 
import java.util.logging.Logger; 
import javax.jws.WebService; 
import javax.jws.WebMethod; 
import javax.jws.WebParam; 
import javax.ws.rs.GET; 

/** 
* 
* @author Coder ACJHP 
*/ 
@WebService(serviceName = "GetWriteToDB") 
public class GetWriteToDB { 

    /** 
    * Web service operation 
    * 
    * @param id 
    * @param name 
    * @param location 
    * @param date 
    * @return 
    */ 
    @GET 
    @WebMethod(operationName = "insertUser") 
    public boolean insertUser(@WebParam(name = "id") int id, @WebParam(name = "name") String name, 
      @WebParam(name = "location") double location, @WebParam(name = "date") String date) { 
     boolean insertStatus = false; 
     final String host = "jdbc:mysql://localhost/onurDB"; 
     final String user = "onur"; 
     final String pass = "onurdb958"; 
     try { 
      Class.forName("com.mysql.jdbc.Driver").newInstance(); 
     } catch (ClassNotFoundException | InstantiationException | IllegalAccessException ex) { 
      Logger.getLogger(GetWriteToDB.class.getName()).log(Level.SEVERE, null, ex); 
     } 
     try (
       Connection conn = DriverManager.getConnection(host, user, pass); 
       Statement smt = conn.createStatement();) { 
      String SQL = "INSERT INTO `GoogleLoc`(`ID`, `NAME`, `LOCATION`, `DATE`) VALUES ('" + id + "','" + name + "','" + location + "','" + date + "')"; 
      int x = smt.executeUpdate(SQL); 
      if (x > 0) { 
       insertStatus = true; 
      } 

     } catch (SQLException e) { 
      System.out.println(e.getMessage()); 
     } 
     return insertStatus; 
    } 

}

0

Ihre NullPointerException aus der WebserviceTesterServlet Klasse angehoben, die für das Helfen Sie ein Glassfish WS Werkzeugklasse ist eine Webservice zu nennen. Es ist ein grafischer Client für Ihren Webservice. Vielleicht kommt das Problem von dieser Klasse, vielleicht von Ihrer Implementierung. Mit diesem Stracktrace ist es schwer zu erraten. Das Problem ist, dass WebserviceTesterServlet keine hilfreiche Ausnahme gibt. So können wir die Ursache nicht verstehen. Ich schlage vor, Sie drei Lösungen Ihr Problem zu lösen:

  • die Quelle jar herunterladen WebserviceTesterServlet enthält (nehmen Sie die Version, die Sie verwenden), einen Haltepunkt auf der 342 dieser Klasse Spiel setzen und den Server im Debug-Modus ausgeführt werden.
  • Mit SOAP UI zum Aufruf Ihrer Operation versuchen.
  • Erstellen Sie Ihren eigenen Code für den Aufruf des WebService und testen Sie Ihre Webservice-Operation. Sie können es einfach durch Generieren der Proxy-Klassen tun. Sie können zum Beispiel JAX-WS verwenden und einen wsimport ausführen.
+0

Ich werde versuchen und Ihnen sagen, was passiert ist. –

+0

@davidxxx Mein Freund Ich probierte es in der eigenen App und es gibt keinen Fehler oder ein Problem?!?! aber nichts zur Datenbank hinzugefügt. –

+0

Ich fand das Problem ... dieser Web-Service nicht erlauben, Methode zu verwenden (void) nur ich kann Konstruktor (return) .Just änderte die Methode zum Konstruktor mit der Rückkehr alles, was es funktioniert hat! ......... ..so wie kann ich nichtig machen? –