문제

나는 Eclipse RCP에 대해 배우고 싶습니다. 기본적인 지식을 가지고 있지만, 그것이 할 수있는 것을 더 알고 싶었습니다. 그래서 나는 자아가 요구 사항 세트를 만들고,이를 분석하고, 기본 프레임 워크로 Eclipse RCP를 사용하여 충족 될 수있는 방법에 대한 설계 결정을 내리고 결국 Eclipse RCP로 구현하도록 권장했습니다. 이제 요구 사항이 너무 어렵거나 Eclipse RCP에 대해 아직 이해하지 못하지만 요구 사항을 충족하기 위해 적절한 솔루션을 제시하기 위해 고군분투하고 있습니다!

다음은 요구 사항에 대한 요약입니다 (세부 사항이 부족한 가능성을 실례합니다. 이것은 실제로 나 자신을 격려하기위한 몇 가지 예일뿐입니다).

일부 서버를 모니터링하기 위해 Eclipse RCP 응용 프로그램을 원했습니다. 이 서버는 처음에 응용 프로그램이 알고있는 프로그램이 될 것입니다 (즉, INS 및 아웃에 대해 정확히 알고 있음). 그러나 향후 애플리케이션은 사용자가 응용 프로그램이 모니터링 할 수있는 다른 차량 장애가있는 임의의 프로그램을 지정할 수 있어야합니다 (따라서 알려진 서버뿐만 아니라 이전에 알지 못했던 다른 서버). 응용 프로그램에는 모니터링 해야하는 서버의 모든 세부 사항 (예 : 호스트, 포트, 사용자 이름 및 비밀번호)이 포함 된 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>

응용 프로그램이 알고있는 서버는 어디에 있습니까?

소스 코드에는 다음과 같은 클래스 계층이 있습니다.

구성 요소 <--- 서버 <--- Servera, ServerB

Servera 및 ServerB는 각각 서버와 맵 및 요소에서 내려갑니다.

구성의 포인트 항목은 Servera 목록과 ServerB 목록이 포함 된 Configuration이라는 클래스에 있습니다. 이제 응용 프로그램이 알지 못하는 다른 프로그램을 모니터링 할 수 있어야하므로 XML 구성 파일도 확장 가능해야하므로 구성 클래스에는 사용자가 지정한 다른 구성 요소에 맵핑하는 객체 목록도 포함되어 있습니다. 구성 파일.

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은 응용 프로그램이 모니터링 해야하는 사용자 정의 프로그램의 확장 지점과 확장을 지정하는 데 사용됩니다. 그렇다면 결국 사용자 정의 프로그램의 경우 사용자가 플러그인 .xml에서 확장자로 구성한 다음 구성 파일에 다른 세부 사항을 지정해야한다는 의미입니까?

도움이 되었습니까?

해결책

이 문제에 접근하는 방법에는 여러 가지가 있습니다. 그러나 나는 그것에 총을 줘서하겠습니다.

모니터링 특성이 다른 여러 서버가 있습니다. 그러나 일식 응용 프로그램의 경우 모두 비슷하게 보일 것입니다.

서버를 모니터링하기 위해 일부 UI가 포함 된 Eclipse RCP 응용 프로그램이 있다고 가정 해 봅시다. 이 응용 프로그램의 경우 서버가 실제로 무엇인지는 중요하지 않지만 연결하려면 공통 인터페이스가 있어야합니다.

한 가지 가능성은 서버 통신 프로토콜을 나타내는 인터페이스가 있고, 메인 플러그인의 확장 지점을 정의하여 프로토콜의 구현을 제공 할 수 있습니다. 그러면 일부 인터페이스 인스턴스 모음을 만들 수 있습니다 (ImonitoringProtocol이라고 부릅니다). 이 인터페이스에는 UI에 상태를 표시하는 데 필요한 메소드가 포함됩니다.

또한 모든 서버를 나열하는 XML 구성 파일이 있습니다. 이 구성 파일의 요소 중 하나는 모니터링에 사용할 프로토콜입니다.

따라서 응용 프로그램을 시작하면 모든 기여한 프로토콜을 인스턴스화하고 구성 파일을 읽습니다. 그런 다음 구성 항목과 일치하여 서버에 통신 할 올바른 프로토콜을 찾을 수 있습니다.

이를 통해 미래에 아직 알려지지 않은 서버에 새로운 프로토콜을 추가 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top