2012-11-18 5 views
1

Eclipse 4 응용 프로그램 플랫폼을 기반으로 RCP 응용 프로그램을 개발 중입니다. 내 응용 프로그램은 선언적 서비스로 구현 된 여러 개의 OSGi 번들로 구성됩니다. 이제는 내 응용 프로그램에서 아주 잘 사용할 수있는 IEventBroker 서비스를 사용하고 싶습니다.osgi 번들에서 Eclipse 4 IEventBroker 사용

그러나 내 별도의 번들에 IEventBroker 서비스를 사용할 수 있습니까?

@Inject IEventBroker eventBroker; 

을 또한 작동하지 않습니다 내 클래스의 생성자에서 서비스를 주입 : 필드와 서비스가 작동하지 않습니다 주입

@Inject 
public TestUserService(IEventBroker eventBroker) { 
.. 
} 

(가) eventBroker을 주입하는 것은 NULL 때마다입니다. 일반적으로 자신의 OSGi 번들에서 IEventBroker의 사용이 가능합니까? 내 번들에 필요한 플러그인을 추가해야합니까? OSGi 번들에 이러한 서비스를 제공하는 또 다른 방법이 있습니까?

+0

가능한 [선언적 서비스를 통한 Eclipse RCP 4 사용 번들] (http : // stackoverflow.com/questions/13435524/eclipse-rcp-4-use-bundle-declarative-service) –

+2

질문을 다시 게시하지 마십시오. 기본적으로 모두 동일한 세 가지 질문이 있습니다. 적어도 다른 사람들이 컨텍스트를 볼 수 있도록 이전 질문에 연결하십시오. –

답변

1

순수한 번들에는 @Inject가 작동하지 않습니다. Activator 나 Blueprint 나 DS와 같은 의존성 주입 메커니즘 중 하나를 사용해야합니다.

IEventBorker를 위의 메커니즘 중 하나를 사용하여 OSGi 서비스로 찾아서 클래스에 삽입하십시오.

1

나는이 질문에 대답하는 것이 조금 늦다는 것을 알고있다. 그러나 나는 그것에 대해서 너무 고심하고 있었다. Tom Schindel (e(fx)clipse) 및 Lars vogel (vogella turials, 예 : the EventAdmin tutorial)의 도움으로 문제를 해결할 수있었습니다.

나중에 suggested an update of this tutorial 라스에, 그는 자신의 튜토리얼에 내 결과를 통합 할 수 있다는 단기적으로

을 (그는 이미하지만, 그것을 그랬다면 나도 몰라), 다음 추가을 통합해야

  • org.eclipse.e4.core.contexts
  • org.eclipse.e4.ui.servi : 프로그램에 번들 (다른 사람에 대한 라스 보겔의 튜토리얼을 참조)

    @Inject handleSomething(@Optional @EventTopic("foo") Object bar) {...} 
    

    대신

    @Inject @Optional handleSomething(@UIEventTopic("foo") Object bar) {...} 
    
    : CES
  • 는 org.eclipse.e4.ui.di

은 또한, 나는 방법 주석에게 조금을 잡기 이벤트를 변경해야

JavaFX보다 e4를 사용하고 싶지 않았으므로 여전히 필요합니다. se UIEventTopic, 나는 평범한 EventTopic으로 전환해야했다. 제한 경고가 발생했다. :-(

나는 아직도 당신이 그것에 interessted하고 그것을 사용할 수 있기를 희망한다!

+0

나는 e (fx) 클립을 사용하고 있으며, 번들을 추가 한 후에도 동일한 문제에 직면하고 있습니다. IEventBroker를 사용하려고하는 번들에 필요한 번들로 추가됩니다. 그러나 브로커는 항상 null입니다. 당신이 수업에서 주사를 사용할 수 있도록 다른 어떤 일을 했습니까? –

관련 문제