0

私のプロジェクトは、指定された .xml ファイルで Declarative Services を定義する次のバンドルで構成されています。

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.xml 処理

<?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>

コンソールから「services」コマンドを使用してすべての登録済みサービスを取得すると、IXMLHandler と IGameSystem のみが登録されます。

過去 3 日間、これらのサービスを適切に機能させるために 12 時間以上を費やしましたが、開始時よりも最悪の状態です。イライラして愚かだと感じないでください。

4

3 に答える 3

1

aQute Xrayを備えたApache Felix Webconsoleを使用しないことで、(あまりにも多くの OSGi ユーザーがそうであるように) 多くの時間を無駄にしました。Xray は、インストールすると Web コンソールのタブになり、DS コンポーネント、バンドル、およびサービスの状態を色で示します。ログ メッセージが生成されたときに、サインオン バンドルに関する警告もあります。Xray には多くのツールチップが表示されます。バンドル、ログの警告、サービス、またはコンポーネントにカーソルを合わせると、詳細情報が表示されます。これらのオブジェクトをクリックすることもできます。Equinox は 100% OSGi であるため、これらのツールは Equinox でも動作します。

PS 注釈の代わりに XML ファイルをまだ使用していないことを願っていますか?

于 2013-09-04T11:26:56.413 に答える