Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Разработка ВЕБ-сервиса


Автор: Ner-zul 20.4.2008, 21:18

  Добрый День,

   Передо мной стоит задача создания некой программки, которая будет доставать определенные данные из базы данных под управлением SQLBase(Centura) и запаковывать их в xml файл или xml-сообщение и передавать другой программе. Изначальная идея в том, чтобы обеспечить через единый интерфейс Большой информационной системы доступ к данным, хранящимся в удаленной БД. Было решено моими руководителями организовывать этот доступ в виде WEB-Сервиса. Этот WEB-сервис должен быть разработан на Jave и зарегестрирован в главной системе.  Через единый интерфейс пользователи будут обращаться к моему сервису , а мой сервис к удаленной БД, извлекать оттуда Данные и выдавать их пользователю.   

   Мне было предложено разрабатывать данный сервис используя среду NetBeans 6.01 . Серверы GlassFish или Tomcat.

  Задача видимо не самая сложная, но признаться честно, я даже не знаю как подступиться к ее решению. С Архитектурой Веб-сервисов я принципиально знаком. Но мне не понятно как это реализовывать.

1. Я не знаю что выбрать и в чем разница между  GlassFish и Tomcat.
2. Я хотел бы изучить пример создания веб сервиса.
3. Я хотел бы понять как можно подключится к таблицам удаленной БД. И в частности БД на SQLBase.
4. Хотел бы понять как можно запросить данные из этой БД.

 Помогите пожалуйста.



Автор: Zamuta 20.4.2008, 21:33
Ner-zul
1. GlassFish  это сервер приложений, tomcat это сервлет контейнер. Думаю для твоего случая в GlassFish нет необходимости.
2. Вот http://www.netbeans.org/kb/trails/web.html как раз для netbeans.
3. Наверняка на сайте у SQLBase есть примеры.
4. Подозреваю что посредством Structured Query Language .

Автор: Ner-zul 20.4.2008, 22:42
Спасибо, правда,
 Если можно мне хотелось бы получить более конкретные и развернутые ответы:

1.1 А вообще какую роль GlassFish или Tomcat играют для моего сервиса? Он работает под их управлением? 
1.2 Значит , на той машине, на которой он будет работать тоже должны стоять эти серверы чтоли?
1.3 Что такое сервлет контейнер? (просьба не отвечать , что это контейнер для сервлетов)



2.1 Пример скачал, но он под MySQL и кроме того я не нашел там объяснения по этому примеру. А просто файлы с кодом мне мало что дают. Также, вышел я на пример по созданию веб-приложения. Это действительно то что мне нужно?
2.2 Сервлеты - это и есть веб приложения?
2.3 Сервлеты это тоже самое что и веб сервисы? В чем разница?
2.4 Какие из вышеперечисленных программ могут забирать данные из БД?



3.1 Не нашел на сайте производителе, как Из Java подключится к таблицам SQLBase.
3.2 Был бы признателен за пару строк кода и объяснения к ним.



4.1 Я понимаю что выборку данных нужно производить с помощью оператора SELECT. Мне важно понять, как писать этот запрос? Какой синтаксис ??? (то есть синтаксис именно в JAVA. Синтаксис самого SQL  я знаю очень хорошо.) И к кому его направлять??? 
Тут тоже очень хотел бы увидеть пример. smile 




Очень сложно найти самому ответы на эти вопросы в интернете. на каждой странице новые термины... Новые механизмы , какие-то приемы..пакеты...среды и пр. Совсем запутался.



Автор: LuLok 21.4.2008, 08:04
1. Бери Tomcat и не парься, для такого простенького приложения он вполне сойдет и ресурсов от системы жрет мало. И да, тебе надо будет установить его на сервер, где будет работать приложениеsmile

2. Разница между работами с БД в JAVA заключается только в использовании различных "драйверов", поищи их на сайте производителя или на сайте SUN. Вэб приложение может состоять из множества компонентов.. Забирать данные из БД можно хоть через сервлет, хоть через простой класс, хоть через jsp  страницу.

3. Еще раз повторюсь нужен драйвер

4. Синтаксис совершенно такой же как и у обычного SQL

Пример приложения с подключением к БД (Oracle) и исполнения запроса:
Код

package ru.primer;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;



/**
 *
 * @author vsedykh
 */
public class NewClass {

    private Connection conn = null;
    private PreparedStatement prSt = null;
    private ResultSet res = null;
    
    void doQuery() {
        try {
            Class.forName("oracle.jdbc.OracleDriver"); //Имя класса для подключения к БД
            String url = "jdbc:oracle:thin:@127.0.0.1:1521:DBDB"; //УРЛ для подключения к БД
            conn = DriverManager.getConnection(url, "login", "pass"); //Получаем коннект
            prSt = conn.prepareStatement("SELECT * FROM TABLE WHERE ID = ?"); //Устанавливаем запрос
            prSt.setString(1, "123"); //Подставляем нужное нам значение вместо занака "?" в запросе
                                                   //Можно обойтись без этого, тогда нужно использовать просто 
                                                   //conn.createStatement()
            res = prSt.executeQuery();//Выполняем запрос и записываем результат в res
                                                      //Ну а дальше с результатами делай что душе угодно
            ...
                    
        } catch (SQLException e) {
            e.printStackTrace();
        }
}


Для твоей задачи тебе нужно будет найти и скачать драйвера к твоей БД для JAVA, импортнуть их в твой проект и научится их использовать, хотя я не думаю, что синтаксис будет сильно различаться.
Удачи!

Автор: Ner-zul 21.4.2008, 15:36


  Огромное спасибо  smile 

 Все понятно, тока хотелось бы еще прояснить следующие моменты:

1.Что значит научится использовать драйвера? Разьве мне они нужны не только для того, чтобы подключится к БД а потом забыть про них?

2.
Class.forName("oracle.jdbc.OracleDriver"); //Имя класса для подключения к БД
Вот так вот вы подключили драйвер? А почему тогда вы поясняете строчку как "имя класса" и где оно тогда используется?


"oracle.jdbc.OracleDriver" - вот это имя драйвера, который после импорта мне подключать, так?


3.String url = "jdbc:oracle:thin:@127.0.0.1:1521:DBDB";

jdbc:oracle:thin - Указываем что работаем с БД на Oracle. У другой субд будет вместо oracle ее название;
DBDB- имя моей БД;
127.0.0.1 - это IP моего компа.(локал хост)
1521 - порт? а как его определять?

Поправьте меня пожалуйста, если я не прав.


4. А мне еще советовали при работе с БД использовать DataSource. Это можно использовать как аналог или как дополнение к вашему примеру?


5. А если у меня не получается найти драйвер для SQLBase, но я с мог создать ODBC-драйвер и подключиться к таблицам данной БД через Access для теста. Могу ли я использовать этот ODBC драйвер для SQLBase чтобы получить доступ из Java? Каким образом?



 Заранее спасибо  smile 


Автор: serger 22.4.2008, 05:40
http://antonsaburov.narod.ru/students/content.html

Прозрачно про java, правда нет webServices, отпадёт много вопросов и идеологию освоите лучше

А то просто устаните задавать вопросы ;)

Автор: LuLok 22.4.2008, 11:20
Могу еще посоветовать книгу Х.М. Дейтел "Технологии программирования на JAVA 2. Книга 1". Там достаточно кратко и очень понятно все описано (сам по ней учился). Книгу можно найти в инете, дабы скачать.

Автор: Ner-zul 22.4.2008, 17:11

 Спасибо , я по-большей части разобрался в вопросе smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)