Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Апплет и БД, нет связи 
V
    Опции темы
Vassik
Дата 24.8.2006, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 31.1.2006

Репутация: нет
Всего: нет



Привет всем) Знаю вопрос не совсем про апплеты, но задам все же свой вопрос здесь. Написал я апплет, смысол которого то что он читает инфу из базы и отображает её в апплете. Так вот когда я это все писал, чтобы апплет работал я подключал jar файл драйвера в Idea, добавляя его в модули которые компилятся.
После того, как все это дело я захотел вставить в страницу, из консоли оперы я выяснил, что апплет не может найти драйвер, вот трейс:
java.lang.ClassNotFoundException: org.firebirdsql.jdbc.FBDriver
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at NewJFrame.connect(NewJFrame.java:42)
    at NewJFrame.<init>(NewJFrame.java:131)
    at Main.init(Main.java:28)
    at com.opera.PluginPanel.run(PluginPanel.java:420)
    at java.lang.Thread.run(Unknown Source)
я так понял, надо указать файл драйвера из кода, как это сделать???
Вот код главного класса:
Код

public class Main extends Applet {
    public void init(){
        NewJFrame mFram=new NewJFrame();
        java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
        int width = screenSize.width;
        int height = screenSize.height;
        mFram.setLocation(width/2 - mFram.getSize().width/2,height/2- mFram.getSize().height/2);
        mFram.setVisible(true);
    }
  }


Вот часть кода там где происходит подключение:
Код

public class NewJFrame extends javax.swing.JFrame {
    private Vector vctFDO=new Vector();
    private JTabbedPane mTab;
    private String dbUrl;
    private String user;
    private String pas;
    private Connection conn,conn1;
    private Statement stm,stp;
    public Vector vct=new Vector();
    private Properties props=new Properties();
    /** Creates new form NewJFrame */
    public void setVctFDO(DataForOper dfo){
        vctFDO.add(dfo);
    }
    public void connect()
    {
     dbUrl="jdbc:firebirdsql://E:\\MyDB\\ТПРГ\\test.gdb";
     //dbUrl="jdbc:firebirdsql://10.0.243.247:3050/opt/firebird/userdb/test.gdb";   
     user="vassik";
     pas="av091185v";
     props.setProperty("user",user);
     props.setProperty("password",pas);
     props.setProperty("encoding","WIN1251");
        try {
            Class.forName("org.firebirdsql.jdbc.FBDriver");
            try {
                conn=DriverManager.getConnection(dbUrl,props);
                conn1=DriverManager.getConnection(dbUrl,props);
            } catch (SQLException ex) {
                ex.printStackTrace();
            }
        } catch (ClassNotFoundException ex) {
            ex.printStackTrace();
        }    
    }
......................
}

И еще апплет у меня появляется в отдельном окне, как сделать чтобы он встроенный в страницу был? Зарание спасибо
PM MAIL   Вверх
Metal_Heart
Дата 25.8.2006, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а почему бы и нет?
**


Профиль
Группа: Участник
Сообщений: 728
Регистрация: 31.3.2005
Где: Москва

Репутация: нет
Всего: 12



Цитата(Vassik @  24.8.2006,  23:44 Найти цитируемый пост)

И еще апплет у меня появляется в отдельном окне, как сделать чтобы он встроенный в страницу был? 


не использовать JFrame


--------------------
 не стыдно учиться, а стыдно не учиться 
PM ICQ   Вверх
Vassik
Дата 25.8.2006, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 31.1.2006

Репутация: нет
Всего: нет



А как насчет драйвера, как его из кода подключить??? Или надо по другому этот вопрос решать???
PM MAIL   Вверх
LSD
Дата 25.8.2006, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата(Vassik @  25.8.2006,  13:05 Найти цитируемый пост)
А как насчет драйвера, как его из кода подключить??? Или надо по другому этот вопрос решать???

Или положить jar с драйвером на сервер и указать его в параметре archive тега applet. Или упаковать все необходимые классы в один jar.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Vassik
Дата 25.8.2006, 12:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 31.1.2006

Репутация: нет
Всего: нет



Цитата(LSD @ 25.8.2006,  12:24)
Или положить jar с драйвером на сервер и указать его в параметре archive тега applet. Или упаковать все необходимые классы в один jar.

А в коде класса там где подключение идет, никакого пути к драйверу прописывать не надо? Просто сейчас на работе попробывать не могу 
PM MAIL   Вверх
LSD
Дата 25.8.2006, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата(Vassik @  25.8.2006,  13:37 Найти цитируемый пост)
А в коде класса там где подключение идет, никакого пути к драйверу прописывать не надо?

Нет. Это уже забота ClassLoader-а найти нужный класс.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Skipy
Дата 25.8.2006, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 487
Регистрация: 24.8.2006
Где: Москва, Россия

Репутация: нет
Всего: 16



Цитата(LSD @ 25.8.2006,  12:24)
Или положить jar с драйвером на сервер и указать его в параметре archive тега applet. Или упаковать все необходимые классы в один jar.

... и с ба-а-альшой долей вероятности получить SecurityException при попытке соединения с произвольным хостом. А если даже и нет - страшно подумать, какой будет скорость работы с базой при связи через WAN.

