2013-09-04 2 views
0

Моего проекта состоит из следующих пучков, которые определяют декларативный Services с данными XML-файлами:OSGi- Framework будет регистрировать только определенные услуги

characterbuilder.gui

<?xml version="1.0" encoding="UTF-8"?> 
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="characterbuilder.gui"> 
    <implementation class="characterbuilder.gui.ApplicationFrame"/> 
    <reference bind="setMenuScripting" cardinality="1..1" interface="characterbuilder.scripting.menu.IMenuScripting" name="IMenuScripting" policy="dynamic"/> 
</scr:component> 

characterbuilder .pluginmanager

<?xml version="1.0" encoding="UTF-8"?> 
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="characterbuilder.pluginmanager"> 
    <implementation class="characterbuilder.pluginmanager.implementation.PluginManager"/> 
</scr:component> 

characterbuilder.scripting

<?xml version="1.0" encoding="UTF-8"?> 
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="characterbuilder.scripting"> 
    <implementation class="characterbuilder.scripting.internal.CharacterBuilderScripting"/> 
    <reference bind="setGameSystem" cardinality="1..1" interface="characterbuilder.systemmanager.IGameSystem" name="IGameSystem" policy="static"/> 
    <reference bind="setXMLHandler" cardinality="1..1" interface="characterbuilder.xmlhandling.xmlhandler.IXMLHandler" name="IXMLHandler" policy="static"/> 
    <reference bind="setPluginManager" cardinality="1..1" interface="systemplugin.manager.IPluginManager" name="IPluginManager" policy="static"/> 
    <service> 
     <provide interface="characterbuilder.scripting.menu.IMenuScripting"/> 
    </service> 
</scr:component> 

characterbuilder.xmlhandling

<?xml version="1.0" encoding="UTF-8"?> 
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="character.builder.xml.handling"> 
    <implementation class="characterbuilder.xmlhandling.implementation.XMLHandler"/> 
    <service> 
     <provide interface="characterbuilder.xmlhandling.xmlhandler.IXMLHandler"/> 
    </service> 
</scr:component> 

characterbuilder.dummysystem

<?xml version="1.0" encoding="UTF-8"?> 
<scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" name="DummySystem"> 
    <implementation class="dummygamedefinition.systemmanager.DummySystemManager"/> 
    <service> 
     <provide interface="characterbuilder.systemmanager.IGameSystem"/> 
    </service> 
</scr:component> 

Когда я использую "службы" команду из консоли, чтобы получить все зарегистрированных услуг, только IXMLHandler и IGameSystem когда-либо регистрируются.

Я провел более дюжины часов в течение последних трех дней, пытаясь заставить эти службы работать правильно, и я хуже всего, чем когда я начал, потому что у меня все еще нет ни малейшего понятия, что делать, и когда Я начал, я не чувствовал себя таким расстроенным и глупым.

ответ

0

Во-первых, это пакеты, которые регистрируют эти службы? Я ударил головой по одной и той же проблеме, только чтобы найти, что в конфигурации запуска по умолчанию Eclipse/Equinox автоматически не запускает все пакеты.

+0

Я изменил их все в автозагрузку, и все они в настоящее время регистрации. Большое спасибо! – ThisIsNoZaku

1

Вы потратили много часов (как это делают многие пользователи OSGi), не имея Apache Felix Webconsole с aQute Xray. Xray - это вкладка в веб-консоли при установке, и она показывает вам, с цветами состояние компонентов, пакетов и служб DS. При создании сообщения журнала также появляется предупреждение о входящих сообщениях. Xray сильно подталкивается, просто наводите курсор на связку, предупреждайте журнал, службу или компонент, чтобы получить дополнительную информацию. Вы также можете щелкнуть по этим объектам. Эти инструменты также работают на Equinox, так как это 100% OSGi.

P.S. Надеюсь, вы все еще не используете XML-файлы вместо аннотаций?

+0

Я использую редактор определения компонентов для управления XML, если вы спрашиваете, редактирую ли я XML вручную. re: aQuite Xray, я нахожусь в Windows 7, и, согласно сайту, нет поддержки Windows. – ThisIsNoZaku

+0

@ThisIsNoZaku Где вы узнали, что Xray не поддерживает Windows? Это вздор ... конечно, он работает на Windows. –

+0

@NeilBartlett Оказывается, я искал не то место. Я нажал на установку, и это привело меня к установщикам для jpm, и я ошибся, хотя это было для xRay. – ThisIsNoZaku

0

Как я вижу characterbuilder.pluginmanager не предоставляет каких-либо услуг, но ссылка characterbuilder.scripting имеет 1..1 статическую ссылку на IPluginManager, который, кажется, несуществующие из вашего примера.

Хорошим способом (рядом с веб-консолью и xray) для отладки приложения является консоль OSGi. Ищите неудовлетворенные услуги и причину, по которым они не удовлетворены.

С наилучшими пожеланиями, Майк

Смежные вопросы