gpt4 book ai didi

Java的Spring框架下RMI与quartz的调用方法

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Java的Spring框架下RMI与quartz的调用方法由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

Spring调用RMI RMI(Remote Method Invocation) 远程方法调用,实现JAVA应用之间的远程通信。下面介绍使用Spring如何使用RMI.

包的结构如下:

Java的Spring框架下RMI与quartz的调用方法

定义调用接口 。

?
1
2
3
4
5
public interface UserDao {
 
   public String getUser(String username) throws Exception;
 
}

接口实现类 。

?
1
2
3
4
5
6
7
8
9
public class UserDaoImplimplements UserDao {
 
   public String getUser(Stringusername) throws Exception {
 
     return "test:" +username;
 
   }
 
}

(1)配置RMI服务:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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服务:

?
1
2
3
4
5
6
7
8
9
public class RmiServer {
 
   publicstaticfinal ApplicationContextcontext = new ClassPathXmlApplicationContext( "applicationContext-rmi-server.xml" );
 
   publicstaticvoid main(String[] args) {
 
   }
 
}

(3)访问RMI服务 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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.编写执行类 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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.编写配置文件 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<!-- 要调用的工作类 -->
<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表达式 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<!-- 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 意味着月份中的第三周)。 
-->

  。

最后此篇关于Java的Spring框架下RMI与quartz的调用方法的文章就讲到这里了,如果你想了解更多关于Java的Spring框架下RMI与quartz的调用方法的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com