Xpages+postgresql

JohnLemon

Well-known member
20.08.2014
274
2
#1
Здравствуйте, сразу не пинайте, необходимо реализовать связку xpages+PostgreSQL, все данные необходимо хранить в БД PostgreSQL. Подскажите с помощью каких компонентов это можно сделать. Самые главные вопросы это как добавлять данные и как отображать ? ). Желание заказчика... переубедить бесполезно )
 

JohnLemon

Well-known member
20.08.2014
274
2
#3
Скачал бд как на
Для просмотра контента необходимо: Войти или зарегистрироваться
. Поставил ExtLib, но не могу понять. Что написать вместо
Код:
<jdbc>
<driver>org.apache.derby.jdbc.EmbeddedDriver</driver>
<url>jdbc:derby:${rcp.data}\derby\XPagesJDBC;create=true</url>
<user>phil</user>
<password>phil</password>
</jdbc>
И как закинуть, и куда, драйвер PostgreSQL на сервер.
 

JohnLemon

Well-known member
20.08.2014
274
2
#5
В роде разобрался, все не так сложно было, а может кто подсказать как залить файл в бд теперь ? )
 

savl

Lotus team
28.10.2011
2 131
102
#7
@JohnLemon, через LEI можно
Для просмотра контента необходимо: Войти или зарегистрироваться

[DOUBLEPOST=1432731253,1432731078][/DOUBLEPOST]@JohnLemon, c другой стороны зачем?
чтобы базу раздуло?
Проще, а может и правильнее:
файлы сохранить в серетвую шару
в psql передать путь к файлу
при обращении к записи - открывать файл с шары
 

JohnLemon

Well-known member
20.08.2014
274
2
#8
@JohnLemon, c другой стороны зачем?
чтобы базу раздуло?
Просто желание заказчика, переубеждать по ходу бесполезно...

Проще, а может и правильнее:
файлы сохранить в серетвую шару
Есть пример как это сделать на xpages без агента только, на ssjs?


@JohnLemon, через LEI можно
Для просмотра контента необходимо: Войти или зарегистрироваться
Интересный вариант, а это реально реализовать через jdbs компоненты в xpages ? или с помощью ExtLib?
 

savl

Lotus team
28.10.2011
2 131
102
#9
Есть пример как это сделать на xpages без агента только, на ssjs?
а почему без агента? В чем проблема с агентом?
из xpage можно же вызывать агентов...

это реально реализовать через jdbs компоненты в xpages ? или с помощью ExtLib?
не могу сказать, LEI использует Notes C API, что наводит на мысль что стандартными методами нельзя...

Есть пример как это сделать на xpages без агента только, на ssjs?
Вот тут делается загрузка, но в документ:
Для просмотра контента необходимо: Войти или зарегистрироваться

По логике надо заменить документ на сетевой путь, вот и всё.
 

JohnLemon

Well-known member
20.08.2014
274
2
#10
Но все таки как можно записать файл в базу PostgreSQL?
Делаю так, что то нито )
Код:
var stream:NotesStream = session.createStream();
var pathname:string = "c:\\test.txt";
if (stream.open(pathname, "binary")) {
@JdbcExecuteQuery("derby1", "INSERT INTO test_goverment(who, files) VALUES ('anonim files', '"+stream.read()+"')");
stream.close();
} else _dump("Can't open c:\\notes\\data\\temp.gif");
Хочу записать в тип bytea.
 

alexas1

Lotus team
10.04.2014
723
144
#11
Но все таки как можно записать файл в базу PostgreSQL?
Думаю, рецептов тебе не найти - не делают так: гемор и по скорости и по потреблению памяти.
Хоть теоретически PostgreSQL и предоставляет возможность хранения в БД файлов - непосредственно в bytea полях или через large objects. Кста, там ограничение 1Гб, если не изменяет склероз.
В Post... хранят ссылки на файлы в файловой системе.

