2012-05-01 18 views
6

का उपयोग कर चलने वाला शेड्यूल कोई भी जानता है कि जेबॉस एएस 7 पर @ शेड्यूल एनोटेशन कार्य कैसे करें?जेबॉस एएस 7.1 - @ शेड्यूल एनोटेशन

मुझे पता है कि ग्लासफ़िश-3.1.2 पर यह बॉक्स के बाहर काम करता है।

https://community.jboss.org/message/623574

:;)

मैं इन मंच धागे की जाँच की, लेकिन कुछ भी मदद करता है

@ManagedBean 
@Stateless(name="ImportStatementSchedule") 
public class ImportStatementSchedule implements Serializable{ 
private Logger _log = Logger.getLogger(this.getClass()); 

    @Schedule(minute="*") 
    public void executeImport(){ 
     _log.info("Scheduled task started"); 
    } 

} 

मैं लॉग संदेश हर मिनट, लेकिन कुछ भी प्राप्त की उम्मीद:

मैं यह कोशिश https://community.jboss.org/message/621893

https://community.jboss.org/message/637567

एक JBoss 7.1.1-फाइनल

शायद मैं कुछ भूल गया के रूप में है, तो कृपया किसी को भी सही तरीके से करने के लिए मुझसे बात कर सकते हैं?

अद्यतन:

मुझे पता है कि JBoss JNDI करने के लिए अपने EJB रजिस्टर:

11:07:05,548 INFO [org.jboss.as.ejb3.deployment.processors.EjbJndiBindingsDeploymentUnitProcessor] (MSC service thread 1-6) JNDI bindings for session bean named ImportStatementSchedule in deployment unit deployment "finadv.war" are as follows: 

    java:global/finadv/ImportStatementSchedule!finadv.bean.ImportStatementSchedule 
    java:app/finadv/ImportStatementSchedule!finadv.bean.ImportStatementSchedule 
    java:module/ImportStatementSchedule!finadv.bean.ImportStatementSchedule 
    java:global/finadv/ImportStatementSchedule 
    java:app/finadv/ImportStatementSchedule 
    java:module/ImportStatementSchedule 

UPDATE2

के रूप में टिप्पणी

+3

इस सूत्र देखें, विशेष रूप से "घंटा" पैरामीटर: http://stackoverflow.com/questions/10246606/java-ee-scheduler- –

+1

कॉल पैरामीटर सेट करके हल की गई समस्या है। हालांकि, मैंने @Schedule (मिनट = "18", घंटा = "15") जैसे सटीक मानों के साथ पहले कोशिश की लेकिन कुछ भी नहीं होता। धन्यवाद। अच्छे संदर्भ के लिए – rkosegi

उत्तर

6

टाइमर सेवा में उल्लेख किया है यह हल किया गया है ईजेबी सेवा है। ImportStatementSchedule@Stateless या @Singleton सत्र बीन होना चाहिए। ईजेबी 3.1 विशिष्टता से, धारा 18.2:

स्वचालित रूप से बनाए गए टाइमर के लिए, टाइमआउट विधि अनुसूची एनोटेशन के साथ एनोटेटेड विधि हो सकती है। टाइमर स्टेटलेस सत्र बीन्स, सिंगलटन सत्र सेम, मेस-ऋषि संचालित बीन्स, और 2.1 इकाई सेम के लिए बनाया जा सकता है। राज्य सत्र सत्र बीन्स के लिए टाइमर नहीं बनाया जा सकता है।

INFO लॉग कथन भ्रामक है। जेबॉस एक ईजेबी पंजीकृत नहीं करता है।

[..] प्रबंधित बीन के नाम एक जावा ईई मॉड्यूल के भीतर अद्वितीय होना चाहिए: यह सिर्फ एक ही नामकरण योजना के रूप में @ManagedBean एनोटेशन (जावाडोक) द्वारा परिभाषित उपयोग करता है। प्रत्येक नामित प्रबंधित बीन के लिए, जावा ईई कंटेनरों को ईजेबी घटकों के लिए उपयोग की जाने वाली वही नामकरण योजना का उपयोग करके, जेएनडीआई में निम्नलिखित प्रविष्टियां उपलब्ध करनी होंगी। आवेदन नाम स्थान में:

java:app/<module-name>/<bean-name>

मॉड्यूल प्रबंधित बीन युक्त मॉड्यूल नाम स्थान में:

java:module/<bean-name>

+0

+1, लेकिन मैंने स्टेटलेस या सिंगलटन एनोटेशन दोनों से पहले कोशिश की, अब मुझे पता है कि समस्या घंटे के पैरामीटर में उल्लिखित @ निक विल्सन के रूप में थी। – rkosegi

+0

thx, @rkosegi। क्या इसका मतलब यह है कि आप '@ स्टेटलेस' या 'सिंगलटन' का उपयोग किए बिना' @ अनुसूची 'का उपयोग कर सकते हैं? – kraftan

+0

नहीं, इसका मतलब है कि जब तक मैं "*" पर घंटा पैरामीटर सेट नहीं करता तब तक मैं इसे तब तक काम नहीं कर पाया। वर्तमान में मैं स्टेटलेस एनोटेशन का उपयोग कर रहा हूं और यह काम करता है। – rkosegi

4

मैं, जोड़ सकते हैं कि यदि आप लिखना

@Schedule(minute="*")

यह केवल आधी रात को आग लग जाएगा। क्योंकि घंटे पैरामीटर डिफ़ॉल्ट है: ।

कोशिश करें: @Schedule(minute = "/1", hour = "") या ऐसा कुछ। मेरे मामले में यह मदद की।

0

आप घंटे का विवरण देना चाहिए की कोशिश:

@Schedule(hour="\*", minute="\*") 
संबंधित मुद्दे