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

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

NickProstoNick

Статус как статус :)
Lotus Team
22.08.2008
1 851
27
BIT
0
это где?
у меня тут:
ааа... это точно java?
Я обычно размещаю так
00.JPG
 

VladSh

начинающий
Lotus Team
11.12.2009
1 797
158
BIT
233
NickProstoNick
Это внутренности Java-библы/агента.
Человек хочет получить xml из ресурсов, при чём здесь скриптовые библиотеки?
Короче, не гони :)

zum
Использовать NotesNoteCollection, выгрузить в dxl, а оттуда уже вынимать.
Если получится и не будет особо жалко, то киньте код плиз)) а то сам пока ещё такого не делал, но чувствую, что будет нужно.
 
Z

zum

NickProstoNick
Это внутренности Java-библы/агента.
Человек хочет получить xml из ресурсов, при чём здесь скриптовые библиотеки?
Короче, не гони :)

zum
Использовать NotesNoteCollection, выгрузить в dxl, а оттуда уже вынимать.
Если получится и не будет особо жалко, то киньте код плиз)) а то сам пока ещё такого не делал, но чувствую, что будет нужно.

P.S. Модераторы, тему бы перекинуть в форум по Java..
не совсем понятно как это сделать... используя
NotesNoteCollection

дело в том что это не агент. и лотусовой сессии внутри нету да и не нужна она мне там
Почему то я думал что это ресурс именно jar библиотеки
потому как вызывается по схеме LS2J
 
N

nvyush

Использовать NotesNoteCollection, выгрузить в dxl, а оттуда уже вынимать.
Если получится и не будет особо жалко, то киньте код плиз)) а то сам пока ещё такого не делал, но чувствую, что будет нужно.
"выгрызал" файл из web service consumer'а таким кодом:
Visual Basic:
Uselsx "*javacon"

%REM
    Function saveResourceOnDisk
    В случае успешной выгрузки возвращает полный путь с именем файла
%END REM
Function saveResourceOnDisk(db As NotesDatabase, noteid As String, dirName As String, fileName As String) As String
    On Error GoTo ErrH
    Dim DXLExporter As NotesDXLExporter
    Dim nstream As NotesStream
    Dim note As NotesDocument
    Dim noteDXL As String
    Dim fileTxt As String   
    Dim pos1 As Long
    Dim pos2 As Long
    Dim jSession As JavaSession
    Dim jClass_Base64Binary As JavaClass
    Dim jMethod_decode As JavaMethod
    
    Set note = db.GetdocumentById(noteid)
    Set nstream = session.CreateStream()
    Set DXLExporter = session.CreateDXLExporter(note, nstream)
    Call DXLExporter.Process()
    noteDXL = nstream.ReadText()
    Call nstream.Close()
    
    pos1 = Instr(noteDXL, fileName)
    pos1 = Instr(pos1, noteDXL, {<filedata>}) + Len({<filedata>})
    pos2 = Instr(pos1, noteDXL, {</filedata>})
    fileTxt = Replace(Mid(noteDXL, pos1, pos2 - pos1), Chr$(10), "")
    
    Set jSession = New JavaSession()
    Set jClass_Base64Binary = jSession.GetClass("lotus/domino/types/Base64Binary")
    Set jMethod_decode = jClass_Base64Binary.GetMethod("decode", "(Ljava/lang/String;)[B")
    Call nstream.Open(dirName + fileName, "Binary")
    Call nstream.Write(jMethod_decode.Invoke(, fileTxt))
    Call nstream.Close()
    
    saveResourceOnDisk = dirName + fileName
    Exit Function
    
ErrH:
    '...
    Exit Function
End Function
пример использования:
Visual Basic:
Dim session As New NotesSession
fileNameFull$ = saveResourceOnDisk(session.CurrentDatabase, "0000069A", "C:/temp/", {%%webserviceresource%%.jar})
 

VladSh

начинающий
Lotus Team
11.12.2009
1 797
158
BIT
233
не совсем понятно как это сделать... используя NotesNoteCollection
C помощью NotesNoteCollection можно получить noteid нужного элемента дизайна. А дальше передать в код nvy.

nvy
Спасибо!
На сколько я понимаю, таким же кодом можно взять картинки и файлы из БД -> Resources -> Images/Files?
Теперь надо подумать, как сделать, чтобы в файловую систему не сохранять файл..)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 985
611
BIT
472
выгрызалки данных из хмл я уж раз стопицот постил (SAX и VTD)
кот. на java

Добавлено: VladSh не сохранять на диск, при использовании LS2J, если есть память - выдать в стринг (из java), и нотусевый стрим нет необходимости связывать с файлом
 

savl

Lotus Team
28.10.2011
2 624
314
BIT
542
на java есть более простой механизм получения ресурсов из папки Res:
Java:
java.util.ResourceBundle settingsRes = ResourceBundle.getBundle("Sett");
В данном коде "Sett" это имя файла в ресурсах, полное имя: Sett.properties, но для обращения достаточно просто имени.
Файл может содержать в себе как просто соотношение: ключ = значение, пример: ExportFile=Export.xml
Так и xml структуру - пример:
XML:
<resources>
<resource>
<directory>${basedir}/src/main/java</directory>
<excludes>
<exclude>**/*.java</exclude>
</excludes>
</resource>
<resource>
<directory>${basedir}/src/main/resources</directory>
</resource>
</resources>


Добавлено: решение проблем с таким подходом здесь: Ресурсы jar-файла, Ls-агент запускает Java-агент.
 
Мы в соцсетях:

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