решил вынести в отдельную тему...
во-первых - помним про сесуриту
второй момент - если хочется тестить "в БД", т.е. загрузить файлы ворда в базу, надо учесть ряд особенностей:
что ресурсы должны "лежать" в res агента! (даже при вызове классов Java либы в написанной в нотусе)
и лучше использовать конструкцию:
т.е. без "ненужного" слеша
либы, кот так или иначе могут использоваться (в т.ч. для генерации ПДФ):
и если код. был написан для предыдущих версий - возможно придется корректировать
[doublepost=1493125006,1492792059][/doublepost]нек. особенности..
в проект можно добавить файл, через package explorer , но надо Refresh и сохранение агента
иначе он не перенесет файл в пути классов, тоже касается и изменения файла - надо вынудить агент на сохранение (изменить класс или ч-л еще)
иначе будет старая версия файла доступна классам!
[doublepost=1493224896][/doublepost]еще момент...
положить все в jvm/lib/ext - это вариант, но поддерживать либы в актуально состоянии тяжко
что можем сделать?!
я использую для создания базового ф-ционала Idea IntellyJ, т.е. все без нотусевой части обкатываю там, затем создаю артефакт, в кот. подкачиваются все либы (есть такая опция)
с зависимостями, но надо указать link via manifest
далее собираем артифакт и... хачим получившийся jar (можем скопировать, чтобы пользоваться оригиналом)
я его копию называю loopback.jar (название не суть)
удаляю всю иерархию классов из него (открывая как архив)
и меняю манифест, для случая с xdocreport получим так:
далее - кладем все файлы из каталога артефакта в "нужный" на сервере (я говорю в контексте сервера, но для клиента - нет отличий)
"нужный" - это любой, доступный пользователю, под кот. запущена домина/нотус
и финальный момент - правим notes.ini
у меня он получился такой (значимый кусок):
про этот подход я уже рассказывал
можно jar создавать кодом - "но руки не дошли"
во-первых - помним про сесуриту
второй момент - если хочется тестить "в БД", т.е. загрузить файлы ворда в базу, надо учесть ряд особенностей:
Ссылка скрыта от гостей
что ресурсы должны "лежать" в res агента! (даже при вызове классов Java либы в написанной в нотусе)
и лучше использовать конструкцию:
Java:
getClass().getClassLoader().getResourceAsStream("имяфайла");
либы, кот так или иначе могут использоваться (в т.ч. для генерации ПДФ):
POI 3.0.15 (я его пользую для парсинга эхеля), кот. я решил использовать имеет ряд особенностейcommons-codec-1.10.jar
commons-collections-3.2.1.jar
commons-collections4-4.1.jar
commons-lang-2.4.jar
fr.opensagres.odfdom.converter.core-2.0.0.jar
fr.opensagres.odfdom.converter.pdf-2.0.0.jar
fr.opensagres.odfdom.converter.xhtml-2.0.0.jar
fr.opensagres.poi.xwpf.converter.core-2.0.0.jar
fr.opensagres.poi.xwpf.converter.pdf-2.0.0.jar
fr.opensagres.poi.xwpf.converter.xhtml-2.0.0.jar
fr.opensagres.xdocreport.converter-2.0.0-javadoc.jar
fr.opensagres.xdocreport.converter-2.0.0.jar
fr.opensagres.xdocreport.converter.docx.xwpf-2.0.0-javadoc.jar
fr.opensagres.xdocreport.converter.docx.xwpf-2.0.0.jar
fr.opensagres.xdocreport.converter.odt.odfdom-2.0.0-javadoc.jar
fr.opensagres.xdocreport.converter.odt.odfdom-2.0.0.jar
fr.opensagres.xdocreport.core-2.0.0.jar
fr.opensagres.xdocreport.itext.extension-2.0.0.jar
fr.opensagres.xdocreport.template-2.0.0.jar
fr.opensagres.xdocreport.template.freemarker-2.0.0-javadoc.jar
fr.opensagres.xdocreport.template.freemarker-2.0.0.jar
freemarker-2.3.20.jar
itext-2.1.7.jar
odfdom-java-0.8.7.jar
ooxml-schemas-1.3.jar
oro-2.0.8.jar
poi-3.15.jar
poi-ooxml-3.15-javadoc.jar
poi-ooxml-3.15.jar
poi-ooxml-schemas-3.15.jar
stax-api-1.0.1.jar
velocity-1.7.jar
xdocreport-2.0.0-javadoc.jar
xdocreport-2.0.0.jar
xercesImpl-2.9.1.jar
xml-apis-1.3.04.jar
и если код. был написан для предыдущих версий - возможно придется корректировать
[doublepost=1493125006,1492792059][/doublepost]нек. особенности..
в проект можно добавить файл, через package explorer , но надо Refresh и сохранение агента
иначе он не перенесет файл в пути классов, тоже касается и изменения файла - надо вынудить агент на сохранение (изменить класс или ч-л еще)
иначе будет старая версия файла доступна классам!
[doublepost=1493224896][/doublepost]еще момент...
положить все в jvm/lib/ext - это вариант, но поддерживать либы в актуально состоянии тяжко
что можем сделать?!
я использую для создания базового ф-ционала Idea IntellyJ, т.е. все без нотусевой части обкатываю там, затем создаю артефакт, в кот. подкачиваются все либы (есть такая опция)
с зависимостями, но надо указать link via manifest
далее собираем артифакт и... хачим получившийся jar (можем скопировать, чтобы пользоваться оригиналом)
я его копию называю loopback.jar (название не суть)
удаляю всю иерархию классов из него (открывая как архив)
и меняю манифест, для случая с xdocreport получим так:
т.е. на всяк случай переназвал Main-Class (для нашей цели - не имеет значения)Manifest-Version: 1.0
Class-Path: fr.opensagres.xdocreport.converter.odt.odfdom-2.0.0.jar fr
.opensagres.xdocreport.converter-2.0.0.jar fr.opensagres.xdocreport.c
ore-2.0.0.jar fr.opensagres.odfdom.converter.pdf-2.0.0.jar fr.opensag
res.odfdom.converter.core-2.0.0.jar odfdom-java-0.8.7.jar xercesImpl-
2.9.1.jar xml-apis-1.3.04.jar fr.opensagres.xdocreport.itext.extensio
n-2.0.0.jar itext-2.1.7.jar fr.opensagres.odfdom.converter.xhtml-2.0.
0.jar org.osgi.core-4.2.0.jar fr.opensagres.xdocreport.template.freem
arker-2.0.0.jar fr.opensagres.xdocreport.template-2.0.0.jar fr.opensa
gres.xdocreport.core-2.0.0.jar freemarker-2.3.20.jar fr.opensagres.xd
ocreport.template.freemarker-2.0.0.jar fr.opensagres.xdocreport.templ
ate-2.0.0.jar fr.opensagres.xdocreport.core-2.0.0.jar freemarker-2.3.
20.jar org.osgi.core-4.2.0.jar oro-2.0.8.jar velocity-1.7.jar commons
-lang-2.4.jar xdocreport-2.0.0.jar org.osgi.core-4.2.0.jar poi-ooxml-
3.15.jar poi-3.15.jar commons-codec-1.10.jar commons-collections4-4.1
.jar poi-ooxml-schemas-3.15.jar xmlbeans-2.6.0.jar stax-api-1.0.1.jar
commons-collections-3.2.1.jar fr.opensagres.xdocreport.converter.doc
x.xwpf-2.0.0.jar fr.opensagres.xdocreport.converter-2.0.0.jar fr.open
sagres.xdocreport.core-2.0.0.jar fr.opensagres.poi.xwpf.converter.pdf
-2.0.0.jar fr.opensagres.poi.xwpf.converter.core-2.0.0.jar commons-co
dec-1.10.jar ooxml-schemas-1.3.jar stax-api-1.0.1.jar fr.opensagres.x
docreport.itext.extension-2.0.0.jar itext-2.1.7.jar fr.opensagres.poi
.xwpf.converter.xhtml-2.0.0.jar org.osgi.core-4.2.0.jar
Main-Class: Loopback
далее - кладем все файлы из каталога артефакта в "нужный" на сервере (я говорю в контексте сервера, но для клиента - нет отличий)
"нужный" - это любой, доступный пользователю, под кот. запущена домина/нотус
и финальный момент - правим notes.ini
у меня он получился такой (значимый кусок):
перезапускаем сервер/клиент - либы у нас в доступе и собраны в одном месте...
JavaUserClassesExt=XDP-_0
XDP-_0=/home/local/notesdata/xdocreport+POI/loopback.jar
...
про этот подход я уже рассказывал
можно jar создавать кодом - "но руки не дошли"