Мне интересно, можно ли использовать то, что объяснено в параграфе 104.7.5 (Использование нескольких местоположений) спецификаций предприятия osgi, используя декларативные аннотации служб. Цитирую спецификации:
Также возможно, что пакеты заинтересованы в нескольких идентификаторах PID для одной целевой службы, поэтому они могут зарегистрировать несколько идентификаторов PID для одной службы. [...]
Пакет, заинтересованный в конфигурации хоста, зарегистрирует управляемую службу со следующими свойствами:
service.pid = [ "com.acme.host", "com.acme.system" ]
Bundle будет вызываться как для
com.acme.host
, так и дляcom.acme.system
PID и, следовательно, должен различать эти два случая. Таким образом, эта управляемая служба будет иметь обратный вызов, например:
volatile URL url;
public void updated( Dictionary d ) {
if ( d.get("service.pid").equals("com.acme.host"))
this.url = new URL( d.get("host"));
if ( d.get("service.pid").equals("com.acme.system"))
...
}
Я пробовал со следующим синтаксисом:
@Component(
immediate = true,
configurationPid = "[com.mycompany.ws.rest,com.mycompany.endpoints]",
configurationPolicy = ConfigurationPolicy.REQUIRE
)
public class TestImpl implements Test {
// ...
}
но это не удается. Конечно, можно получить ссылку на config admin и просмотреть конфигурацию на основе желаемых pids, но мне это кажется немного неэлегантным, поскольку теоретически можно было бы делегировать это аннотациям ds.
Является ли это возможным? Каков правильный синтаксис?
Благодарю вас!