OSGi와 그와 관련된 모든 것들에 대해 상당히 익숙하다.OSGi 서비스로 기존 애플리케이션을 수정하는 Java/OSGi
점프 : 리스너 목록을 유지하는 서버 클래스가 있는데 리스너는 위에서 언급 한 목록에 리스너를 넣는 메서드 (register(this)
)를 통해 자신을 등록 할 수 있습니다. 모든 수신기는 서버 클래스 물론 리스너 인터페이스) :
public void register(ServerListener listener) {
if(theListeners == null)
theListeners = new ArrayList<ServerListener>();
theListeners.add(listener);
}
ServerListener
인터페이스입니다 :
public interface ServerListener {
public void update(JsonObject data);
}
이제 서버 클래스가통해 수시로 새 데이터로 청취자를 제공합니다방법.
public void updateListeners() {
new Thread() {
public void run() {
for(ServerListener l : theListeners) {
l.update(jsonObject);
}
}
}.start();
}
지금, 나는 OSGi 프레임 워크 (Knopflerfish)에서 서비스 번들로 서버 클래스를 수정하려는. 나는 그것에 익숙하지 않다. 저는 재미있게 놀고 싶지만, 지금하고있는 방식대로 작동하지 않습니다. 청취자는 실제로 ServerListener
인터페이스를 구현해야한다는 것을 모릅니다. 따라서 서버는 인터페이스를 통해 등록 할 수 없습니다.
문제는 데이터를 푸시하는 것이지 클라이언트를 당겨서 푸시하지 않는 것입니다 (이해하기 쉽습니다). 누가 내 가난한 설명을 이해하는 사람이 올바른 방향으로 나를 가리킬 수 있습니까? 여기
"청취자 ServerListener 인터페이스를 구현해야한다는 것을 모릅니다. " 그걸 어떻게 부르죠? 현재 구현에서 – Thilo
은 인터페이스를 구현하는 리스너가 작동합니다. 클라이언트 구현을 가진 다른 개발자가 서버에서 데이터를 가져 오려면 어떻게 든 serverlistener 인터페이스를 구현해야합니다 (맞습니까?).하지만 해당 인터페이스를 어디에 지정해야합니까? 서버 번들에서 올바른 위치가 아닐 수도 있습니다. 이런 종류의 일반 인터페이스와 클래스가 지정되어있는 코어 번들과 같은 것이 필요합니까? 하지만 어쨌든 새 클라이언트는 다른 번들에 지정된 인터페이스에도 액세스하지 못합니다. 맞습니까? – nyyrikki