OSGi包的包结构

7 java osgi modularization

我一直在思考一些关于osgi包中的包结构的"良好实践".目前,平均而言,我们每捆有8-12个班级.我的主动/建议之一是有两个包; com.company_name.osgi.services.api(用于api相关的类/接口(外部导出)和一个用于实现的包com.company_name.osgi.services.impl(未导出)).这有什么优点?还有其他建议吗?

sid*_*dev 6

您也可以考虑将接口放入OSGI特定代码中com.company_name.subsystem,并在其中实现com.company_name.subsystem.impl(如果有的话)com.company_name.subsystem.osgi.有时你可能有多个相同接口的实现.在这种情况下,你可以考虑- com.company_name.subsystem.impl1com.company_name.subsystem.impl2,例如:

com.company.scm        // the scm api
com.company.scm.git    // its git implementaton
com.company.scm.svn    // its subversion implementation
com.company.scm.osgi   // the place to put an OSGI Activator
Run Code Online (Sandbox Code Playgroud)

从这个意义上说,包结构可能是OSGi不可知的,如果你以后转移到另一个容器,你只需要另外一个

com.company.scm.sca     // or whatever component model you might think of
Run Code Online (Sandbox Code Playgroud)

始终拥有apiimpl包装名称可能会很烦人.如果有疑问,请使用impl但不是api.