2 Vassik: Это организуется не так. На сервере, с которого пришел апплет, сидит приложение, например, сервлет, которое умеет выбирать из базы нужную информацию. Апплет шлет запрос, приложение выбирает данные и возвращает в виде, готовом к использованию. Таким образом увеличивается скорость (связь с базой через LАN в худшем случае, в лучшем - на одном сервере, но это редко когда делается из-за проблем с производительностью), уменьшается объем данных, передаваемых через инет (апплету не нужно драйвер базы с собой тащить, да и уже готовые данные часто занимают меньше, чем результаты запроса из базы), ну и нет проблем с безопасностью.


--------------------
С уважением,
Евгений aka Skipy
www.skipy.ru
PM MAIL WWW ICQ   Вверх
LSD
Дата 25.8.2006, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата(Skipy @  25.8.2006,  13:42 Найти цитируемый пост)
... и с ба-а-альшой долей вероятности получить SecurityException при попытке соединения с произвольным хостом.

А почему база должна быть на произвольном хосте? smile


Цитата(Skipy @  25.8.2006,  13:42 Найти цитируемый пост)
Это организуется не так. На сервере, с которого пришел апплет, сидит приложение, например, сервлет, которое умеет выбирать из базы нужную информацию. Апплет шлет запрос, приложение выбирает данные и возвращает в виде, готовом к использованию. Таким образом увеличивается скорость (связь с базой через LАN в худшем случае, в лучшем - на одном сервере, но это редко когда делается из-за проблем с производительностью), уменьшается объем данных, передаваемых через инет (апплету не нужно драйвер базы с собой тащить, да и уже готовые данные часто занимают меньше, чем результаты запроса из базы), ну и нет проблем с безопасностью.

Тоже вариант, но более сложный. Плюс встанет проблема с тем в каком виде отдавать данные от сервлета. XML надо парсить, да и места он занимает прилично. Сериализация объектов лучше, но надо следить за актуальностью клиентов. SQL позволяет эффективно выбирать данные из базы.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Vassik
Дата 25.8.2006, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 57
Регистрация: 31.1.2006

Репутация: нет
Всего: нет



Спасибо всем за советы буду разбираться)

2 LSD: Сериализация объектов, а что ты имел ввиду под этим понятием, что конкретно?
PM MAIL   Вверх
LSD
Дата 25.8.2006, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата(Vassik @  25.8.2006,  18:07 Найти цитируемый пост)
Сериализация объектов, а что ты имел ввиду под этим понятием, что конкретно?

Сериализация это процесс сохранения данных объекта в бинарную форму (это может быть файл, сокет или еще что). И восстановления объекта из бинарной формы (десериализация). Поищи по форуму, тема уже неоднократно обсуждалась и примеры тоже есть.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
skhilkov
Дата 26.8.2006, 10:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 371
Регистрация: 11.4.2006
Где: TOMSK

Репутация: 1
Всего: 7



По-моему, я уже где-то здесь видел тему об апплете и его взаимодействии с БД, так вот, там было написано что коннектиться к базе с апплета - не лучший вариант. Одна из причин - это то, что логин и пароль к БД хранятся в апплете. Таким образом его можно декомпилировать и достать эти данные. А есть ли способ как-то это обойти? 


--------------------
Кто понял жизнь, тот не спешит. 
PM MAIL   Вверх
LSD
Дата 26.8.2006, 11:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



В любом случае пользователя надо как-то аутентифицировать. Можно использовать имя и логин пользователя для коннекта к базе и в апплете вообще ничего не хранить.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
skhilkov
Дата 26.8.2006, 12:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 371
Регистрация: 11.4.2006
Где: TOMSK

Репутация: 1
Всего: 7



Ну да, логично, что-то я протупил.... однако, ведь может быть ситуация когда апплет работает с базой, но открыт на доступ для всех(то есть в этом случае аутентификация не нужна) - как тогда? 


--------------------
Кто понял жизнь, тот не спешит. 
PM MAIL   Вверх
LSD
Дата 26.8.2006, 12:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Тогда гостевой пароль в базу, с правами только на чтение и только тех данных который можно читать гостю. Если надо можно использовать процедуры и вьюхи.
Т.е. апплет должен только представлять пользователю данные в удобном виде. А безопасность БД должен обеспечивать сервер СУБД.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
COVD2
Дата 27.8.2006, 17:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 28
Регистрация: 10.6.2006

Репутация: нет
Всего: 1



"А безопасность БД должен обеспечивать сервер СУБД." 

- безопасность ДБ может обеспечить специалист по СУБД, если он есть в компании smile.  А если его нет, то наверное проще cделать все же трехуровневую систему, чтобы сервер СУБД просто не был доступен из интернета напрямую. 

Опять же, если апплет за файерволом, то прямое сокетное соединение с базой данных вряд ли будет возможно. Только сервлеты помогут. Еще один аргумент за три уровня.

 



Это сообщение отредактировал(а) COVD2 - 27.8.2006, 17:45
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Апплеты | Следующая тема »


 




[ Время генерации скрипта: 0.0568 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.