2013-02-20 1 views
2

OSGi 프레임 워크에서 이벤트를 관리하기 위해 Java 응용 프로그램을 개발 중입니다.블랙리스트 ServiceReference

WARNING: EventAdmin: Blacklisting ServiceReference [[org.osgi.service.event.EventHandler] | Bundle(Scheduler [1])] due to timeout! 

난은 OSGi 서버의 속성을 통해 문제를 해결할 수 알고 : 그러나, 나는 다음과 같은 경고가 있습니다. 그러나 코드를 통해 문제를 해결하고 싶습니다. 그러나이 문제를 피하기 위해 Java 클래스에서 Event Handler를 어떻게 관리해야하는지 모르겠습니다. 어느 누구도이 문제에 대해 저를 도울 수 있습니까?

미리

답변

4

아주 나쁜보고 문제에 대단히 감사 이벤트 핸들러가 호출되고 반환하지 않습니다.

그래서이 핸들러가 이벤트 메소드에서 리턴되지 않는 이유를 알아내는 유일한 방법이 있습니다. 반환하지 않는 객체는 ServiceReference에 의해 식별됩니다.

+0

나는 디버깅 할 때 이런 경향이있다. 'EventHandler'에 중단 점을 넣으면 시간 초과 (크고, 어리 석고 느린 인간이됩니다!) 블랙리스트에 올 것임을 거의 확신합니다. 이러한 시나리오의 경우 구성을 통해 시간 제한을 비활성화 할 수 있지만 'EventHandler'가 실제로 즉시 반환되기 때문에 프로덕션 환경에서 그대로 두는 것은 좋지 않습니다. –

2

난 당신이 시간의 합리적인 금액 확인 EventHandler의 반환해야 베드로 동의 (백그라운드 스레드에서 추가 작업의 발로에 의해 예를.) 그러나

, 가끔 블랙리스트 해제하는 것이 유용 할 수 있습니다, (Neil 주에서와 같이)

오류 메시지에서 판단하면 Felix Event Admin을 사용하고 있습니다. 이는 프레임 워크 등록 정보와 config admin 모두에 응답합니다.

  • 당신은 블랙리스트를 사용하지 않도록 시스템 프로퍼티 org.apache.felix.eventadmin.Timeout=0을 설정하거나
  • 당신은 PID org.apache.felix.eventadmin.impl.EventAdmin 사용하여, 동일한 속성을 설정하는 구성 관리자를 사용할 수 있습니다. 디버그 및 릴리스 빌드에 대해 서로 다른 구성으로 실행하는 경우 이것이 가능한 방법 일 수 있습니다.
관련 문제