Получить Значение Из Java

JohnLemon

Well-known member
20.08.2014
274
2
#1
Подскажите пожалуйста, у меня есть класс в библиотеке (Script Libraries) JLib генерирует случайное значение
Java:
import java.util.Random;
 
public class random {
   public static void main(String[] args) {
	  Random rand = new Random();
	  for (int i = 0; i < 8; ++i)
		 System.out.print((rand.nextInt(9) + 1) + "");
	  }
}
Как это значение записать в SessionScope в xpages, если можно то с примером???
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#2
происходит некоторая путаница...
JS - не имеет (штатно) доступов ко всему спектру либ java http://stackoverflow.com/a/1645177
как и обратно, sessionScope понятие для JS, в java части - кусок движка xPages (он много чего вкючает) оперирует JSF (бинами и прочим)
взаимодействие с java можно осуществлять так http://www-10.lotus.com/ldd/ddwiki.nsf/dx/..._java_xpage.htm
просто непонятно - зачем нужен именно SessionScope

Добавлено: со "штатными" либами http://www-10.lotus.com/ldd/ddwiki.nsf/dx/...047AMWEBJ9A.htm

Добавлено: еще нужно помнить про http://per.lausten.dk/blog/2013/05/how-to-...s-and-java.html
 

JohnLemon

Well-known member
20.08.2014
274
2
#4
Так все сложно неужели я не могу просто вызвать код в Script Libraries и получить от него ответ ??? Вообще мне нужно будет просто создавать документ с этим значением...
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#5
просто вызвать код можно с одного уровня
а код с клиента, вызывающий код сервера - это др. модель взаимодействия
а разные слои сервера - тоже по-разному взаимодействуют
есть JVM, поверх неё rhino (это JS исполняемый в JVM)
результаты привязаны к отдаче страниц с сервера (для случая xPages)

Добавлено: да и ваще - излагайте полную задачу а не ваши взгляды на архитектуру - будет проще подыскать решение

Добавлено:
Так все сложно неужели я не могу просто вызвать код в Script Libraries и получить от него ответ ??? Вообще мне нужно будет просто создавать документ с этим значением...
в java есть классы для домины - никаких проблем с созданием доков по месту и не надо усложнять ;)
 

JohnLemon

Well-known member
20.08.2014
274
2
#6
lmike сказал(а):
излагайте полную задачу а не ваши взгляды на архитектуру - будет проще подыскать решение
Мне необходимо выполнить код, который в первом сообщении темы. И записать результат в документ, я просто не могу понять где его лучше сделать, через агента, через scriptlibrary или через java application, не пойму зачем столько вариантов ), а самое важное что я не могу понять это то как его запустить и проверить работает он вообще или нет ). Я так понимаю что я что то не доделываю а что не могу понять
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#7
java код, напрямую, исполняется только в агентах (еще в аплетах - но это устаревший подход :) ), остальное написано для вариантов - когда нужно что-то ещё
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#8
в дизайнере есть браузер классов для java, в хелпе примеры
 

JohnLemon

Well-known member
20.08.2014
274
2
#9
java код, напрямую, исполняется только в агентах (еще в аплетах - но это устаревший подход :) ), остальное написано для вариантов - когда нужно что-то ещё
Создал такой код в агенте
Java:
import java.util.Vector;
import lotus.domino.*;
 
public class JavaAgent extends AgentBase {
   String type;
   String from;
   String department;
   String costCenter;
   Vector items;
   String processed;
   
   public void write(Document doc) throws NotesException {
	  try {
		 Session session = getSession();
		 AgentContext agentContext = session.getAgentContext();
		 doc.replaceItemValue("From", from);
		 doc.replaceItemValue("Department", department);
		 doc.replaceItemValue("CostCenter", costCenter);
		 doc.replaceItemValue("Items", items);
		 doc.replaceItemValue("Processed", processed);
		 // (Your code goes here)
		 
	  } catch(Exception e) {
		 e.printStackTrace();
	  }
   }
}
Как мне его проверить, запустить ??
Делаю рун, он мне предлагает Апплет или приложение и ни одно ни второе не запускается. Как мне проверить изменяет ли он значения или нет (( ?
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#10
не надо рун из дизигнера - запускайте как обычный агент (жмакнул иконку БД - нашел в Actions меню агент)
вы ниразу агенты не запускали?
и да - у агента д.б. public void NotesMain()
он и запускается (свой write туда и суйте)

Добавлено:
Как мне проверить изменяет ли он значения или нет (( ?
открыть док и проверить
и да... где сохранение дока?

Добавлено: еще момент - нигде не указано как получается док - вы в воздухе что-то обновляете?
честно - не понимаю - в хэлпе куча примеров и объяснений, неужто трудно прочесть?!

Добавлено: прям топик в хэлпе Examples: Running a Java program
там и из внежней jvm и из агентов и из сервлетов... сидя на потолке
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#13

JohnLemon

Well-known member
20.08.2014
274
2
#14
Блин вообще не понимаю вот сделал код агента должен передавать гет запрос
Java:
import java.net.*;
import lotus.domino.*;
 
public class JavaAgent extends AgentBase {
   public void NotesMain() {
	  try {
		 Session session = getSession();
		 AgentContext agentContext = session.getAgentContext();
		 URL url = new URL("http://api.prostor-sms.ru/messages/v2/send/?login=login&password=pass&phone=+7&text=Send sms");
		 url.openConnection();
	  } catch(Exception e) {
		 e.printStackTrace();
	  }
   }
}
Запускаю через толстого клиента, в консоле ошибка :
Exception in thread "AgentThread: JavaAgent" java.lang.Error: Unresolved compilation problem:
Type mismatch: cannot convert from URLConnection to URL
Код:
at JavaAgent.NotesMain(Unknown Source)
at lotus.domino.AgentBase.runNotes(Unknown Source)
at lotus.domino.NotesThread.run(Unknown Source)
Что не так как сделать правильно ???
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 583
269
#15
этот код нормально работает в 9-ой нотусне и в 8.5 тоже (полагаю)
 

savl

Lotus team
28.10.2011
2 135
104
#16
JohnLemon
КМК, при вызове url.openConnection() должен возвращаться объект URLConnection
Может быть я ошибаюсь, но по рефам похоже так.
 

savl

Lotus team
28.10.2011
2 135
104
#19
JohnLemon
Вот если идет стек ошибки в консоль, откуда смс придет?
Ошибка говорит, что не может преобразовать URLConnection в URL
Я написал, что данная ошибка возникает потому что при вызове этого метода возвращается объект URLConnection
Или у вас уже ошибка пропала и все работает, кроме прихода смс?
 

JohnLemon

Well-known member
20.08.2014
274
2
#20
JohnLemon
Вот если идет стек ошибки в консоль, откуда смс придет?
Ошибка говорит, что не может преобразовать URLConnection в URL
Я написал, что данная ошибка возникает потому что при вызове этого метода возвращается объект URLConnection
Или у вас уже ошибка пропала и все работает, кроме прихода смс?
Ошибки нету, код тот же херь какая та, сейчас предупреждение:
The local variable agentContext is never read JavaAgent.java Java.nsf.Java.ja/src
смс не приходит, деньги не списываются )