2009-03-18 23 views
2

私はEclipse RCPについて学ぶことに興味があります。基本的な知識はいくつかありますが、何ができるのかをもっと知りたかったのです。そこで、私は自分自身に一連の要件を作成し、分析し、Eclipse RCPをベースフレームワークとして使用してEclipse RCPで実装する方法を決定しました。今では、要件が厳しすぎるかもしれないし、Eclipse RCPについてまだ理解していないこともあります。要件を満たす適切なソリューションを考え出すのは苦労しています。Eclipse RCPのケーススタディ

次の要件をまとめたものである(詳細の可能性がないことを言い訳してください、これは本当に自分自身を奨励するだけでいくつかの例です):

私はいくつかのサーバを監視するのEclipse RCPアプリケーションを持っていると思いました。これらのサーバーは、当初はアプリケーションが知っているプログラムです(つまり、サーバーの機能と内容について正確に把握していることを意味します)。しかし、将来的には、アプリケーションが監視するアプリケーションに異なる特性を持つ任意のプログラムを指定できるようにする必要があります(既知のサーバーだけでなく、これまで知らなかったサーバーもあります)。また、アプリケーションは、監視が必要なサーバーの詳細(ホスト、ポート、ユーザー名、パスワードなど)のすべてを含むXML構成ファイルも必要とします。このXML構成ファイルは、JAXBを使用してエンコードおよびデコードされます。

したがって、上記の要件に基づいて、私は次の詳細が出ている:

XMLは次のようなものになります。

<configuration> 
    <components> 
     <serverA> 
      <host></host> 
      <port></port> 
      <username></username> 
      <password></password> 
     </serverA> 
     <serverB> 
      <host></host> 
      <port></port> 
      <username></username> 
      <password></password> 
     </serverB> 
     <!--- this will be the place for other components specified by user --> 
    </components> 
</configuration> 

とアプリケーションが知っているサーバです。ソースコードで

、クラスの次の階層がある:

コンポーネント<は---サーバ< ---サーバーA、サーバーB

サーバーAとサーバーBはサーバーから派生し、それぞれに要素マップ。

構成のポイントエントリは、ServerAのリストとServerBのリストを含むConfigurationというクラスにあります。さて、アプリケーションが知らない他のプログラムを監視できなければならないので、XML構成ファイルも拡張可能でなければならないため、Configurationクラスには、ユーザーが指定した他のコンポーネントにマップするObjectのリストも含まれています。構成ファイル。

Configuration.java

public class Configuration 
{ 
    @XmlElement 
    private List<ServerA> serveras; 

    @XmlElement 
    private List<ServerB> serverbs; 

    @XmlAnyElement 
    private List<Object> otherServers; 
} 

は今、これは皆さんが問題にアプローチするためにも行います何かありますか?私は、わかりませんが、私は、アプリケーションがユーザーが指定した他のプログラムを監視できるようにするための要件についてちょっと混乱しています。私は最初にそれを設定したことを知っていますが、「これはEclipse RCPの拡張ポイントを利用できるもののようですが、今は設定ファイルに飛び込んできました。設定ファイルはplugin.xmlに関連していますか?

私の心の中で、アプリケーションが監視する必要があるプログラムの詳細(ホスト、ポート、ユーザー名、およびパスワード)を指定する設定ファイルが必要でした。 plugin.xmlは、アプリケーションが監視する必要があるユーザー定義プログラムの拡張ポイントと拡張子を指定するために使用されます。つまり、ユーザー定義プログラムの場合、ユーザーはplugin.xmlの拡張機能として構成し、構成ファイルに他の詳細を指定する必要がありますか?

答えて

1

この問題にはいくつかの方法があります。しかし、私はそれにショットを与えることができます。

監視の特性が異なる複数のサーバーがあります。しかし、あなたのEclipseアプリケーションでは、それらはすべて似ている必要があります。

サーバーを監視するUIを含むEclipse RCPアプリケーションがあるとします。このアプリケーションでは、実際にサーバーが何であるかは関係ありませんが、サーバーに接続する共通のインターフェイスが必要です。

1つの可能性は、サーバーの通信プロトコルを表すインターフェイスがあり、メインプラグインにプロトコルの実装を許可する拡張ポイントを定義することです。だから、あなたはいくつかのインターフェース(IMonitoringProtocolと呼んでいます)のインスタンスのコレクションを作成することができます。このインターフェイスには、UIにステータスを表示するのに必要なメソッドが含まれています。

さらに、すべてのサーバーを一覧表示するXML構成ファイルがあります。この構成ファイルの要素の1つは、監視に使用するプロトコルです。

したがって、アプリケーションを起動すると、提供されたすべてのプロトコルがインスタンス化され、構成ファイルが読み取られます。構成エントリを照合することによって、サーバーと通信する正しいプロトコルを見つけることができます。

これにより、未知のサーバーの将来、新しいプロトコルを追加することができます。