веб-сервис: ошибка в коде или соединении - PullRequest
0 голосов
/ 17 апреля 2009

У меня проблема с кодом или подключением, я думаю ...

Я попытался подключиться к базе данных и веб-службе MySQL, но при запуске программы выдается следующая ошибка:

альтернативный текст 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 ]

2 голосов
/ 17 апреля 2009

Полагаю, что "www.localhost.com" должно быть просто "localhost"; это часто происходит, если сервер не отвечает, Firefox пытается найти сервер в сети. Вы уверены, что номер порта правильный?

ПРИМЕЧАНИЕ # 1 : какую платформу appserver / webservice вы используете? Вы написали клиент или пытаетесь использовать автоматически сгенерированный клиент по умолчанию?

NOTE # 2 : когда ваш код будет вызван, он, скорее всего, выдаст «исключение нулевого указателя» здесь

cityName.add (LastName);

потому что вы забыли инициализировать список, и он может никогда не найти ваш город, потому что вы забыли установить параметр

$ CITYNAME

перед вызовом подготовленного заявления.

NOTE # 3 : вам лучше протестировать вызов веб-сервиса и код, который он выполняет, в два разных этапа; рассмотрите возможность написания простого основного или тестового примера для последнего.

0 голосов
/ 17 апреля 2009

Как сказал Манрико; Вы не подключаетесь к своему веб-серверу.

Измените URL на "http://127.0.0.1:17978/LostNumApplication" и попробуйте снова.

Если это не сработает, это может быть брандмауэр или сервер работает на другом порту.

Если это кот, проверьте server.xml.

0 голосов
/ 17 апреля 2009

Несколько советов ...

Вы, вероятно, должны выяснить, где выводится ошибка вашей программы. Как правило, при запуске вещей в контейнере сервлетов (tomcat?) Сервер записывает stdout и stderr в файлы (может быть, в журналах?). Также выясните, как сервер приложений / контейнер регистрирует исключения.

Возможно, вам следует сначала попробовать запустить свой код как обычное Java-приложение.

При отлове исключения, вероятно, хорошей идеей будет использование каркаса ведения журнала для регистрации исключения. Подойдет или log4j, или java.util.logging.

... или - просто для тестирования, сделайте исключение.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();
}
0 голосов
/ 17 апреля 2009

Я уже сталкивался с этим раньше, но это было из-за того, что у меня в DNS все портилось.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...