2010-02-02 19 views
7

हमारे पास जेबॉस 5.1.0.GA एप्लिकेशन में एक टाइमर सेवा ट्रिगर किया गया कार्य है और समस्या यह है कि हम लेन-देन का समय बदल नहीं सकते हैं। यह लंबे ल्यूसीन इंडेक्सिंग डिफ़ॉल्ट 300 सेकंड की सीमा से अधिक समय ले सकता है।जेबॉस लेनदेन टाइमआउट सेटिंग?

प्रश्न यह है कि टाइमआउट मान को कैसे बदला जाए, कार्यकर्ता विधि में @ ट्रान्सएक्शनटाइमआउट (1800) जोड़ना या कक्षा का कोई प्रभाव नहीं पड़ा।

संपादित करें: तैनाती/लेन-देन jboss-beans.xml में सेट करने से ठीक काम करता है:

<property name="transactionTimeout">1800</property> 

लेकिन एनोटेशन या तो टाइमर शुरू करेंगे या सामान्य राज्यविहीन EJBs पर प्रभाव है प्रतीत नहीं होता।

+0

'@ लेनदेनटाइमआउट 'एक मानक जावाईई एनोटेशन नहीं है ... यह कहां से है? – skaffman

+1

यह एक जेबॉस विशिष्ट एनोटेशन है। –

उत्तर

1

TransactionTimeout क्या यह एक एमडीबी है? उनके पास एक अलग टिप्पणी है। यह लिंक कॉन्फ़िगरेशन फ़ाइलों पर कोड के माध्यम से ट्रांसलेशन टाइमआउट को सेट करने के लिए विभिन्न विकल्प प्रदान करता है।

1

आप मैन्युअल रूप से टाइमआउट अवधि घोषित कर सकते हैं और सत्र बीन में टाइमर बना सकते हैं।

public void createTimer(String timerName) { 
    //... 
    sessionContext.getTimerService().createTimer(timeLongValue, timerName); 
    //... 
} 

@Timeout 
public void timeOutHandler(Timer timer){ 
    // code 
} 
2

jboss-service.xml में इस सेट करके देखें::

<!-- JBoss Transactions JTA --> 
    <mbean code="com.arjuna.ats.jbossatx.jta.TransactionManagerService" 
     name="jboss:service=TransactionManager"> 
     <attribute name="TransactionTimeout">120</attribute> <!-- timeout in seconds--> 
     <attribute name="ObjectStoreDir">${jboss.server.data.dir}/tx-object-store</attribute> 
    </mbean> 

यह एक सर्वर आधारित विन्यास, इसलिए देखने

नीचे मेरी स्टेटलेस बीन की नमूना कोड है conf/jboss-service.xml आपकी सर्वर निर्देशिका के तहत।

7

मैं जेबीओएस 5.1.0.जीए के साथ ईजेबी 3 का उपयोग कर रहा हूं और JBOSS_HOME/deploy/transaction-jboss-beans.xml में यह मान सफलतापूर्वक सेट कर चुका हूं।

डिफ़ॉल्ट <property name="transactionTimeout">300</property>

0

में 300 था <blocking-timeout-millis> element.This तत्व में लेन-देन का समय समाप्त निर्दिष्ट करें, जबकि एक कनेक्शन के लिए और एक अपवाद प्रदर्शित करने से पहले इंतजार कर रहे एक सौदे को ब्लॉक करने के मिलीसेकेंड में अधिक से अधिक समय इंगित करता है। यह ब्लॉक केवल कनेक्शन के लिए परमिट की प्रतीक्षा करते समय ही अवरुद्ध करता है, और एक नया कनेक्शन बनाने में अपवाद प्रदर्शित नहीं करता है जो असाधारण लंबे समय तक लेता है।

<subsystem xmlns="urn:jboss:domain:datasources:4.0"> 
      <datasources> 
       <datasource jndi-name="java:jboss/xyz" pool-name="abc" enabled="true" use-java-context="true"> 
        <connection-url>jdbc:sqlserver://xx.xx.xxx.xxx:1433;databaseName=xxxx</connection-url> 
        <driver>SQLServerDriver</driver> 
        <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation> 
        <pool> 
         <min-pool-size>50</min-pool-size> 
         <max-pool-size>150</max-pool-size> 
         <prefill>false</prefill> 
        </pool> 
        <security> 
         <user-name>xxx</user-name> 
         <password>xxx</password> 
        </security> 
        <timeout> 
         <blocking-timeout-millis>36000</blocking-timeout-millis> 
        </timeout> 
       </datasource> 
       <datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="ExampleDS" enabled="true" use-java-context="true"> 
        <connection-url>jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE</connection-url> 
        <driver>h2</driver> 
        <security> 
         <user-name>sa</user-name> 
         <password>sa</password> 
        </security> 
       </datasource> 
       <drivers> 
        <driver name="SQLServerDriver" module="com.microsoft.sqlserver"> 
         <xa-datasource-class>com.microsoft.sqlserver.jdbc.SQLServerDataSource</xa-datasource-class> 
        </driver> 
        <driver name="h2" module="com.h2database.h2"> 
         <xa-datasource-class>org.h2.jdbcx.JdbcDataSource</xa-datasource-class> 
        </driver> 
       </drivers> 
      </datasources> 
     </subsystem> 
0

Jboss से संबंधित नहीं है, लेकिन आप com.arjuna.ats.arjuna.coordinator.defaultTimeout = 60 संपत्ति के माध्यम से अर्जुन लेनदेन समाप्ति सेट कर सकते हैं।

संबंधित मुद्दे