webservice:代码或连接错误

时间:2009-04-17 13:36:13

标签: java mysql database service

我认为我的代码或连接存在问题......

我尝试连接到MySQL数据库和Web服务,但是当我运行该程序时,它给了我以下错误:

alt text http://www6.0zz0.com/2009/04/17/13/808603628.jpg

  

@WebService()   公共类LostNumWebService {

/**
 * Web service operation
 */
@WebMethod(operationName = "getCategory")
public List getCategory(@WebParam(name = "city_name")
String city_name) {
    List cityName = null;
    try{
        String url = "jdbc:mysql://localhost:3306/mobileapplication";
        Connection conn = DriverManager.getConnection(url,"***","***");
        Statement stmt = conn.createStatement();
        ResultSet rs;
        rs = stmt.executeQuery("SELECT city_id, city_name FROM city WHERE city_name = $city_name");
        while ( rs.next() ) {
            String lastName = rs.getString("city_name");
            cityName.add(lastName);
           // System.out.println(lastName);
        }
        conn.close();

    } catch (Exception e) {
        System.err.println("Got an exception! ");
        System.err.println(e.getMessage()); 
    }


    return cityName;
}

我不知道错误,连接或代码是什么? 我可以在这里得到一些帮助吗?

4 个答案:

答案 0 :(得分:2)

我猜“www.localhost.com”应该只是“localhost”;如果服务器没有响应,这种情况经常发生,Firefox会尝试在网络上搜索服务器。您确定端口号是否正确?

注意#1 :您使用的是哪个appserver / webservice平台?您是编写客户端还是尝试使用默认自动生成的客户端?

注意#2 :当您的代码被调用时,它很可能会在这里抛出“空指针异常”

  

cityName.add(lastName的);

因为您忘记初始化列表,因为您忘记设置参数,它可能永远找不到您所在的城市

  

$的cityName

在调用preparedStatement之前。

注意#3 :您最好在两个不同的步骤中测试Web服务调用及其执行的代码;考虑为后者编写一个简单的主要或测试用例。

答案 1 :(得分:0)

我以前经历过这种情况,但那是我的DNS弄乱了。

答案 2 :(得分:0)

一些提示......

您应该弄清楚程序的错误输出结束的位置。 通常,当在servlet容器(tomcat?)中运行时,服务器会将stdout和stderr写入文件(可能在日志中?)另外,找出应用程序服务器/容器如何记录异常。

也许您应该首先尝试将代码作为常规Java应用程序运行。

捕获异常时,使用日志记录框架记录异常可能是个好主意。 log4j或java.util.logging都可以。

...或 - 只是为了测试,执行exception.printStackTrace()以便获得完整的 信息。

此外,SQL查询不好......查找动态参数的PreparedStatement。


if( city_name == null ) {
  //return nothing?
} else {
PreparedStatement pstmt = con.prepareStatement("SELECT city_id, city_name FROM city WHERE city_name = ?");

   pstmt.setString(1, city_name); /// 

 ResultSet rs = stmt.executeQuery();
}

答案 3 :(得分:0)

正如曼里科所说;你没有连接到你的网络服务器。

将网址更改为“http://127.0.0.1:17978/LostNumApplication”,然后重试。

如果这不起作用,它可能是防火墙,或者服务器可能在不同的端口上运行。

如果是tomcat,请检查server.xml。