Pergunta

Estou interessado em aprender sobre o Eclipse RCP, tenho algum conhecimento básico, mas queria saber mais do que é capaz. Por isso, encorajei -me a criar um conjunto de requisitos, analisá -los e criar decisões de design sobre como elas podem ser atendidas usando o Eclipse RCP como estrutura base e, eventualmente, implementá -las com o Eclipse RCP. Agora, talvez os requisitos sejam muito difíceis ou eu ainda não entendo muito sobre o Eclipse RCP, estou lutando para criar soluções adequadas para atender aos requisitos!

A seguir, o resumo dos requisitos (desculpe a provável falta de detalhes, este é realmente apenas algum exemplo para me incentivar):

Eu queria ter um aplicativo RCP Eclipse para monitorar alguns servidores. Esses servidores serão inicialmente programas que o aplicativo conhece (o que significa que ele sabe exatamente sobre seus detalhes). No futuro, no entanto, o aplicativo deve permitir que os usuários especifiquem programas arbitrários com diferentes charaterísticas para o aplicativo monitorar também (portanto, não apenas servidores conhecidos, mas também alguns outros servidores que não conheciam antes). O aplicativo também exigirá um arquivo de configuração XML que contém todos os detalhes dos servidores que precisam ser monitorados (por exemplo, host, porta, nome de usuário e senha). Este arquivo de configuração XML será codificado e decodificado usando o JAXB.

Então, com base nos requisitos acima, criei os seguintes detalhes:

O XML vai parecer algo assim:

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

Onde e os servidores estão os servidores que o aplicativo conhece.

No código -fonte, há a seguinte hierarquia de classes:

Componente <--- Servidor <--- Serverra, Serverb

ServerA e Serverb descem do servidor e mapa para e elemento, respectivamente.

A entrada de pontos para a configuração está na classe chamada configuração que contém uma lista de servidores e uma lista do Serverb. Agora, como o aplicativo deve ser capaz de monitorar outros programas que não conhecia, o arquivo de configuração XML também deve ser extensível, portanto, a classe de configuração também contém uma lista de objeto que mapeia qualquer outro componente especificado pelo usuário no arquivo de configuração.

Configuration.java

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

   @XmlElement
    private List<ServerB> serverbs;

   @XmlAnyElement
    private List<Object> otherServers;
}

Agora, isso é algo que vocês farão também para abordar os problemas? Acho que não sei, estou apenas confuso sobre o requisito para que o aplicativo possa monitorar outros programas especificados pelo usuário. Eu sei que configurei em primeiro lugar, mas fiz isso em mente dizendo que "isso parece algo que pode utilizar os pontos de extensão do Eclipse RCP", mas agora depois de entrar no arquivo de configuração, não estou claro sobre como deve O arquivo de configuração está relacionado ao plugin.xml?

No fundo da minha mente, eu queria o arquivo de configuração para especificar os detalhes (host, porta, nome de usuário e senha) dos programas que o aplicativo precisa monitorar. O plugin.xml é usado para especificar os pontos de extensão e extensões para programas definidos pelo usuário que o aplicativo também precisa monitorar. Isso significa que, no final, para os programas definidos pelo usuário, os usuários precisam configurá-los como extensões no plugin.xml e, em seguida, especificar seus outros detalhes no arquivo de configuração?

Foi útil?

Solução

Existem várias maneiras de abordar esse problema. Mas deixe -me dar uma chance a isso.

Você tem vários servidores diferentes, com diferentes características de monitoramento. Mas, para o seu aplicativo Eclipse, todos devem parecer semelhantes.

Digamos que você tenha um aplicativo RCP Eclipse que contém alguma interface do usuário para monitorar um servidor. Para este aplicativo, não deve importar quais são os servidores, mas deve haver uma interface comum para se conectar a eles.

Uma possibilidade é que você tenha uma interface que represente o protocolo de comunicação do servidor e, em seguida, defina um ponto de extensão no seu plug -in principal que permite que as implementações contribuintes do protocolo. Portanto, você poderá criar uma coleção de instâncias de alguma interface (vamos chamá -la de imonitoringProtocol). Essa interface conteria os métodos necessários para exibir o status na interface do usuário.

Além disso, você teria um arquivo de configuração XML que lista todos os servidores. Um dos elementos deste arquivo de configuração é o protocolo a ser usado para monitoramento.

Portanto, quando você inicia seu aplicativo, instanciará todos os protocolos contribuídos e leu o arquivo de configuração. Você pode encontrar o protocolo certo para se comunicar com um servidor, correspondendo às entradas de configuração.

Isso permite que você adicione novos protocolos no futuro, para servidores que ainda não são conhecidos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top