在我对Implementation进行MySQL查询后,JavaWebService抛出一个NullPointExcep



我一直在用java开发web服务。我在Java(自上而下)之前构建了wsd。问题是,我创建了一些类来请求MySql数据库中的数据。在SOAPImpl的方法中,我创建了一个类为Usuario的Object,但当我使用SOAP UI测试服务时,它显示了一个NullPointerException。

这是代码

DataBase.java

package negocio;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DataBase
{
    private String conexion;
    private String user;
    private String pass;
    Connection conexionBase;
    Statement estado;
    DataBase()
    {
        this.conexion = "jdbc:mysql://localhost/agua";
        this.user = "1234";
        this.pass = "1234";
        this.preparaDB();
    }
    public void preparaDB()
    {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } 
        catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
        try
        {
            this.conexionBase = DriverManager.getConnection (conexion, user, pass);
            estado = conexionBase.createStatement();
        }
        catch(SQLException e)
        {
            System.out.println(e.toString());
        }
    }
    public Statement getEstado()
    {
        return estado;
    }
}

Usuario.java

package negocio;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Usuario extends DataBase{
    private String clave;
    private String nombre;
    private String paterno;
    private String materno;
    public Usuario()
    {
        super();
    }
    public Usuario(String clave)
    {
        super();
        cargaUsuarioClave(clave);
    }
    public void cargaUsuarioClave(String clave)
    {
        String query = "SELECT * FROM usuario WHERE numeroCliente = '" + clave + "'";
        try
        {
            ResultSet resultado = this.getEstado().executeQuery(query);
            while(resultado.next())
            {
                this.clave = resultado.getString("numeroCliente");
                this.nombre = resultado.getString("nombre");
                this.paterno = resultado.getString("paterno");
            }
        }
        catch(SQLException e)
        {
            System.out.println(e.toString());
        }
    }
    public String getClave()
    {
        return this.clave;
    }
    public String getNombre()
    {
        return this.nombre;
    }
    public String getPaterno()
    {
        return this.paterno;
    }
    public String getMaterno()
    {
        return this.materno;
    }
}

AguaSaneamientoSOAPImpl.java

 /**
 * AguaSaneamientoSOAPImpl.java
 *
 * This file was auto-generated from WSDL
 * by the Apache Axis 1.4 Apr 22, 2006 (06:55:48 PDT) WSDL2Java emitter.
 */
package org.example.www.AguaSaneamiento;
import java.rmi.RemoteException;
import negocio.Usuario;
public class AguaSaneamientoSOAPImpl implements org.example.www.AguaSaneamiento.AguaSaneamiento_PortType{
    public org.example.www.AguaSaneamiento.ConsultarServicioPropiedadResponse consultarServicioPropiedad(org.example.www.AguaSaneamiento.ConsultarServicioPropiedadRequest parameters) throws java.rmi.RemoteException 
    {
        return null;
    }
    public org.example.www.AguaSaneamiento.ConsultaServicioUsuarioResponse consultaServicioUsuario(org.example.www.AguaSaneamiento.ConsultaServicioUsuarioRequest parameters) throws java.rmi.RemoteException {
        return null;
    }
    public org.example.www.AguaSaneamiento.InfoPagosUsuarioResponse infoPagosUsuario(org.example.www.AguaSaneamiento.InfoPagosUsuarioRequest parameters) throws java.rmi.RemoteException {
        return null;
    }
    public org.example.www.AguaSaneamiento.InfoUsuarioResponse infoUsuario(org.example.www.AguaSaneamiento.InfoUsuarioRequest parameters) throws java.rmi.RemoteException 
    {
        Usuario us = new Usuario("2");
        InfoUsuario [] infoUser = new InfoUsuario[1];
        infoUser[0] = new InfoUsuario("Enrique", "14 Sur", "345", "6");
        InfoUsuarioResponse infoRes = new InfoUsuarioResponse(infoUser);
        return infoRes;
    }
}

我测试了Usuario类,它可以工作,但是,当我在infoUsuaio方法中调用cargaUsuarioClave时,Web服务返回JavaNullPointException。这是回应。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <soapenv:Body>
      <soapenv:Fault>
         <faultcode>soapenv:Server.userException</faultcode>
         <faultstring>java.lang.NullPointerException</faultstring>
         <detail>
            <ns1:hostname xmlns:ns1="http://xml.apache.org/axis/">SERVER</ns1:hostname>
         </detail>
      </soapenv:Fault>
   </soapenv:Body>
</soapenv:Envelope>

我不知道会出什么问题。

我已经解决了问题,不是源代码,问题是连接器文件;我需要将tath文件复制到我的项目的lib文件夹中。

最新更新