Invocationtargetexception

Тема в разделе "Lotus - Xpages", создана пользователем allex, 21 июл 2011.

  1. allex

    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>

    то в ответ вообще тишина.
     
  2. Zeka

    Zeka Well-Known Member

    Регистрация:
    1 сен 2009
    Сообщения:
    219
    Симпатии:
    0
    Давай весь stacktrace. Подозреваю JVM не имеет прав на запуск процесов.

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

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

    allex Гость

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

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

    allex Гость

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

    Zeka Well-Known Member

    Регистрация:
    1 сен 2009
    Сообщения:
    219
    Симпатии:
    0
    JAVA код сам по себе выполняться в хПаге на клиенте не может.
    Попробуй посмотреть JNLP.
    Или простой апплет - Java-applet & Xpage


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

    allex Гость

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

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


    Есть предложения ?
     
  7. turumbay

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    1. дайте весь стэктрейс ошибки из первого поста, как просил Zeka...
     
  8. allex

    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
     
  9. Zeka

    Zeka Well-Known Member

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

    Во всяком случаи из апплета вызывать яваскрипт можно - Invoking JavaScript Code From an Applet
    и наоборот - Invoking Applet Methods From JavaScript Code

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

    Регистрация:
    13 мар 2009
    Сообщения:
    625
    Симпатии:
    2
    <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. а вообще я имел в виду стэктрейс от вашего первого поста в ветке
     
  11. allex

    allex Гость

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

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

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

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

    allex Гость

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

Поделиться этой страницей