0 Replies Latest reply on Mar 24, 2012 11:51 AM by carmelo

    Can I configure timer not persistent?

    carmelo

      Hi all,

      I don't want to enable the persistence for timers so, is possible in jboss 7.1.1 Final?

       

      My original configuration for ejb subsystem was

       

      <subsystem xmlns="urn:jboss:domain:ejb3:1.2">

                  <session-bean>

                      <stateless>

                          <bean-instance-pool-ref pool-name="slsb-strict-max-pool"/>

                      </stateless>

                      <stateful default-access-timeout="5000" cache-ref="simple" clustered-cache-ref="clustered"/>

                      <singleton default-access-timeout="5000"/>

                  </session-bean>

                  <mdb>

                      <resource-adapter-ref resource-adapter-name="hornetq-ra"/>

                      <bean-instance-pool-ref pool-name="mdb-strict-max-pool"/>

                  </mdb>

                  <pools>

                      <bean-instance-pools>

                          <strict-max-pool name="slsb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>

                          <strict-max-pool name="mdb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>

                      </bean-instance-pools>

                  </pools>

                  <caches>

                      <cache name="simple" aliases="NoPassivationCache"/>

                      <cache name="passivating" passivation-store-ref="file" aliases="SimpleStatefulCache"/>

                      <cache name="clustered" passivation-store-ref="infinispan" aliases="StatefulTreeCache"/>

                  </caches>

                  <passivation-stores>

                      <file-passivation-store name="file"/>

                      <cluster-passivation-store name="infinispan" cache-container="ejb"/>

                  </passivation-stores>

                  <async thread-pool-name="default"/>

                 <timer-service thread-pool-name="default">

                      <data-store path="timer-service-data" relative-to="jboss.server.data.dir"/>

                  </timer-service>

                  <remote connector-ref="remoting-connector" thread-pool-name="default"/>

                  <thread-pools>

                      <thread-pool name="default">

                          <max-threads count="10"/>

                          <keepalive-time time="100" unit="milliseconds"/>

                      </thread-pool>

                  </thread-pools>

                  <iiop enable-by-default="false" use-qualified-name="false"/>

              </subsystem>

       

      I don't want to enable the persistence for the timers so I checked the jboss-as-ejb3_1_2.xsd located into boss-as-7.1.1.Final/docs/schema/ directory and i noticed that i can remove the <data-store> tag from

      my configuration :

       

      <subsystem xmlns="urn:jboss:domain:ejb3:1.2">

                  <session-bean>

                      <stateless>

                          <bean-instance-pool-ref pool-name="slsb-strict-max-pool"/>

                      </stateless>

                      <stateful default-access-timeout="5000" cache-ref="simple" clustered-cache-ref="clustered"/>

                      <singleton default-access-timeout="5000"/>

                  </session-bean>

                  <mdb>

                      <resource-adapter-ref resource-adapter-name="hornetq-ra"/>

                      <bean-instance-pool-ref pool-name="mdb-strict-max-pool"/>

                  </mdb>

                  <pools>

                      <bean-instance-pools>

                          <strict-max-pool name="slsb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>

                          <strict-max-pool name="mdb-strict-max-pool" max-pool-size="20" instance-acquisition-timeout="5" instance-acquisition-timeout-unit="MINUTES"/>

                      </bean-instance-pools>

                  </pools>

                  <caches>

                      <cache name="simple" aliases="NoPassivationCache"/>

                      <cache name="passivating" passivation-store-ref="file" aliases="SimpleStatefulCache"/>

                      <cache name="clustered" passivation-store-ref="infinispan" aliases="StatefulTreeCache"/>

                  </caches>

                  <passivation-stores>

                      <file-passivation-store name="file"/>

                      <cluster-passivation-store name="infinispan" cache-container="ejb"/>

                  </passivation-stores>

                  <async thread-pool-name="default"/>

                 <timer-service thread-pool-name="default"/>

                  <remote connector-ref="remoting-connector" thread-pool-name="default"/>

                  <thread-pools>

                      <thread-pool name="default">

                          <max-threads count="10"/>

                          <keepalive-time time="100" unit="milliseconds"/>

                      </thread-pool>

                  </thread-pools>

                  <iiop enable-by-default="false" use-qualified-name="false"/>

              </subsystem>

       

      The server starts successfully , it prints only :

       

      JBAS014775:New missing/unsatisfied dependencies:

      service jboss.ejb3.timerService.dataPath (missing) dependents: [service jboss.ejb3.timerService.fileTimerPersistence]

       

       

      but when I create a timer the following error occurs :

       

      .......................

      Caused by: javax.ejb.EJBException: java.lang.UnsupportedOperationException: The timer service has been disabled. Please add a <timer-service> entry into the ejb section of the server configuration to enable it.

              at org.jboss.as.ejb3.tx.CMTTxInterceptor.handleExceptionInOurTx(CMTTxInterceptor.java:166)

              at org.jboss.as.ejb3.tx.CMTTxInterceptor.invokeInOurTx(CMTTxInterceptor.java:230)

              at org.jboss.as.ejb3.tx.CMTTxInterceptor.requiresNew(CMTTxInterceptor.java:333)

              at org.jboss.as.ejb3.tx.SingletonLifecycleCMTTxInterceptor.processInvocation(SingletonLifecycleCMTTxInterceptor.java:56)

              at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]

              at org.jboss.as.ejb3.component.interceptors.CurrentInvocationContextInterceptor.processInvocation(CurrentInvocationContextInterceptor.java:41)

              at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]

              at org.jboss.as.ee.component.TCCLInterceptor.processInvocation(TCCLInterceptor.java:45)

              at org.jboss.invocation.InterceptorContext.proceed(InterceptorContext.java:288) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]

              at org.jboss.invocation.ChainedInterceptor.processInvocation(ChainedInterceptor.java:61) [jboss-invocation-1.1.1.Final.jar:1.1.1.Final]

              at org.jboss.as.ee.component.BasicComponent.constructComponentInstance(BasicComponent.java:161)

              ... 9 more

      Caused by: java.lang.UnsupportedOperationException: The timer service has been disabled. Please add a <timer-service> entry into the ejb section of the server configuration to enable it.

              at org.jboss.as.ejb3.timerservice.NonFunctionalTimerService.<clinit>(NonFunctionalTimerService.java:40)

              at org.jboss.as.ejb3.component.EJBComponentDescription.<init>(EJBComponentDescription.java:172)

              at org.jboss.as.ejb3.component.session.SessionBeanComponentDescription.<init>(SessionBeanComponentDescription.java:131)

              at org.jboss.as.ejb3.component.singleton.SingletonComponentDescription.<init>(SingletonComponentDescription.java:87)

              at org.jboss.as.ejb3.deployment.processors.SessionBeanComponentDescriptionFactory.processSessionBeans(SessionBeanComponentDescriptionFactory.java:151)

              at org.jboss.as.ejb3.deployment.processors.SessionBeanComponentDescriptionFactory.processAnnotations(SessionBeanComponentDescriptionFactory.java:98)

              at org.jboss.as.ejb3.deployment.processors.AnnotatedEJBComponentDescriptionDeploymentUnitProcessor.processAnnotations(AnnotatedEJBComponentDescriptionDeploymentUnitProcessor.java:58)

              at org.jboss.as.ejb3.deployment.processors.AbstractDeploymentUnitProcessor.deploy(AbstractDeploymentUnitProcessor.java:81)

              at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.1.Final.jar:7.1.1.Final]

       

      ....................

       

      Another information about this issue... I attempt to create the timer in @PostConstruct of Singleton marked  with @Startup annotation and I access to TimerService by @Resource injection in Singleton.

       

       

      So I have a doubt... Maybe a cannot disable the persistence for the timer?

       

      Thanks in advance.