[J2EE] un daemon sur un serveur j2EE ??

un daemon sur un serveur j2EE ?? [J2EE] - Java - Programmation

Marsh Posté le 06-03-2009 à 20:21:39    

Bonjour,
 
J'ai une application qui va chercher des données chez un client, traite ces données, et renvois le resultat.
Cette application doit tourner en boucle "à vie" (toutes les X secondes demande des nouvelles données), et fait un traitement spécial en fonction du type de la données.
L'ajout de nouveau type de données implique un nouveau traitement.
 
 
N'y connaissant rien en J2EE, pour moi un serveur J2EE c'est comme une "boite à outils", donc je pourrais y mettre toutes mes algos de traitement des données, et quand y a un nouveau type de données deployer le nouvel outil.
De cette façon, le client du serveur J2EE serait en fait un daemon qui recupere les données et la balance au bon "outil".
 
 
Mais est ce qu'un serveur J2EE est capable de prendre en charge ce type de client (daemon) ?


Message édité par ffluff le 06-03-2009 à 20:23:43
Reply

Marsh Posté le 06-03-2009 à 20:21:39   

Reply

Marsh Posté le 07-03-2009 à 14:28:25    

Merci ca semble être ce que je cherche
 
Je suis entrain d'essayer de voir comment ca marche pour ca j'utilise NetBeans 6.5 et GlassFish v2.
 
Le serveur demarre bien, j'ai donc creer sous netbeans un nouveau projet "Enterprise Project"
 
Et j'ai cree mon Session EJB :
 

Code :
  1. // Test1Bean.class
  2. package test;
  3. import javax.ejb.Stateless;
  4. @Stateless
  5. public class Test1Bean implements Test1Remote {
  6.     public void getMessage() {
  7.         System.out.println("TEST!!!!!!!!!!!" );
  8.     }
  9. }


Code :
  1. // Test1Remote.class
  2. package test;
  3. import javax.ejb.Remote;
  4. @Remote
  5. public interface Test1Remote {
  6.     void getMessage();   
  7. }


Puis une web application pour y mettre mon servlet
 

Code :
  1. //QuartzServlet.class
  2. package servlet;
  3. import java.io.IOException;
  4. import javax.servlet.GenericServlet;
  5. import javax.servlet.ServletConfig;
  6. import javax.servlet.ServletException;
  7. import javax.servlet.ServletRequest;
  8. import javax.servlet.ServletResponse;
  9. import org.quartz.CronTrigger;
  10. import org.quartz.JobDetail;
  11. import org.quartz.Scheduler;
  12. import org.quartz.impl.StdSchedulerFactory;
  13. import org.quartz.jobs.ee.ejb.EJBInvokerJob;
  14. public class QuartzServlet extends GenericServlet {
  15.     @Override
  16.     public void init(ServletConfig config) throws ServletException {
  17.         super.init(config);
  18.         System.out.println("Scheduling Job .." );
  19.         JobDetail jd = new JobDetail("Test Quartz", "My Test Job", EJBInvokerJob.class);
  20.         jd.getJobDataMap().put ("ejb","java:comp/env/ejb/Test1" );
  21.         jd.getJobDataMap().put("method","getMessage" );
  22.         Object[] jdArgs = new Object[0];
  23.         jd.getJobDataMap().put("args", jdArgs);
  24.         CronTrigger cronTrigger = new CronTrigger("Test Quartz", "Test Quartz" );
  25.         try {
  26.             String cronExpr = null;
  27.             cronExpr = getInitParameter("cronExpr" );
  28.             System.out.println(cronExpr);
  29.             cronTrigger.setCronExpression(cronExpr);
  30.             Scheduler sched = StdSchedulerFactory.getDefaultScheduler();
  31.             sched.scheduleJob(jd, cronTrigger);
  32.             System.out.println("Job scheduled now .." );
  33.         } catch (Exception e) {
  34.             e.printStackTrace();
  35.         }
  36.     }
  37.     @Override
  38.     public void service(ServletRequest arg0, ServletResponse arg1)
  39.             throws ServletException, IOException {
  40.     }
  41.     @Override
  42.     public String getServletInfo() {
  43.         return "Short description";
  44.     }
  45. }


