2017-07-14 2 views

Antwort

0

Sie müssen @ Timeout, @Singleton, @Startup und @ConcurrencyManagement

@Singleton(name = "...", mappedName = "") 
@Startup 
@ConcurrencyManagement(ConcurrencyManagementType.BEAN) // this is threadsafe!!! 
public class ....... 

Injizieren Sie die TimerService- zur Konfiguration

@Resource 
private TimerService timerService; 

Injizieren Sie die EntityManager für db-Zugang

@PersistenceUnit(..) 
private EntityManager entityManager 
verwenden könnte,

Verwenden Sie @Timeout anstelle von @Schedule

@Timeout 
void timer() { .... } 

Konfigurieren Sie den Timer

@PostConstruct 
void postConstruct() { 
    entityManager.createQuery(....); 
    . 
    . 
    timerService.createIntervalTimer(....); 
} 

außer Nutzung von EntityManager, funktioniert dies auf unserer Seite.

+0

ich möchte nicht meine Klasse singleton.As sollte mehrere Threads für meine Anwendung zulassen. –

+0

Mit @ConcurrencyManagement (ConcurrencyManagementType.BEAN) können Sie verhindern, dass ejb den exklusiven Zugriff auf Methoden behandelt. Dann müssen Sie selbst die mögliche Verwendung von mehreren Threads behandeln. – aschoerk

Verwandte Themen