2014-11-02 1 views
1

Я пытаюсь создать простой таймер в EJB3, пример взят из: http://www.adam-bien.com/roller/abien/entry/simplest_possible_ejb_3_16таймера EJB3 теперь работает в Wildfly сервере

Я создал динамический веб-проект в затмении в и добавил следующий код. Я не вижу никакого выхода

import javax.ejb.Schedule; 
import javax.ejb.Stateless; 

@Stateless 
public class ShowCurrentTime { 

    @Schedule(second="*/1", minute="*",hour="*") 
    public void showTime() { 
     System.out.println("Time : " + System.currentTimeMillis()); 
    } 

} 

Это также не работает в моей Maven проект, в котором была добавлена ​​следующая зависимость:

<dependency> 
    <groupId>org.jboss.spec.javax.ejb</groupId> 
    <artifactId>jboss-ejb-api_3.1_spec</artifactId> 
    <scope>provided</scope> 
</dependency> 

Что мне не хватает?

Редактировать: Обновлен мой код import javax.annotation.PostConstruct; импорт javax.ejb.Schedule; импорт javax.ejb.Singleton; импорт javax.ejb.Startup;

@Singleton 
@Startup 
public class ShowCurrentTime { 

    @Schedule(second="*/1", minute="*", hour="*", persistent = false) 
    public void showTime() { 
     System.out.println("Time : " + System.currentTimeMillis()); 
    } 

    @PostConstruct 
    public void applicationStartup() { 
     showTime(); 
    } 

} 

Все, что я вижу в выходе начальная печать 00: 48: 15150 INFO [стандартный вывод] (ServerService бассейн Thread - 882) Время: 1414903695150

00:48:15,167 INFO [org.wildfly.extension.undertow] (MSC service thread 1-7) JBAS017534:  Registered web context: /Test-DWP 
00:48:15,202 INFO [org.jboss.as.server] (DeploymentScanner-threads - 2) JBAS018565: Replaced deployment "Test-DWP.war" with deployment "Test-DWP.war" 

Edit: Изменение к Singleton и очистка каталога развертывания и повторное развертывание приложения.

ответ

3

Существует тонкое, но важное различие между вашим примером и примером, представленным Адамом.

Его пример использует @Singleton EJB, а ваш @Stateless.

Разница означает, что пример Адама начнется сам, тогда как ваш не начнется, пока вы не создадите его экземпляр.

3

Для людей, посещающих это сообщение в 2017 году. Я только что реализовал эту функцию в Wildfly 10, используя @Stateless, и она работает, как и следовало ожидать от поведения EJB.

Пример:

@Stateless 
public class SchedulerInvoice { 

@Schedule(dayOfWeek = "*", hour = "*", minute = "*/2", second = "0", persistent = false) 
public void invoiceJobHourly() { 
    System.out.println("====================== INVOICE JOB START ======================="); 
    System.out.println("====================== INVOICE JOB END ======================="); 
    } 
}