Я загрузил Postgresql-9.2-1003.jdbc3.jar и поместил его в каталог felix \ bundle.
Моя программа обращается к таблице EMP Postgres и распечатывает ее. Я пытаюсь сделать это на сервере Felix OSGi. Моя программа состоит из двух частей:
Программа части 1, которая просто подключается к драйверу Postgres JDBC и открывает базу данных:
пакет com.myprogram.myemp;
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; import org.postgresql.Driver;
public class ConnectPostgres {
static final String DB_URL = "jdbc:postgresql://localhost:5432/scott"; static final String UNAME = "postgres"; static final String PWORD = "password"; public void myMain() { Connection conn = null; ResultSet rs = null; Statement st = null; String JDBC_DRIVER = Driver.class.getName(); try { Class.forName(JDBC_DRIVER); conn = DriverManager.getConnection(DB_URL, UNAME, PWORD); st = conn.createStatement(); rs = st.executeQuery("select * from EMP"); while (rs.next()) { System.out.println ("EMP Name:" + rs.getLong("EMPNO") + " " + rs.getString("ENAME") ); } } catch (Exception e) { e.printStackTrace(); } finally { try { rs.close(); st.close(); conn.close(); } catch (Exception e) { e.printStackTrace(); } } }
}
Программа Part-2 больше похожа на запуск пакета в качестве поставщика услуг:
пакет com.myprogram.myemp;
import org.osgi.framework.BundleContext; import org.osgi.framework.BundleActivator;
Открытый класс Activator реализует BundleActivator {
@Override public void start(BundleContext arg0) throws Exception { ConnectPostgres app = new ConnectPostgres(); app.myMain(); } @Override public void stop(BundleContext arg0) throws Exception { }
}
Требование: Используя соединение с базой данных популярной базы данных, такой как Postgres или SQLite, я должен иметь возможность опубликовать таблицу EMP как службу на OSGi-совместимом сервере Felix, Equinox.
** Ошибка, которую я получаю в Felix 3.0:
Неудовлетворенные требования:
(& (пакет = org.postgresql)) **
Драйвер есть, я поместил его в каталог пакетов.
Проблема как мне кажется:
Подключения к базе данных с использованием JDBC невозможны в OSGi. Может ли OSGi подключаться к базам данных? Спецификация, вики, примеры, похоже, ничего не говорят. Без этого все примеры выглядят как программы преобразования температуры из градуса Цельсия в градусы Фаренгейта, не представляющие реальной ценности для бизнеса. Пожалуйста, поправьте меня, если я неправильно понимаю OSGi.
Что я делаю не так? Каким другим способом я должен попытаться подключиться к базе данных.
заранее спасибо
bundle
достаточно для установки этого драйвера в инфраструктуру OSGi ?? - person Neil Bartlett   schedule 16.07.2013