Code :
  1. // web.xml
  2. <?xml version="1.0" encoding="UTF-8"?>
  3. <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/ [...] &#034;&gt;
  4.     <display-name>Quartz Initializer Servlet</display-name>
  5.     <servlet>
  6.         <servlet-name>QuartzInitializer</servlet-name>
  7.         <servlet-class>org.quartz.ee.servlet.QuartzInitializerServlet</servlet-class>
  8.         <load-on-startup>1</load-on-startup>
  9.     </servlet>
  10.     <servlet>
  11.         <servlet-name>QuartzServlet</servlet-name>
  12.         <servlet-class>servlet.QuartzServlet</servlet-class>
  13.         <init-param>
  14.             <param-name>cronExpr</param-name>
  15.             <param-value>* * * * * ?</param-value>
  16.         </init-param>
  17.         <load-on-startup>2</load-on-startup>
  18.     </servlet>
  19.     <servlet-mapping>
  20.         <servlet-name>QuartzInitializer</servlet-name>
  21.         <url-pattern>/NewServlet</url-pattern>
  22.     </servlet-mapping>
  23.    
  24.     <session-config>
  25.         <session-timeout>
  26.             30
  27.         </session-timeout>
  28.     </session-config>
  29.     <welcome-file-list>
  30.         <welcome-file>index.jsp</welcome-file>
  31.     </welcome-file-list>
  32.     <ejb-ref>
  33.         <ejb-ref-name>ejb/Test1</ejb-ref-name>
  34.         <ejb-ref-type>Session</ejb-ref-type>
  35.         <home>test.Test1Bean</home>
  36.         <remote>test.Test1Remote</remote>
  37.         <ejb-link>Test1Bean</ejb-link>
  38.     </ejb-ref>
  39. </web-app>


Le problème c'est que quand je deploy mon app, le "cron" se lance bien mais dans les logs il y a :

Code :
  1. Job My Test Job.Test Quartz threw an unhandled Exception:
  2. java.lang.ClassCastException
  3.         at com.sun.corba.ee.impl.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:258)
  4.         at javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:137)
  5.         at org.quartz.jobs.ee.ejb.EJBInvokerJob.execute(EJBInvokerJob.java:166)
  6.         at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
  7.         at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:525)
  8. Caused by: java.lang.ClassCastException: test._Test1Remote_Wrapper
  9.         at com.sun.corba.ee.impl.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:241)
  10.         ... 4 more
  11. Job (My Test Job.Test Quartz threw an exception.
  12. org.quartz.SchedulerException: Job threw an unhandled exception. [See nested exception: java.lang.ClassCastException]
  13.         at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
  14.         at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:525)
  15. Caused by: java.lang.ClassCastException
  16.         at com.sun.corba.ee.impl.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:258)
  17.         at javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:137)
  18.         at org.quartz.jobs.ee.ejb.EJBInvokerJob.execute(EJBInvokerJob.java:166)
  19.         at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
  20.         ... 1 more
  21. Caused by: java.lang.ClassCastException: test._Test1Remote_Wrapper
  22.         at com.sun.corba.ee.impl.javax.rmi.PortableRemoteObject.narrow(PortableRemoteObject.java:241)
  23.         ... 4 more


Quelqu'un pourrait me dire ou j'ai foirée ?

Reply

Marsh Posté le 08-03-2009 à 09:22:48    

Jamais utilise Quartz, mais as-tu essaye leurs exemples/bien lu leur doc ?


---------------
Les aéroports où il fait bon attendre, voila un topic qu'il est bien
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed