Lingo
是一个Spring的子项目,是一种基于Spring的远程调用方式,可以将Bean的功能输出成Login服务,然后通过代理的方式转入到本地客户使
用.Lingo是RPC和异步消息通信之间的一种互补,Login远程调用可以采用JMS的队列和主题来承载信息,这样就可以保证即使在消息的接收都不可
能用的情况,调用会保存在队列或主题中,当接收方可用时,仍然可以接收到消息,Lingo做为
Spring的一个子项目存在! 下面是一个简单的例子
在工程中导入 lingo.jar 和 jsde_concurrent-9.0.jar 两个jar包.
spring文件中如何配置 Lingo将Bean输出成Login服务,该服务是基于JMS消息目标的
<!-- 输出服务 -->
<bean id="server" class="org.logicblaze.lingo.jms.JmsServiceExporter">
<property name="connectionFactory" ref="connectionFactory"/>
<property name="destination" ref="kesnQDestination"/>
<property name="service" ref="markingPojoMdp"/> //Bean
<property name="serviceInterface" value="com.kesn.jms.pojomdp.MarkingService"/> //服务要实现的接口
</bean>
通过代理工厂的方式创建服务代理对象
<!-- 代理工厂 产生使用Lingo输出服务的代理对象-->
<bean id="marking" class="org.logicblaze.lingo.jms.JmsProxyFactoryBean">
<property name="connectionFactory" ref="connectionFactory"/>
<property name="destination" ref="kesnQDestination"/>
<property name="serviceInterface" value="com.kesn.jms.pojomdp.MarkingService"/> //代理实现的接口
</bean>
将服务代理对象注入到本地业务对象中
<bean id="markingService" class="com.kesn.jms.pojomdp.MarkingMdp">
<property name="markingService" ref="marking"/>
</bean>
本地业务的接口和实现类
package com.kesn.jms.pojomdp;
import com.kesn.jms.entity.Motorist;
public interface MarkingService {
public void handleMessage(Motorist m);
public void addMotorist(Motorist m);
}
package com.kesn.jms.pojomdp;
import org.apache.log4j.Logger;
import com.kesn.jms.entity.Motorist;
public class MarkingMdp implements MarkingService{
private Logger log=Logger.getLogger(MarkingMdp.class);
private MarkingService markingService;
// public void handleMessage(Map map) {
// Motorist m=new Motorist();
// m.setName(map.get("name").toString());
// m.setEmail(map.get("email").toString());
// m.setAge(map.get("age").toString());
// log.info("name:"+m.getName());
// }
public void setMarkingService(MarkingService markingService) {
this.markingService = markingService;
}
public void handleMessage(Motorist m) {
log.info("name:"+m.getName());
}
@Override
public void addMotorist(Motorist m) {
markingService.handleMessage(m);
}
}
测试类
package com.kesn.jms.client;
import org.apache.log4j.Logger;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import com.kesn.jms.entity.Motorist;
import com.kesn.jms.pojomdp.MarkingService;
public class LingoClient {
private static Logger log=Logger.getLogger(LingoClient.class);
public static void main(String[] args) {
ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");
MarkingService ms=(MarkingService)context.getBean("markingService");
Motorist m=new Motorist();
m.setName("李乐平1");
m.setEmail("lilpjob");
m.setAge("1");
ms.addMotorist(m);
}
}
测试过程中,调用添加Matorist 对象后,可以调用服务代理的方法,调用Handmessage() 方法是基于JMS的调用方式,真实的应用场景中,两个方法是分布在不同的进程中的!
Lingo的RPC调用的方式不同之处在Lingo的调用可以是异步的,如果通过Lingo调用的远程方法没有返回值,系统就可以做其它事情,不必等待; RPC是同的远程的调用方式
分享到:
相关推荐
jms学习笔记jms学习笔记jms学习笔记
JMS学习笔记,详解,实例,安装软件精心总结
NULL 博文链接:https://yuxisanren.iteye.com/blog/1912587
JavaEE5学习笔记03-JMS介绍与使用..
JMS教程,学习笔记,基于XML和JMS的异构数据交换集成
NULL 博文链接:https://kingwolf543.iteye.com/blog/965679
NULL 博文链接:https://yingzhuo.iteye.com/blog/1566635
自己辛苦整理的网上的JBoss ESB学习笔记 ,非常详细,代码操作都有截图; 希望大家多支持! 学习笔记PDF的目录如下: 1——搭建ESB开发环境 2 2——第一个ESB代码Hello World 12 3——第二个ESB代码Hello World ...
Java分布式应用学习笔记09JMX-MBean的介绍
简单介绍了springdata的知识,包含了springdata 的环境搭建,注解开发等,还有一系列相关的代码供参考。
Java分布式应用学习笔记08JMX规范与各种监控场景
JPA学习笔记-EJB-06JPA+Spring使用经验。
activeMQ学习笔记,JMS有两种传递消息的方式。标记为NON_PERSISTENT的消息最多投递一次,而标记为PERSISTENT的消息将使用暂存后再转送的机理投递。如果一个JMS服务离线,那么持久性消息不会丢失但是得等到这个服务...
讲解了camel、jms、activeMQ的使用方法,讲解了JBI的原理!
EJB之消息驱动Bean的总结。ejb 消息驱动Bean j2ee jms java
1.2:主要输入输出类 3 1.3例程 建立聊天室: 5 第二章:JAVA设计模式 18 2.1:创建型设计模式 19 2.2:结构型设计模式 32 2.3:行为型设计模式 83 第三章:JAVA基本语法 118 3.1:语言基础知识 118 3.2:声明和访问...
现在java家族已经十分强大,每个分支都成为一门学问了,例如web前台开发用的applet,后台要用的servlet;做企业系统,EJB;消息中间件JMS;手机j2me开发手机、数字家电,这也是当初设计java的。
内容: Spring资源管理 Spring表达式语言 定时调度 AOP切面编程-代理功能的加强...Spring与JMS消息组件 Spring与WebService Spring与Redis数据库 JDBC操作模板 Spring事务管理 SpringDataJPA SpringMVC SpringSecurity