2013-12-14 4 views
0

Я только что получил следующую проблему и не могу понять ответ:@ServerEndpoint может быть EJB, но не может быть простым CDI bean?

@ServerEndpoint("/websocket/server") 
public class ServerUpdateEndpoint implements Serializable { 
    [email protected], OnMessage OnClose annoted methods, works fine... 

    @PostConstruct 
    public void start() { 
     logger.log(Level.INFO, "ServerUpdateEndpoint start"); 
    } 

    @PreDestroy 
    public void stop() { 
     logger.log(Level.INFO, "ServerUpdateEndpoint stop"); 
    } 

} 

Когда я аннотирования этот класс @Named обратные вызовы жизненного цикла @PostConstruct, @PreDestroy никогда не запускается на выполнение.

Когда я комментирую это с помощью @Singleton, он отлично работает.

Может ли кто-нибудь объяснить, в чем проблема с обычными аннотациями CDI здесь?

ответ

1

Это определенно может содержать только аннотации CDI. Вам нужно будет аннотировать его @ApplicationScoped и убедиться, что клиент подключается к конечной точке. Вы давали ему возможность, когда вы добавили @Named?

+0

Вы правы, совершенно забыл о @ApplicationScoped – execc

+0

На tomEE не приста когда аннотацию @ApplicationScoped, но прекрасно работает с EJB аннотации –

+0

@TomaszGawel, что звучит как конкретный вопрос TomEE. Вот почему это было приостановлено? –

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