Invocationtargetexception

  • Автор темы allex
  • Дата начала
A

allex

Есть некоторый код

<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">java</div></div><div class="sp-body"><div class="sp-content">package com.zz;
import java.io.*;
public class create_zz {
public create_zz() {


***********************

ProcessBuilder procBuilder = new ProcessBuilder(f_prog, file_project);

try {process = procBuilder.start();

} catch (IOException e) {
e.printStackTrace();
}

process.waitFor();

***********************

}
}

Его вызываем на странице

<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">xpage</div></div><div class="sp-body"><div class="sp-content"><xp:this.afterPageLoad><![CDATA[#{java script:importPackage(com.zz);
var zz = new create_zz();}]]></xp:this.afterPageLoad>

В браузере кажет ошибку

java 'com.zz.create_zz()' (java.lang.reflect.InvocationTargetException).


Что не так ?


Если код перенести на кнопку (выполняя на клиенте)

<xp:button value="Label" id="button1">
<xp:eventHandler event="onclick" submit="false">
<xp:this.script><![CDATA[importPackage (com.zz);
var r = new create_zz();]]></xp:this.script>
</xp:eventHandler></xp:button>

то в ответ вообще тишина.
 
Z

Zeka

Давай весь stacktrace. Подозреваю JVM не имеет прав на запуск процесов.

Кнопка не работает потому, что код выполняется на клиенте, а не на сервере.

ПС: Классы принято называть с большой буквы. Из-за маленькой буквы иногда бывают большие проблемы.
 
A

allex

Блин ... а процес треба запустить на клиенте.

После его завершения выполнить манипуляции а NotesDocument
 
A

allex

ЖВМ имеет на это право, т.к. код отрабатывает в НетБинсе
 
Z

Zeka

JAVA код сам по себе выполняться в хПаге на клиенте не может.
Попробуй посмотреть .
Или простой апплет - Java-applet & Xpage


ЖВМ имеет на это право, т.к. код отрабатывает в НетБинсе
JVM НетБинс'а имеет право. А JVM доминошного сервера - нет. Что б получить права на запуск, надо java.policy поправить.
 
A

allex

Zeka
Если мы
- сначала авторизуемся на сервере
- открывается хпага/хтмл страница
- на ней будет большая кнопка "Нажми меня"
- запускается JNLP (шаманим....шаманим)
- все это колдовство затолкать в Notes документ.

И вот тут самое интересное
- через DIIOP не получается иниицировать сессию (не может открыть сессию)
- или запустить агент, но как забрать все то что наколдовано в JNLP


Есть предложения ?
 
A

allex

Вроде бы простой конект на яве

<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">Ява конект Diiop</div></div><div class="sp-body"><div class="sp-content">import lotus.domino.NotesException;
import lotus.domino.NotesFactory;
import lotus.domino.Session;

public class runn {

public static void main(String[] args) throws NotesException {

Session s = NotesFactory.createSession("host:60148", "user/org", "pwd");

}
}

А пишет вот

Exception in thread "main" NotesException: Could not open Notes session
at lotus.domino.cso.Session.initSession(Unknown Source)
at lotus.domino.cso.Session.<init>(Unknown Source)
at lotus.domino.cso.Session.createSession(Unknown Source)
at lotus.domino.NotesFactory.createSessionUP(Unknown Source)
at lotus.domino.NotesFactory.createSession(Unknown Source)
at runn.main(runn.java:11)
Caused by: java.lang.NumberFormatException: For input string: "//host"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:449)
at java.lang.Integer.parseInt(Integer.java:499)
at lotus.priv.CORBA.iiop.ConnectionTable.getPort(Unknown Source)
at lotus.priv.CORBA.iiop.ConnectionTable.get(Unknown Source)
at lotus.priv.CORBA.iiop.Generic.getConnection(Unknown Source)
at lotus.priv.CORBA.iiop.Generic.locate(Unknown Source)
at lotus.priv.CORBA.iiop.RepImpl.invokePreamble(Unknown Source)
at lotus.priv.CORBA.iiop.RepImpl.invoke(Unknown Source)
at lotus.priv.CORBA.portable.ObjectImpl._invoke(Unknown Source)
at lotus.domino.corba._IObjectServerStub.createSession(Unknown Source)
... 6 more
Java Result: 1

Консоль сервера пишет
22.07.2011 14:15:56 DIIOP Server: Мой комп connected
22.07.2011 14:15:56 DIIOP Server: Мой комп disconnected
22.07.2011 14:15:56 Closed TCP/IP connection from Мой комп,52156 to Сервер,60148
 
Z

Zeka

Zeka
Если мы
- сначала авторизуемся на сервере
- открывается хпага/хтмл страница
- на ней будет большая кнопка "Нажми меня"
- запускается JNLP (шаманим....шаманим)
- все это колдовство затолкать в Notes документ.

И вот тут самое интересное
- через DIIOP не получается иниицировать сессию (не может открыть сессию)
- или запустить агент, но как забрать все то что наколдовано в JNLP


Есть предложения ?
А из JNLP нельзя вызвать JavaScript'ую функцию на хПаге? Сам уже не помню. Давно смотрел этот JNLP.
Если можно, то тогда имея из JNLP возвращённые значения, вписать их яваскриптом в какие-то поля хПаге или ещё как-то обработать.

Во всяком случаи из апплета вызывать яваскрипт можно -
и наоборот -

ПС: DIIOP никогда не использовал, поэтому ничего сказать не могу.
 
T

turumbay

Session s = NotesFactory.createSession("host:60148", "user/org", "pwd");

Caused by: java.lang.NumberFormatException: For input string: "//host"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:449)
at java.lang.Integer.parseInt(Integer.java:499)
at lotus.priv.CORBA.iiop.ConnectionTable.getPort(Unknown Source)
... 6 more

<div class="sp-wrap"><div class="sp-head-wrap"><div class="sp-head folded clickable">" lotus.priv.CORBA.iiop.ConnectionTable.getPort"</div></div><div class="sp-body"><div class="sp-content">public static int getPort(String s)
{
int i = s.indexOf(":");
int j = s.indexOf(":", i + 1);
if(j == -1)
{
return Integer.parseInt(s.substring(i + 1));
} else
{
return Integer.parseInt(s.substring(i + 1, j));
}
}
очень смущают два слэша в "//host". Что вы указываете в адресе сервера?
я бы попробовал для начала использовать ip адрес вместо dns имени...
настройка DIIOP и подключение к нему неплохо описаны
P.S. а вообще я имел в виду стэктрейс от вашего первого поста в ветке
 
A

allex

Если на хПаге делать то код запуска процесса вызывается на стороне сервера, что не совсем то, что нужно.
DIIOP настроен (в имени хоста не нужно указывать протокол)

Вопрос в догонку...

на сколько небезопастно хранить пароль в конекте

Session s = NotesFactory.createSession("host:60148", "user/org", "pwd");
 
A

allex

Конект работает и документы создаются... использовал JNLP
 
Мы в соцсетях:

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