Ошибка подключения к базе

  • Автор темы Dymytry
  • Дата начала
D

Dymytry

#1
А кто-нибудь может помнит как решать проблему "database has not been opened yet"? Под джаву. Я пробовал уже три варианта:

1)
Код:
Database db = session.getDatabase(serverName, dbName);
- выдает
NotesException: Database ... has not been opened yet
2) добавить
Код:
db.open();
- выдает
HTTP JVM: NotesException: Database open failed (%1)
3) через DbDirectory
Код:
dbd.openDatabase(dbName);
- выдает
HTTP JVM: NotesException: Database open failed (%1)
Уже и не знаю что делать...
 
D

Dymytry

#3
а эта база есть на сервере?
шоб не гадать путя, можно так http://codeby.net/forum/threads/32359.html?vi...st&p=151231
Проблема в том, что на чужом сервере оно не открывает никакие базы вообще. Даже names.nsf. На своем - открывает. Агент - веб, запускается через HTTP запрос.
 
D

Dymytry

#4
Solved!

Solution: server document -> security tab -> trusted servers field в самом низу.
 
A

ankass

#5
Из агента, расположенного в одной БД необходимо считать данные из другой БД.
В результате выдается ошибка.
Агент подписан менеджером базы, который имеет доступ менеджера к БД источнику.
Подскажите пожалуйста чего еще не хватает?

Код:
import lotus.domino.*;

public class JavaAgent extends AgentBase {
public void NotesMain() {
try {
Session session = getSession();

System.out.println("Агент стартовал");
Database db=session.getDatabase("KasServer\\KasOrg", "WebSrv\\SourceDoc.nsf");
System.out.println(db.getFileName());

DocumentCollection dc = db.getAllDocuments();

} catch(Exception e) {
e.printStackTrace();
}
}
}
Агент стартовал
SourceDoc.nsf
NotesException: Database KasServer\KasOrg!!WebSrv\SourceDoc.nsf has not been opened yet
at lotus.domino.local.NotesBase.PropGetAdt(Native Method)
at lotus.domino.local.Database.getAllDocuments(Unknown Source)
at JavaAgent.NotesMain(JavaAgent.java:12)
at lotus.domino.AgentBase.runNotes(Unknown Source)
at lotus.domino.NotesThread.run(Unknown Source)
 

nvyush

Lotus team
22.04.2009
2 317
0
#6
Агент запускается из клиента или на сервере? Если из клиента, то у запускающего пользователя может не хватать прав. Можно для контроля в агента добавить строчку
PHP:
System.out.println(session.getAgentContext().getEffectiveUserName());
 
A

ankass

#7
или так:
Код:
import lotus.domino.*;

public class JavaAgent extends AgentBase {
public void NotesMain() {
try {
Session session = getSession();

System.out.println("Агент стартовал");
Database db=session.getDatabase("KasServer\\KasOrg", "WebSrv\\SourceDoc.nsf");
System.out.println(db.getFileName());
db.open();

DocumentCollection dc = db.getAllDocuments();

} catch(Exception e) {
e.printStackTrace();
}
}
}
Агент стартовал
SourceDoc.nsf
NotesException: Database open failed (%1)
at lotus.domino.local.Database.Nopen(Native Method)
at lotus.domino.local.Database.open(Unknown Source)
at JavaAgent.NotesMain(JavaAgent.java:11)
at lotus.domino.AgentBase.runNotes(Unknown Source)
 
A

ankass

#8
Агент запускается из клиента или на сервере? Если из клиента, то у запускающего пользователя может не хватать прав. Можно для контроля в агента добавить строчку
PHP:
System.out.println(session.getAgentContext().getEffectiveUserName());
Добавил, выдает имя соответствующего пользователя.

Агент стартовал
CN=XXXXXX/O=YYY
SourceDoc.nsf
NotesException: Database open failed (%1)
at lotus.domino.local.Database.Nopen(Native Method)
at lotus.domino.local.Database.open(Unknown Source)
at JavaAgent.NotesMain(JavaAgent.java:13)
at lotus.domino.AgentBase.runNotes(Unknown Source)
at lotus.domino.NotesThread.run(Unknown Source)
 

lmike

нет, пердело совершенство
Премиум
27.08.2008
6 567
263
#11
Из-за слэша в имени сервера не работало ))
боритесь со своими виндовыми привычками, "весь" мир живет в прямых слэшах :)
на возможный "опус" про множество винды возражу (т.е. по-факту - просто "ссут в уши" шобы бабло пилитть удобней было)