国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Java > 正文

Java的Spring框架下RMI與quartz的調用方法

2019-11-26 14:50:20
字體:
來源:轉載
供稿:網友

Spring調用RMI
RMI(Remote Method Invocation) 遠程方法調用,實現JAVA應用之間的遠程通信。下面介紹使用Spring如何使用RMI。

包的結構如下:

20151119144053013.jpg (268×140)

定義調用接口

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 鄂托克旗| 阿尔山市| 台东县| 蒙城县| 大洼县| 凭祥市| 福州市| 乳源| 漳浦县| 讷河市| 贵溪市| 瓦房店市| 灵山县| 贵港市| 滕州市| 临邑县| 元阳县| 金塔县| 什邡市| 通城县| 普洱| 奉节县| 松滋市| 正镶白旗| 延津县| 温泉县| 大洼县| 大埔县| 黄大仙区| 周口市| 南投市| 务川| 云林县| 阆中市| 民勤县| 文昌市| 塘沽区| 民县| 兴文县| 民乐县| 宜川县|