假设在示例中使用了SCR Annotations。考虑上课:
@Component(metatype = true, label = "This is my ACME class implementation)
public class AcmeImpl implements Acme {}
元类型描述符接近:
<?xml version="1.0" encoding="UTF-8"?><metatype:MetaData xmlns:metatype="http://www.osgi.org/xmlns/metatype/v1.0.0" localization="OSGI-INF/metatype/com.my.AcmeImpl">
<OCD id="com.my.Acme" name="%com.my.Acme.name" description="%com.my.AcmeImpl.description"/>
<Designate pid="com.my.AcmeImpl">
<Object ocdref="com.my.Acme"/>
</Designate>
</metatype:MetaData>
问题是,关于MetaData
scheme:
<complexType name="OCD">
<sequence>
<element name="AD" type="metatype:AD" minOccurs="1" maxOccurs="unbounded" />
<element name="Icon" type="metatype:Icon" minOccurs="0" maxOccurs="1" />
</sequence>
<!-- not important part -->
</complextType>
因此,AD
中缺少OCD
节点会使此元类型无法使用,并且不会出现在OSGi Felix Web控制台中。值得一提的是,添加任何非私有Property
注释会导致添加一个AD
节点,从而使方案得到正确验证,并且可以在Felix Web控制台端创建配置。
没有任何属性的状态在其他任何地方都没有被明确禁止,并且应该在Apache SCR Maven plugin处理期间抛出错误。那背后有什么理由吗?如何在不向Component
添加Property
的情况下仍然可以配置此Select distinct G.Game_Name
From Game_Details G
Where G.Game_Id in ( Select Game_Id
From WC_Info W
Where W.WC_Won=0
And Country_Name in ('India', 'England','France', 'Italy')
Group By Game_Id
Having Count( distinct Country_Name ) = 4 );