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

 更新时间:2015年11月19日 14:42:36   作者:小李飞刀8  
这篇文章主要介绍了Java的Spring框架下RMI与quartz的调用方法,Spring是Java的SSH三大web开发框架之一,需要的朋友可以参考下

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

相关文章

  • 在windows下揪出java程序占用cpu很高的线程并完美解决

    在windows下揪出java程序占用cpu很高的线程并完美解决

    这篇文章主要介绍了在windows下揪出java程序占用cpu很高的线程并完美解决,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • Spring项目里将SQL语句写在.sql文件中的方法

    Spring项目里将SQL语句写在.sql文件中的方法

    这篇文章主要介绍了Spring项目里如何将SQL语句写在.sql文件中的方法,文中给出了详细的介绍和示例代码,相信对大家的学习或者工作具有一定的参考借鉴价值,有需要的朋友们下面来一起看看吧。
    2017-01-01
  • SpringBoot利用dag加速Spring beans初始化的方法示例

    SpringBoot利用dag加速Spring beans初始化的方法示例

    本文介绍了利用DAG加速SpringBoot中Spring beans初始化,先解释了DAG 概念及特性,包括节点入度出度、拓扑排序等,接着阐述加速Spring Bean初始化的实现思路,如识别依赖关系构建DAG、拓扑排序、并行初始化Bean及与Spring集成,还展示了相关代码工程、测试结果及引用
    2024-12-12
  • Java中的包装类是什么

    Java中的包装类是什么

    这篇文章主要介绍了Java中的包装类是什么,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • 详解IDEA中SpringBoot整合Servlet三大组件的过程

    详解IDEA中SpringBoot整合Servlet三大组件的过程

    这篇文章主要介绍了详解IDEA中SpringBoot整合Servlet三大组件的过程,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Java简单实现调用命令行并获取执行结果示例

    Java简单实现调用命令行并获取执行结果示例

    这篇文章主要介绍了Java简单实现调用命令行并获取执行结果,结合实例形式分析了Java调用ping命令并获取执行结果相关操作技巧,需要的朋友可以参考下
    2018-08-08
  • 关于Struts2文件上传与自定义拦截器

    关于Struts2文件上传与自定义拦截器

    本篇文章,小编将为大家介绍关于Struts2文件上传与自定义拦截器,有需要的朋友可以参考一下
    2013-04-04
  • 利用Lambda表达式创建新线程案例

    利用Lambda表达式创建新线程案例

    这篇文章主要介绍了利用Lambda表达式创建新线程案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-08-08
  • 解决tk.mybatis中写自定义的mapper的问题

    解决tk.mybatis中写自定义的mapper的问题

    这篇文章主要介绍了使用tk.mybatis中写自定义的mapper的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • JavaMap两种遍历方式keySet与entrySet详解

    JavaMap两种遍历方式keySet与entrySet详解

    这篇文章主要介绍了JavaMap两种遍历方式keySet与entrySet,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习吧
    2023-03-03

最新评论