4

外部JavaアプリケーションからLotusDBに接続しようとしています。コードはテスト(ローカル)サーバーにあるデータベースに対しては完全に機能しますが、本番DBに対して実行すると失敗します(データは返されません)。

Diiopは本番サーバーで実行されており、本番DBのエディターアクセス権があります。

Javaコードを使用してDominoサーバーとのセッションを作成することはできますが、LotusDBを開くことができません。

Session session = NotesFactory.createSession("<Server>","UserID","password"); 
System.out.println("connected");
Database db = session.getDatabase("Server","<DB Path>" );
System.out.println("Access level: "+ db.getCurrentAccessLevel());
View vw = db.getView("Viewname");

Dominoサーバーとのセッションを作成した後、データベースを開こうとすると、エラーが発生しますXXX.nsf has not been opened yet

私もIsOpenopenメソッドを利用してみましたが、運がありませんでした。

4

5 に答える 5

2

diiopが機能するには、サーバーでHTTPクライアントがデータベースを参照できるようにする設定が有効になっている必要があります。この設定はにありServer document->Internet Protocols->HTTP->R5 Basicsます。注目すべきことに、この設定は最新のDominoサーバーインスタンスでも有効です。私の推測では、この設定の現在の値(「no」に設定)が問題の原因であると思います。

また、diiopが正しく構成されていることを確認する必要があります。このための最初のテストは、http://hostname.domain.com/diiop_ior.txtにアクセスすることです。このURLにアクセスすると、32個の(一見)ランダムな文字を含む単純なテキスト文字列を含むページが表示されます。

diiopを機能させる必要がある場合は、通常、このページを参照します。

于 2012-04-23T08:46:11.763 に答える
2

ACLがインターネットアクセスを禁止している場合(つまり、httpタスク)、データベースはJavaコードで開きません。ACLの詳細タブのプロパティ「最大インターネット名とパスワード」を確認してください。それを開くには少なくともDepositorであるか、そこからデータを読み取るにはReaderである必要があります。

于 2012-04-20T09:43:33.690 に答える
1

まず、コード内の名前/パスワードを使用して、ブラウザからデータベースにアクセスしてみてください。それが機能しない場合は、HTTPが実行されていないか、コードとは別の問題があります。

このような問題があるので、Infocenterのサンプルコードから始めます。

http://publib.boulder.ibm.com/infocenter/domhelp/v8r0/topic/com.ibm.designer.domino.main.doc/H_EXAMPLES_GETDATABASE_METHOD_JAVA.html

例えば。

Database db = session.getDatabase("<SERVER>", "<DBNAME>");

if (!db.isOpen())

    System.out.println("DB does not exist.");

  else

    System.out.println("Title of database: \"" + db.getTitle()+ "\"") ;

それが何かを印刷するかどうかを確認してください。

エラーメッセージは通常、データベースがサーバーによってロックされているか、破損していることを意味します。したがって、アクセス権が必要であることがわかっている別のデータベース(names.nsfなど)を試してください。

于 2012-04-20T08:21:39.387 に答える
1

好奇心から、印刷は何をしますか:

session.getUserName();

..ショーの直前getCurrentAccessLevel()?あいまいなユーザー名があり、予期しない人物として認証されてしまうことはありませんか?

于 2012-04-20T10:15:32.747 に答える
0

同じエラーが発生しました

Database xxx.nsf has not been opened yet

私の問題は、バックスラッシュの代わりにフロントスラッシュを使用したことが原因でした。これはそれを修正しました:

var db = session.getDatabase(session.getServerName(), "path/dbname.nsf");

上記の質問のどこにも db パスが示されていないことに気付きました。そのため、おそらく間違ったスラッシュが使用されています。

イライラする部分は、「ファイルが見つかりません」というエラーメッセージを返す代わりに、実際には見つからないときに NotesException メッセージが表示pathdbname.nsf has not been opened yetされることです...

于 2015-02-25T23:09:18.677 に答える