А конечную архитектуру аппликухи, всё ж, определяет прогер, а не заказчик ;)
А то придётся соглашаться, за бабки "забивать гвозди в асфальт"...
Меж строк, по твоим вопросам, предполагаю автоматизацию чего то медицинского. Я прав?
Если так, то построение её на реляционке - верёвки. Не стоит наступать на грабли в сотый раз...
И ещё, чем передавать большие файлы?? HTTP - жёсткий лимит, я бы на FTP смотрел.
К тому же, если "медицина", рано или поздно встанет вопрос о передаче\хранении DICOM файлов, а это могут быть и несколько гигов...
 

JohnLemon

Well-known member
20.08.2014
274
2
#12

alexas1

Lotus team
10.04.2014
723
144
#13
Будут только документы, небольшие я думаю.
Мед. доки - туева хуча разномастной инфы и дикое кол-во объёмных справочников и регламентов. И картинки с пэдээфами и дикомами.
Я ж говорю "рано или поздно..." Такшта моё ИМХО - только NoSQL.
А медики очень тяжёлые заказчики - их "логика" осмыслению не поддаётся:(
И общую картину катастрофы они озвучить не в состоянии - прогеру её надо просто знать самому и изучать тему.
 

JohnLemon

Well-known member
20.08.2014
274
2
#15
Это я так понимаю на Java?
т.е. без штатных @JdbcExecuteQuery
как раз хотелось бы штатными средствами..
А может еще кто подсказать почему при выполнении @JdbcExecuteQuery, возникает ошибка что не может получить ответ от сервера, а запрос выполняется!
 
15.12.2015
21
0
#20
Если актуально то отвечаю. На мой взгляд правильней всего использовать Hibernate + настройка пула соединений с помощью c3p0
Набор необходимых jar файлов
antlr-2.7.7
c3p0-0.9.2.1
commons-logging-1.3.3
dom4j-1.6.1
hibernate-c3p0-4.2.6.Final
hibernate-commons-annotations-4.0.2.Final
hibernate-core-4.2.6.Final
hibernate-jpa-2.0-api-1.0.1.Final
javassit-3.15.0-GA
jboss-logging-3.1.0.GA
jboss-transaction-api_1.1_spec-1.0.1.Final
mchange-commons-java-0.2.3.4
spring-1.2-rc1
postgresql-9.3-1102.jdbc41

postgres.cfg.xml ------------------------------------
XML:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "[URL]http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd[/URL]">
<hibernate-configuration>
<session-factory>
<property name="hibernate.dialect">org.hibernate.dialect.PostgreSQLDialect</property>
<property name="hibernate.connection.driver_class">org.postgresql.Driver</property>
<property name="hibernate.connection.url">jdbc:postgresql://localhost:5432/postrgesql</property>
<property name="hibernate.connection.username">postgres</property>
<property name="hibernate.connection.password">2128506</property>
<property name="hibernate.default_schema">public</property>
<property name="hibernate.show_sql">false</property>
<property name="hibernate.cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<property name="hibernate.jdbc.batch_size">0</property>
<property name="hibernate.c3p0.acquire_increment">3</property>
<property name="hibernate.c3p0.idle_test_period">300</property>
<property name="hibernate.c3p0.min_size">5</property>
<property name="hibernate.c3p0.max_size">30</property>
<property name="hibernate.c3p0.timeout">1800</property>
<property name="hibernate.c3p0.max_statements">0</property>
</session-factory>
</hibernate-configuration>
создаем сессию вот так примерно ------------------------------------
Java:
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry;
import org.hibernate.service.ServiceRegistryBuilder;
public class HibernateUtilitiesForPostgres {
private static SessionFactory sessionFactory;
private static ServiceRegistry serviceRegistry;
static {
try {
Configuration configuration = new Configuration().configure("postgres.cfg.xml");
serviceRegistry = new ServiceRegistryBuilder().
applySettings(configuration.getProperties()).buildServiceRegistry();
sessionFactory = configuration.buildSessionFactory(serviceRegistry);
} catch (Throwable ex) {
System.err.println("Initial SessionFactory creation failed." + ex);
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
}
 
Последнее редактирование модератором: