Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 让Eclipse OSGI激活器彼此继承是个好主意吗?_Java_Eclipse_Eclipse Plugin_Osgi_Bundle - Fatal编程技术网

Java 让Eclipse OSGI激活器彼此继承是个好主意吗?

Java 让Eclipse OSGI激活器彼此继承是个好主意吗?,java,eclipse,eclipse-plugin,osgi,bundle,Java,Eclipse,Eclipse Plugin,Osgi,Bundle,如果您有一个通用的eclipse/osgi代码平台,您可以/应该从通用代码中继承Activator吗 例如 org.test.common.pluginator org.test.common.ui.ui org.test.product1.Product1PluginActivator org.test.product1.ui.Product1UIPluginActivator org.test.product2.Product2PluginActivator org.test.product

如果您有一个通用的eclipse/osgi代码平台,您可以/应该从通用代码中继承Activator吗

例如

org.test.common.pluginator
org.test.common.ui.ui

org.test.product1.Product1PluginActivator
org.test.product1.ui.Product1UIPluginActivator

org.test.product2.Product2PluginActivator
org.test.product2.ui.Product2PluginActivator

我希望所有的UI激活器都继承自通用的UI激活器,非UI激活器也是如此。start方法都将调用super。。。 然而,我想知道这是否是糟糕的osgi/捆绑实践,或者可能会导致问题


有人对此有什么想法/意见吗?

如果孩子在没有父包的情况下无法运行(即,它对父包具有功能依赖性),则您不能通过使激活器从父包继承来添加任何附加耦合


我会小心从一个普通的父级继承,除非插件已经有理由这样做,因为你正在强制加载包,即使你只是继承了一些常量。

如果子级没有父级的包也不能运行(即它有一个函数依赖关系),通过使激活器从中继承,您不会添加任何额外的耦合


我会小心从一个普通的父级继承,除非插件已经有理由这样做,因为即使你只继承了一些常量,你也会强制加载包。

我假设你在做EclipseRCP,否则我建议使用SpringDM(或者iPOJO、带Peaberry的谷歌Guice,或者声明性服务,…)。这样,您就再也不需要编写另一个bundle激活器了


另一方面,我的团队为我们的RCP相关包使用了通用的抽象
BundleActivator
。对我来说,在一个中央捆绑包中使用实际的捆绑包激活器会增加耦合。

我假设您正在使用Eclipse RCP,因为否则我建议使用Spring DM(或iPOJO、带Peaberry的Google Guice或声明性服务,…)。这样,您就再也不需要编写另一个bundle激活器了


另一方面,我的团队为我们的RCP相关包使用了通用的抽象
BundleActivator
。对我来说,在一个中心束(S)中有一个实际的束激活器会增加耦合。

< P>我不会,我实际上会认为这是一个滥用子类一般(而不是严格地从OSGI的观点)。
IMHO最好的方法是保持activator类本身最小(如在代码和运行时性能足迹中),主要是将实际工作(如果有的话)委托给工作者类。如果你必须对任何子类进行分类,你可以用那些工人类来做。

< P>我不会,我实际上会认为这是对子类的滥用(而不是严格地从OSGI的观点来看)。
IMHO最好的方法是保持activator类本身最小(如在代码和运行时性能足迹中),主要是将实际工作(如果有的话)委托给工作者类。如果您必须对任何内容进行子类化,您可以使用这些工作类进行子类化。

如果您选中了在加载该插件的某个类时激活该插件,如果您没有继承并访问该常量,该插件还会被加载吗,但是如果这是两者之间的唯一关系,那么最好不要引用常量。我想用例更像是在公共包中有init代码,您希望确保它运行,然后从公共激活器启动方法调用它,然后访问包(通过常量等)强制加载并确保运行init代码。这听起来像是代码的味道。一般来说,插件应该在第一次需要时延迟加载,而不是在加载类时加载。如果您选中了“在加载插件的一个类时激活该插件”,那么如果您没有继承并访问常量,它还会加载吗,但是如果这是两者之间的唯一关系,那么最好不要引用常量。我想用例更像是在公共包中有init代码,您希望确保它运行,然后从公共激活器启动方法调用它,然后访问包(通过常量等)强制加载并确保运行init代码。这听起来像是代码的味道。通常,插件应该在第一次需要时延迟加载,而不是在类加载时。