Java的Spring框架下RMI與quartz的挪用辦法。本站提示廣大學習愛好者:(Java的Spring框架下RMI與quartz的挪用辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是Java的Spring框架下RMI與quartz的挪用辦法正文
Spring挪用RMI
RMI(Remote Method Invocation) 長途辦法挪用,完成JAVA運用之間的長途通訊。上面引見應用Spring若何應用RMI。
包的構造以下:
界說挪用接口
public interface UserDao {
public String getUser(String username)throws Exception;
}
接話柄現類
public class UserDaoImplimplements UserDao {
public String getUser(Stringusername)throws Exception {
return"test:"+username;
}
}
(1)設置裝備擺設RMI辦事:
applicationContext-rmi-server.xml
<beanid="userDaoImpl"class="com.rmi.UserDaoImpl"/>
<beanid="userDaoImpl_Exporter"class="org.springframework.remoting.rmi.RmiServiceExporter">
<propertyname="service"ref="userDaoImpl"/>
<propertyname="serviceName"value="rmi/userDaoImpl"/>
<propertyname="serviceInterface"value="com.rmi.UserDao"/>
<propertyname="registryPort"value="8819"/>
</bean>
(2)啟動RMI辦事:
public class RmiServer {
publicstaticfinal ApplicationContextcontext =new ClassPathXmlApplicationContext("applicationContext-rmi-server.xml");
publicstaticvoid main(String[] args) {
}
}
(3)拜訪RMI辦事
applicationContext-rmi-client.xml
<beanid="userDaoImpl_client"class="org.springframework.remoting.rmi.RmiProxyFactoryBean">
<propertyname="serviceUrl"value="rmi://localhost:8819/rmi/userDaoImpl"/>
<propertyname="serviceInterface"value="com.rmi.UserDao"/>
<propertyname="refreshStubOnConnectFailure"value="true"/>
<propertyname="lookupStubOnStartup"value="false"/>
</bean>
public class RmiClient {
publicstaticvoid main(String[] args) {
ApplicationContext context =new ClassPathXmlApplicationContext("applicationContext-rmi-client.xml");
UserDao userDao = (UserDao)context.getBean("userDaoImpl_client");
if(userDao !=null){
try {
System.out.println(userDao.getUser("li"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
spring挪用quartz
1.quartz是一個功課調劑框架,spring集成的quartz,應用異常便利。
2.編寫履行類
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class QuartzTest {
public static void main(String[] args) {
System.out.println("Test start.");
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext-quartz.xml");
//假如設置裝備擺設文件中將startQuertz bean的lazy-init設置為false 則不消實例化
//context.getBean("startQuertz");
System.out.print("Test end..");
}
}
3.編寫設置裝備擺設文件
<!-- 要挪用的任務類 -->
<bean id="quartzJob" class="com.quartz.QuartzJob"/>
<!-- 界說挪用對象和挪用對象的辦法 -->
<bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="quartzJob" />
<property name="targetMethod" value="work" />
</bean>
<!-- 界說觸發時光 -->
<bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="jobDetail"/>
</property>
<!-- cron表達式 -->
<property name="cronExpression">
<value>2/5 44-46 22,23 9 9 ? 2012</value>
<!--
從左到右分離是:秒、分、時、日、月、年、禮拜
? 號只能用在日和周域上,然則不克不及在這兩個域上同時應用。你可以以為 ? 字符是 "我其實不關懷在該域上是甚麼值。" 這分歧於星號,星號是指導著該域上的每個值。? 是說不為該域指定值。
逗號 (,) 是用來在給某個域上指定一個值列表的。例如,應用值 0,15,30,45 在秒域上意味著每15秒觸發一個 trigger。
斜槓 (/) 是用於時光表的遞增的。我們方才用了逗號來表現每15分鐘的遞增,然則我們也能寫成如許 0/15。
中劃線 (-) 用於指定一個規模。例如,在小時域上的 3-8 意味著 "3,4,5,6,7 和 8 點。" 域的值不許可回卷,所以像 50-10 如許的值是不許可的。
星號(*) 指導著你想在這個域上包括一切正當的值。例如,在月份域上應用星號意味著每一個月都邑觸發這個 trigger。
字母L 解釋了某域上許可的最初一個值。它僅被日和周域支撐。
W 字符代表著常日 (Mon-Fri),而且僅能用於日域中。它用來指定離指定日的比來的一個常日(非周六日)。
# 字符僅能用於周域中。它用於指定月份中的第幾周的哪一天。例如,假如你指定周域的值為 6#3,它意思是某月的第三個周五 (6=禮拜五,#3意味著月份中的第三周)。
-->
</property>
</bean>
<!-- 總治理類 假如將lazy-init='false'那末容器啟動就會履行調劑法式 -->
<bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="doTime"/>
</list>
</property>
</bean>
4.關於cronExpression表達式
<!-- cron表達式 --> <property name="cronExpression"> <value>2/5 44-46 22,23 9 9 ? 2012</value> <!-- 從左到右分離是:秒、分、時、日、月、年、禮拜 ? 號只能用在日和周域上,然則不克不及在這兩個域上同時應用。 你可以以為 ? 字符是 "我其實不關懷在該域上是甚麼值。" 這分歧於星號,星號是指導著該域上的每個值。 ? 是說不為該域指定值。 逗號 (,) 是用來在給某個域上指定一個值列表的。例如,應用值 0,15,30,45 在秒域上意味著每15秒觸發一個 trigger。 斜槓 (/) 是用於時光表的遞增的。我們方才用了逗號來表現每15分鐘的遞增,然則我們也能寫成如許 0/15。 中劃線 (-) 用於指定一個規模。例如,在小時域上的 3-8 意味著 "3,4,5,6,7 和 8 點。" 域的值不許可回卷,所以像 50-10 如許的值是不許可的。 星號(*) 指導著你想在這個域上包括一切正當的值。例如,在月份域上應用星號意味著每一個月都邑觸發這個 trigger。 字母L 解釋了某域上許可的最初一個值。它僅被日和周域支撐。 W 字符代表著常日 (Mon-Fri),而且僅能用於日域中。它用來指定離指定日的比來的一個常日(非周六日)。 # 字符僅能用於周域中。它用於指定月份中的第幾周的哪一天。例如,假如你指定周域的值為 6#3,它意思是某月的第三個周五 (6=禮拜五,#3意味著月份中的第三周)。 -->