0

我们有几个要部署到 8.5.3 Domino 服务器的 .jar 文件。

控制台命令“ tell http osgi diag <bundle name>”有效,并向我显示捆绑包在那里。但是,当我启动一个具有来自 jar 的导入语句的 Notes Java 代理时,多米诺控制台会为这些类打印NoClassDefFoundError错误。

来自最初称为 saxon9he.jar 的 .jar 的示例:

[1834:0036-1E84] 24.08.2012 11:21:14   HTTP JVM: Exception in thread "AgentThread:JavaAgent"
[1834:0037-1E84] 24.08.2012 11:21:14   HTTP JVM: java.lang.NoClassDefFoundError:net.sf.saxon.Version
[1834:0039-1E84] 24.08.2012 11:21:14   HTTP JVM: at JavaAgent.NotesMain(Unknown Source)
[1834:003B-1E84] 24.08.2012 11:21:14   HTTP JVM: at lotus.domino.AgentBase.runNotes(Unknown Source)
[1834:003D-1E84] 24.08.2012 11:21:14   HTTP JVM: at lotus.domino.NotesThread.run(Unknown Source)
[1834:003F-1E84] 24.08.2012 11:21:14   HTTP JVM: Caused by:
[1834:0040-1E84] 24.08.2012 11:21:14   HTTP JVM: java.lang.ClassNotFoundException: net.sf.saxon.Version
[1834:0042-1E84] 24.08.2012 11:21:14   HTTP JVM: at lotus.domino.AgentLoader.loadClass(Unknown Source)
[1834:0044-1E84] 24.08.2012 11:21:14   HTTP JVM: at java.lang.ClassLoader.loadClass(ClassLoader.java:619)
[1834:0046-1E84] 24.08.2012 11:21:14   HTTP JVM: ... 3 more

其中一些 .jar 文件是我们自己完全编写的,而另一些是由开源项目贡献的。这些罐子。在“WebContent”的 Domino Designer 中的 Java 视图中创建的几个 Java 代理、XPage 和类中仅通过导入指令使用文件。我们在各种设计元素中使用这些包,并且有大约 100 个 domino 服务器必须获取这些文件和补丁,这就是为什么我们不想将它们放入每个它们的本地文件系统中。

到目前为止,这就是我为获得罐子所做的工作。文件到我的多米诺服务器:

我已经进口了这些罐子。将我的 Eclipse 4.2 客户端中的文件放入一个新的“现有 Jar 中的插件项目”并配置导入和导出包。(我什至尝试从这些 jar.Files 制作 Bnd-Projects 以获得适当的 OSGI-ready Manifest-files,遗憾的是它并没有做得更好)之后我创建了一个包含插件的功能项目。最后,我将该功能导入到我的 Eclipse 中的一个新的 Update-Site 项目并构建它。

我在从模板“StdEclipseUpdateSite”(版本 8.5.3 (04.03.2011) 创建的数据库中选择了这个 site.xml。在 Notes.ini 中通过我的 8.5.3 Domino 服务器 x64 上的“OSGI_HTTP_DYNAMIC_BUNDLES”参数引用了这个数据库出于测试目的在我的 Windows 7 x64 上本地运行。

我已经在这个问题上工作了几天,阅读了有关 osgi 的信息,并在谷歌上搜索了很多关于类似问题的信息,但我自己无法完成这项工作。非常感谢任何帮助。

4

2 回答 2

1

OSGI Bundles 对 Classic Agent 不可见,我建议您使用 DOTS 插件服务来完成这些任务。 http://www.openntf.org/internal/home.nsf/project.xsp?action=openDocument&name=OSGI%20Tasklet%20Service%20for%20IBM%20Lotus%20Domino

于 2012-08-24T13:09:40.683 回答
1

我知道这是一个老问题 - 我只是偶然发现它寻找一些部署问题:-)

简而言之:代理 JVM 和 XPages JVM 并不相同。因此,“旧”代理(以及相关的 Web 服务)将看不到通过更新站点部署到 OSGi 的任何内容。

您可以使用的唯一选项是将 jar 文件复制到服务器程序库中的 jvm/lib/ext。这样可行。您甚至不应该考虑将 jar 文件添加到代理(或 Java 脚本库),因为在使用之前分离 jar 文件的机制中存在内存泄漏。

所以这样考虑。向“新 Java 世界”的转变不会涉及旧技术(主要是代理)。您将不得不寻找在 Domino 中调度任务的新机制。我个人认为 DOTS/Tasklets 将成为前进的方向——但仍然需要“将其包裹”的解决方案——并使设置任务变得容易。

/约翰

于 2013-11-14T21:18:48.940 回答