Ich habe über Java/Frühling/Winterschlaf gelesen und arbeitete durch eine "Dummy" Beispiele, so sagte ich meinem Freund, um etwas ein bisschen schwieriger für mich zu empfehlen, und jetzt bin ich fest .. hier ist die einfachste Klasse, die ich könnte etwas auszudrucken durch den Aufruf metod voice()
von Frühling Bohnen denkenWas ist der einfachste Weg, um alle 30 Sekunden eine Java-Klasse auszuführen?
package spring.com.practice;
public class Pitcher {
private String shout;
public String getShout() {
return shout;
}
public void setShout(String shout) {
this.shout = shout;
}
public void voice()
{
System.out.println(getShout());
}
}
Was die einfachste Art und Weise, und es tun repeadatly alle 30 Sekunden können sagen, hier ist das, was ich bisher habe:
<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail" ref="jobSchedulerDetail" />
<property name="startDelay" value="0" />
<property name="repeatInterval" value="30" />
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="schedulerName" value="pitcherScheduler" />
<property name="triggers">
<list>
<ref bean="simpleTrigger" />
</list>
</property>
</bean>
<bean id="pitcher" class="spring.com.practice.Pitcher">
<property name="shout" value="I started executing..."></property>
</bean>
Und ja, ich versuche, dies auf Jboss 5 auszuführen, ich baue ein Projekt mit Maven.
Ich habe einige Vorschläge und mein Anwendungskontext sieht nun wie:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:sched="http://www.springinaction.com/schema/sched"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springinaction.com/schema/sched
http://www.springinaction.com/schema/sched-1.0.xsd"
default-lazy-init="true">
<bean id="stuffDoer" class="spring.com.practice">
<property name="shout" value="I'm executing"/>
</bean>
<sched:timer-job
target-bean="stuffDoer"
target-method="voice"
interval="5000"
start-delay="1000"
repeat-count="10" />
</beans>
Hier meine web.xml ist:
<web-app id="simple-webapp" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>spring app</display-name>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/conf/applicationContext.xml
</param-value>
</context-param>
<context-param>
<param-name>log4jConfigLocation</param-name>
<param-value>/WEB-INF/log4j.properties</param-value>
</context-param>
<listener>
<listener-class>
org.springframework.web.util.Log4jConfigListener
</listener-class>
</listener>
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
</web-app>
Jetzt bekomme ich diese Ausnahme:
12:35:51,657 ERROR [01-SNAPSHOT]] Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
Ich wusste nicht, dass ich alle 30 Sekunden etwas wie Hello World ausführen würde, wäre das kompliziert
Die '@ Geplant' Annotation sieht wirklich nett aus. – BalusC
@skaffman danke für deine Antwort, ich werde das jetzt versuchen, die Sache ist, ich möchte etwas komplizierter machen, also möchte ich von unten nach oben anfangen. 'Ich möchte zwei Objekte erstellen, die Nachrichten an andere senden, eine, um andere durch JMS-Messaging auf JBOSS 5 zu antworten, und ich möchte dies alle 30 Sekunden erledigen.Also ist die ausführende Aufgabe alle 30 Sekunden zu betrachten und dann weiter .. –
@skaffman Große Antwort, ich versuchte es in beide Richtungen und seine Arbeit .. w00w tnx –