• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

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

  • Автор темы JohnLemon
  • Дата начала
J

JohnLemon

Подскажите пожалуйста, у меня есть класс в библиотеке (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
7 933
609
BIT
178
происходит некоторая путаница...
JS - не имеет (штатно) доступов ко всему спектру либ java
как и обратно, sessionScope понятие для JS, в java части - кусок движка xPages (он много чего вкючает) оперирует JSF (бинами и прочим)
взаимодействие с java можно осуществлять так
просто непонятно - зачем нужен именно SessionScope

Добавлено: со "штатными" либами

Добавлено: еще нужно помнить про
 
J

JohnLemon

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

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
178
просто вызвать код можно с одного уровня
а код с клиента, вызывающий код сервера - это др. модель взаимодействия
а разные слои сервера - тоже по-разному взаимодействуют
есть JVM, поверх неё rhino (это JS исполняемый в JVM)
результаты привязаны к отдаче страниц с сервера (для случая xPages)

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

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

JohnLemon

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

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
178
java код, напрямую, исполняется только в агентах (еще в аплетах - но это устаревший подход :) ), остальное написано для вариантов - когда нужно что-то ещё
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
178
в дизайнере есть браузер классов для java, в хелпе примеры
 
J

JohnLemon

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
7 933
609
BIT
178
не надо рун из дизигнера - запускайте как обычный агент (жмакнул иконку БД - нашел в Actions меню агент)
вы ниразу агенты не запускали?
и да - у агента д.б. public void NotesMain()
он и запускается (свой write туда и суйте)

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

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

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

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
178
а вот по отладке версия для древнего нотуса (года эдак 97)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 933
609
BIT
178
весь джава код можно отлаживать во внешней ИДЕ
кстати и она может подключаться в дебагу нотусевых агентов (даже на другой ОС)
удаленная отладка

Добавлено: отладка родным дизайнером, начиная с 8.5
 
J

JohnLemon

Блин вообще не понимаю вот сделал код агента должен передавать гет запрос
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
7 933
609
BIT
178
этот код нормально работает в 9-ой нотусне и в 8.5 тоже (полагаю)
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
160
JohnLemon
КМК, при вызове url.openConnection() должен возвращаться объект URLConnection
Может быть я ошибаюсь, но по рефам похоже так.
 

savl

Lotus Team
28.10.2011
2 597
310
BIT
160
JohnLemon
Вот если идет стек ошибки в консоль, откуда смс придет?
Ошибка говорит, что не может преобразовать URLConnection в URL
Я написал, что данная ошибка возникает потому что при вызове этого метода возвращается объект URLConnection
Или у вас уже ошибка пропала и все работает, кроме прихода смс?
 
J

JohnLemon

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

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