Мне интересно узнать об 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 </p>
Сервер A и Сервер B спускаются с Сервера и сопоставляются с элементом соответственно.
Запись точки для конфигурации находится в классе, называемом Configuration, который содержит список ServerA и список ServerB. Теперь, поскольку приложение должно иметь возможность отслеживать другие программы, о которых оно не знает, файл конфигурации 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, а затем указать другие данные в файле конфигурации?