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意味著月份中的第三周)。 -->