Newsgroup: it.comp.java
Titolo: J2EEBean & Timer

Salve a tutti,
innanzitutto scusate la lunghezze del post..
Dunque, ho la necessità di utilizzare un timer all'interno di un bean 
(per lo sviluppo dell'applicazione uso JBoss 3.2.5 e J2EE 1.4).
Guardando diversi esempi in rete ho trovato quello che cercavo, e a 
quanto pare è anche semplice.. basta infatti implementare un'interfaccia 
(javax.ejb.TimedObject) e ridefinire il relativo metodo ejbTimeout(), 
mettendo il codice da eseguire alla scadenza del timer proprio dentro 
quel metodo.
http://publib.boulder.ibm.com/infocenter/wasinfo/v6r0/topic/com.ibm.websphere.base.doc/info/aes/ae/rejb_timerex.html
http://www.theserverside.com/articles/article.tss?l=MonsonHaefel-Column4
Ho provato quindi a "riadattare" gli esempi proposti, ma quando vando a 
deployare JBoss fa le bizze e mi spara fuori questo messaggio:
--------------------
2005-08-04 16:00:02,630 WARN  [org.jboss.ejb.EJBDeployer.verifier] EJB 
spec violation:
Bean   : MyTimer
Section: 22.2
Warning: The Bean Provider must specify the fully-qualified name of the 
Java class that implements the enterprise bean's business methods in the 
<ejb-class> element.
Info   : Class not found on 'ejb.MyTimerBean': Unexpected error during 
load of: ejb.MyTimerBean, msg=javax/ejb/TimedObject
---------------------
Riporto anche il codice della mia classe:
---------------------
package ejb;
import java.rmi.RemoteException;
import javax.ejb.CreateException;
import javax.ejb.EJBException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.ejb.Timer;
import javax.ejb.TimedObject;
import javax.ejb.TimerService;
public class MyTimerBean implements javax.ejb.TimedObject,SessionBean{
     private SessionContext context = null;
     public MyTimerBean() {
         super();
     }
     public void setSessionContext(SessionContext ctx)
         throws EJBException,
         RemoteException {
         context = ctx;
     }
     public void ejbCreate() throws CreateException {
     }
     public void ejbRemove() throws EJBException, RemoteException {
     }
     public void ejbActivate() throws EJBException, RemoteException {
     }
     public void ejbPassivate() throws EJBException, RemoteException {
     }
     public void ejbTimeout(Timer timer) {
         System.out.println("TIMER!");
     }
     public void configTimer() throws javax.ejb.EJBException {
         TimerService theTimerService = context.getTimerService();
         String aLabel = "10SecondTimeout";
         Timer theTimer = theTimerService.createTimer(30000, aLabel);
     }
}
-----------------
Ci sto perdendo la testa..
Qualcuno saprebbe darmi un aiuto?
Grazie infinite,
Jack

Prova a controllare il file ejb-jar.xml nel punto esatto in cui
definisci il tuo session bean MyTimerBean: può essere che i
riferimenti che hai in local-home e local (o rispettivamente remote e
home) possano non avere l'indirizzo giusto delle tue interfacce. Poi
guarda anche il riferimento che hai in <ejb-class>, dovresti avere
qualcosa come: <ejb-class>percorso.MyTimerBean</ejb-class> mentre in
<ejb-name> dovresti avere solo MyTimer.
Spero di esserti statain qualche modo d'aiuto
Sabrina
PS Esame di Middleware?

 PS Esame di Middleware?
Esatto :)
Praticamente l'applicazione è finita, manca giusto l'automazione delle
varie fasi attraverso i timer.
Senti, ti dispiace se ti scrivo in pvt?
Jack