Подключение к Lotus из внешнего приложения

  • Автор темы StarikStarik2705
  • Дата начала
S

StarikStarik2705

Здраствуйте. Поступила задача найти способ из, к примеру Itellij IDEA, на JAVA подключиться к лотусиной БД и посмотреть что там. Документы посчитать, посмотреть внутри нужного документа что и так далее. Мои безплодные поиски привели меня на китайский сайт :

в котором не двусмыслено говориться о том что приконектиться можно. но ты дорогой скачай сначала:
JdbcDomino.dll, JdbcDriver.dlland JdbcRniDomino.dll.
You can download the Domino driver for JDBC from the Lotus developer Web

site at:


перехожу на указаный сайт ....на этом стенка. В общем кто то работал вообще с подобным заданием? есть у кого то хоть нужные классы, библиотеки? Все дороги указывают на JDBC но самих классов jar не скачать нельзя ни их вообще не видно
 

savl

Lotus Team
28.10.2011
2 625
314
BIT
545
Чтобы подконектиться на Java (из приложения) к лотусу, надо писать приложение с использованием Corba и лотусовые java классы.
Они описаны в Help дизайнера:

Java/CORBA Classes
The documentation for the Java classes consists of guidelines and an A-to-Z reference. The Java classes are accessible through CORBA by making remote (IIOP) calls. Restrictions and differences are noted in the documentation.

Особое внимание стоит будет уделять методам, свойствам с припиской: Not support in COM
Для работы такой связи необходимо ставить на машину клиента (хотя тут я не уверен до конца, возможно обходится.)

Примеры:

 

savl

Lotus Team
28.10.2011
2 625
314
BIT
545
и еще, может быть имеется в виду это:

нужен Ibm ID
 
K

Kee_Keekkenen

ээ.. зачем так сложно jdbc ?!

все же просто делается..
подымаете на сервере http и diiop

в проекте подключаете лотусовое апи (в общем случае NCSO.jar, Notes.jar, websvc.jar что-то из перечисленного может быть лишнее)..

ну, и далее создаете сессию, указав имя сервера (имя/днс имя/айпишник в зависимости от того, как он видится/доступен на той машине с которой код запускается), имя лузера и пароль лузера (авторизация как по id)

Код:
Session session = NotesFactory.createSession(serverName, userName, userPassword);

а дальше делаете что бог на душу положил
 
S

StarikStarik2705

Kee_Keekkenen

настрочил я вот такую штуку:
<!--shcode--><pre><code class='Java'>String serverName = "mercury/g2";
String userName = "Alexander/g2";
String userPassword = "12345678";
Session session = NotesFactory.createSession(serverName, userName, userPassword);[/CODE]
и вывалило <div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Exception in thread "main" NotesException: Could not get IOR from Domino Server</div></div><div class="sp-body"><div class="sp-content">
Exception in thread "main" NotesException: Could not get IOR from Domino Server:
at lotus.domino.NotesFactory.requestIORPlain(Unknown Source)
at lotus.domino.NotesFactory.requestIORUsingArgs(Unknown Source)
at lotus.domino.NotesFactory.getIOR(Unknown Source)
at lotus.domino.NotesFactory.createSessionUP(Unknown Source)
at lotus.domino.NotesFactory.createSession(Unknown Source)
at MyClass.main(MyClass.java:9)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.jav
a:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:120)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:529)
at java.net.Socket.connect(Socket.java:478)
at sun.net.NetworkClient.doConnect(NetworkClient.java:163)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:394)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:529)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:233)
at sun.net.www.http.HttpClient.New(HttpClient.java:306)
at sun.net.www.http.HttpClient.New(HttpClient.java:323)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.j
ava:970)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:
911)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:836)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.jav
a:1172)
... 11 more
я понимаю что совсем не прав в чём то...но а как мне к серверу подключиться? имя локейшена и айди пароль верный, имя сервера так указал как в адрессной книге написано

в Intellij IDEA написал код
 
H

hosm

Ошибка "Could not get IOR from Domino Server: и java.net.ConnectException: Connection refused
Задачи поднимал на сервере? Возможно, хостнейм надо указать, возможно, нет доступа, блокируется фаерволом, например.
Посмотри детальней Troubleshooting , как вариант:
This error messaging indicates one of the following:
Server is not running.
HTTP task is not running and code gets IOR over HTTP port.
DIIOP task is not running and code gets IOR over DIIOP port.
IP port is specified, but not correctly.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
473
на серваке д.б. сконфигурен док сайта для IIOP
таска запущена load diiop
сморим шо кажить:
te diiop show config

<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">код</div></div><div class="sp-body"><div class="sp-content"><!--shcode--><pre><code class='java'>package org.ldn.authority;

import lotus.domino.NotesFactory;
import lotus.domino.Session;

/**
* @author mike
*
*/
public class IIOPSession implements Runnable {

/**
*
*/
String host = null, user = "", pwd = "";

public IIOPSession(String argv[]) {
// TODO Автоматически созданная заглушка конструктора
host = argv[0];
if (argv.length >= 2)
user = argv[1];
if (argv.length >= 3)
pwd = argv[2];
}

/**
* @param argv
*/
public static void main(String[] argv) {
// TODO Автоматически созданная заглушка метода
if (argv.length < 1) {
System.out.println("Need to supply Domino server name");
return;
}
//Class.forName("TrustedCerts");
IIOPSession t = new IIOPSession(argv);
Thread nt = new Thread((Runnable) t);
nt.start();
}

public void run() {
// TODO Автоматически созданная заглушка метода
try {
//String args[] = new String[3];
//args[1] = "-ORBDebug";
//args[2] = "-ORBCommTrace";
String args[] = new String[1];
args[0] = "-ORBEnableSSLSecurity";
//Session s = NotesFactory.createSession(host, args, user, pwd);
Session s = NotesFactory.createSession(host, user, pwd);

String p = s.getPlatform();
System.out.println("Platform = " + p);
} catch (Exception e) {
e.printStackTrace();
}
}

}[/CODE]
параметры запуска - имя сервера и имя юзера, можно пущать от анонимуса (если разрешено в конфиге)
 
K

Kee_Keekkenen

что касается ИОРа, то попробуй
1. открыть ссылку в браузере на пк, где исполняется код..
2. если ошибка, то попробуй имя сервера заменить на айпишник
3. если опять ошибка, то посмотри какой порт http у тебя в настройках сервера, возможно он не 80, то его нужно добавить через двоеточие после имени/айпишника сервера( типа или )
3.1. или на сервере какая-нибудь хрень стоит, которая занимает порт 80, поэтому настрой свой порт и его используй (так надежнее)
4. если не заработает, то ковыряй файрвол

если файлик открывается, то также пропиши порт
String serverName = "mercury/g2:8080"; //"айпишник:8080"
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!