2015-01-16 4 views
1

У меня проблема с попыткой включить Hk2 Events в джерси.Как включить HK2 TopicDistributionService в джерси 2.15?

ResourceConfig:

import org.glassfish.hk2.utilities.TopicDistributionModule; 

public class Application extends ResourceConfig { 
    public Application() throws IOException { 
     super(Application.class); 
     register(TopicDistributionModule.class); 
    } 
} 

Ресурс:

@Path("/") 
public class MainResource { 
    @Inject 
    private Topic<MyClass> myClassTopic; 

    @GET 
    @Produces(MediaType.TEXT_HTML) 
    public String index() { 
     return "index"; 
    } 
} 

И я получаю ошибку:

java.lang.IllegalStateException: There is no implementation of the TopicDistributionService to distribute the message 
    at org.jvnet.hk2.internal.TopicImpl.publish(TopicImpl.java:79) ~[hk2-locator-2.3.0.jar:?] 
    at ... MainResource.index(MainResource.java:21) ~[classes/:?] 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_20] 
+0

Часть hk2 выглядит нормально. Это должно быть все, что вам нужно сделать, чтобы ваши темы работали. Вы можете попробовать этот https://hk2.java.net/2.4.0-b08/apidocs/org/glassfish/hk2/utilities/ServiceLocatorUtilities.html#dumpAllDescriptors%28org.glassfish.hk2.api.ServiceLocator%29 в своем MainResource (введите ServiceLocator, а затем запустите этот метод в @PostConstruct), чтобы увидеть, есть ли ожидаемые службы – jwells131313

ответ

0

TopicDistributionModule является AbstractBinder, что из моего понимания должен быть зарегистрирован в качестве экземпляра , а не по классу. Это

register(new TopicDistributionModule()); 

должен избавиться от исключения, как зарегистрировать по умолчанию TopicDistributionService. Оттуда просто нужно убедиться, что у вас есть «живой» абонент, когда вы публикуете событие/сообщение

Смежные вопросы