在我们的系统中,一些类被打包为OSGI bundle jar文件。这些jar文件将在支持OSGI的Glassfish服务器中使用。
我想编写一个测试客户端代码来调用这些bundle jar文件中的一些方法。但我不想使用Glassfish。我只想使用Tomcat或Jetty。
我们正在使用Maven来管理依赖项。捆绑pom就像:
<artifactId>oursystem-name-biz</artifactId>
<packaging>bundle</packaging>
<name>oursystem-name-biz</name>
是否可以在OSGI支持下使用这些捆绑的jar文件?
答案 0 :(得分:2)
取决于。
是的,您可以在标准Java类路径上放置一个包并从中加载类,但前提是这些类位于jar的根目录中。
但是,OSGi支持Bundle-Classpath的概念,并且(如Java类路径)是将在bundle中搜索的路径。这意味着您可以创建要搜索的位置列表,例如jar中的特定子目录或jar中嵌入的jar。如果你将jar放在Java类路径上,那么这些都不受支持,所以如果这是你的目标,请确保避免使用Bundle-Classpath。