Получить ресурсы агента/библиотеки

Mady

Well-Known Member
16.09.2006
65
0
32
#1
Вопрос где на сервере находятся ресурсы?, которые были прикреплены в java агенте Lotus Domino 8.5.2
Lotus domnino designer 8.5.2
 

Mady

Well-Known Member
16.09.2006
65
0
32
#3
я прикручиваю конфиг файл хочу считать его. причем когда я обращаюсь локально те агент запускается НЕ на сервере все нормально работает, иначе говорит что не могу найти файл. как к нему достучаться.....
 

Mady

Well-Known Member
16.09.2006
65
0
32
#5
В Java Агенте есть возможность
меню Import -> Resource. там выбираю xml файл потом когда запускаю агент на сервере он говорит что не может найти файл. а локально все работает!
 
#7
он говорит что не может найти файл.
он наверняка говорит не это, а бросает исключение. вот бы его увидеть. полностью. весь стектрейс.
Предположу, что проблема в следующем: у агентов есть небольшая заморочка, из-за которой ресурсы не очень попадают в classpath. Попробуйте получить ресурс явно:
InputStream in = getClass().getClassLoader().getResourceAsStream("log4j.properties");
 

Mady

Well-Known Member
16.09.2006
65
0
32
#8
а обращаетесь к нему как?
Если локально то просто указываю
...
...new Configuration().configure()("xml");
те путь как бы он знает это локально а на сервере стек трейс такой

22.04.2011 15:49:06 Agent error: java.lang.ExceptionInInitializerError
22.04.2011 15:49:06 Agent error: at java.lang.J9VMInternals.initialize(J9VMInternals.java:222)
22.04.2011 15:49:06 Agent error: at JavaAgent.NotesMain(Unknown Source)
22.04.2011 15:49:06 Agent error: at lotus.domino.AgentBase.runNotes(Unknown Source)
22.04.2011 15:49:06 Agent error: at lotus.domino.NotesThread.run(Unknown Source)
22.04.2011 15:49:06 Agent error: Caused by:
22.04.2011 15:49:06 Agent error: org.hibernate.HibernateException: Could not parse configuration: /hibernate.cfg.xml
22.04.2011 15:49:06 Agent error: at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1500)
22.04.2011 15:49:06 Agent error: at org.hibernate.cfg.Configuration.configure(Configuration.java:1434)
22.04.2011 15:49:06 Agent error: at org.hibernate.cfg.Configuration.configure(Configuration.java:1420)
22.04.2011 15:49:06 Agent error: at HibernateFactory.<clinit>(Unknown Source)
22.04.2011 15:49:06 Agent error: at java.lang.J9VMInternals.initializeImpl(Native Method)
22.04.2011 15:49:06 Agent error: at java.lang.J9VMInternals.initialize(J9VMInternals.java:200)
22.04.2011 15:49:06 Agent error: ... 3 more
22.04.2011 15:49:06 Agent error: Caused by:
22.04.2011 15:49:06 Agent error: org.dom4j.DocumentException: Can't find resource for bundle java.util.PropertyResourceBundle, key connect_not_allowed Nested exception: Can't find resource for bundle java.util.PropertyResourceBundle, key connect_not_allowed
22.04.2011 15:49:06 Agent error: at org.dom4j.io.SAXReader.read(SAXReader.java:484)
22.04.2011 15:49:06 Agent error: at org.hibernate.cfg.Configuration.doConfigure(Configuration.java:1490)
22.04.2011 15:49:06 Agent error: ... 8 more
 

Mady

Well-Known Member
16.09.2006
65
0
32
#10
Попробуйте явно указать url:
Код:
URL url = getClass().getClassLoader().getResource("конфиг.xml");
configuration().configure(url);
//.....
URL url = getClass().getClassLoader().getResource("hibernate.cfg.xml");
System.out.println("url="+url);
//.....

результат:
url=null

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

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 438
351
homepage.mac.com
#15
гадать сложно нужно понять как из проекта размещаются ресурсы...
например - экспортнуть проект и посмотреть
 
#16
URL url = getClass().getClassLoader().getResource("hibernate.cfg.xml");
System.out.println("url="+url);
результат:
url=null
Код:
public class JavaAgent extends AgentBase {

public void NotesMain() {

try {
Session session = getSession();
AgentContext agentContext = session.getAgentContext();
// (Your code goes here)
Reader reader = new InputStreamReader(this.getClass().getClassLoader().getResourceAsStream("test.html"));
BufferedReader br = new BufferedReader(reader);
String line = null;
while (( line = br.readLine() )!=null) {
System.out.println( line );
}
} catch(Exception e) {
e.printStackTrace();
}
}
}
Нормально работает на клиенте и на сервере.
в аттаче скрин с агента в DDE и выхлоп серверной консоли.
Т.о. ресурсы из агента нормально подтягиваются класслоадером агента. В конфигурации, приведенной на вашей картинке все должно работать.

Проблемы начнут возникать, когда к ресурсу попытается класс, загруженный класслоадером, находящимся выше в иерархии, чем AgentLoader: т.е., например, если вы положите HibernatеFactory в lib/ext и будете пытаться из него получить доступ к ресурсам агента...

P.S. А зачем вам hibernate понадобился внутре domino, если не секрет?
Я буквально сегодня прикручивал JPA к домине. Чисто в академических целях. Практического применения этому знанию пока не вижу...
 

Вложения

Mady

Well-Known Member
16.09.2006
65
0
32
#17
Не секрет, просто интересно....

Добавлено: Большое спасибо за пример и за линк
 

lmike

нет, пердело совершенство
Lotus team
27.08.2008
6 438
351
homepage.mac.com
#18
Z

zum

Гость
#19
Собственно как выгрузить
Заимпортированный файлик в "Res" библиотеки.
Точнее как его найти?)

так не получаетя
InputStream is = getClass().getClassLoader().getResourceAsStream(nameResFile);