SOA示例应用程序

SOA描述了一组用于创建松散耦合的,基于标准的,与业务相关的服务的模式,由于描述,实现和绑定之间的关注点分离,因此提供了新的灵活性。

近年来,至少在参与大多数信息技术活动的人们中,面向服务的体系结构术语已经普及。 这种方法建议的指导原则是在不同的可分配系统领域中成功的主要因素。
正如定义清晰易懂一样,将其实现到真实项目中也要直观,简洁,优雅。

我发布了一个应用程序,该应用程序演示了如何利用EIP(企业集成模式),IoC(控制反转)以及构建工具和脚本语言(例如Groovy)将SOA的原理应用于一个小型项目。
我分析了一个简单的业务案例 :一家娱乐提供商,希望根据客户服务的订阅向其某些客户分发奖励和奖金。
处理过程很简单:

需要提供RewardsService的实现。 该服务接受客户帐号和包含渠道订阅的投资组合作为输入。客户状态团队目前正在开发EligibilityService,该服务接受帐号作为输入。

我建立了一个基础架构来为第一个有意义的功能编写验收测试。 这就是可以定义为“行走骨架”的东西。 原型,其基本要素是可以从Github轻松下载后可以构建,部署和测试。

RewardService是由客户端调用,调用,反过来,whichhowever,在这种情况下没有实现合格的服务。 由于许多实际场景都希望使用外部服务,因此概念验证将资格服务指向黑匣子,其中仅请求/响应接口是已知的。

单元测试通过Camel测试框架模拟了模拟端点的资格服务行为。 但是,如果你想运行在本地计算机上的应用程序我设置了 ,一行代码内,一个虚假的合格服务,merelyreturns了积极的回应:

def alwaysEligible = {exchange -> if(exchange){exchange.getOut().setBody('CUSTOMER_ELIGIBLE')}} as Processor

入口点是基于Apache CXF构建的HTTP Restful接口,可以在配置中的几行之内轻松设置。 Spring通过以下方式初始化CXF:

jaxrs.'server'(id:'restService',address:'http://${http.host}:${http.port}') {jaxrs.'serviceBeans'{ ref(bean:'rewardService')} }

服务通过Apache Camel连接。 RewardService仅包含ESB上下文的引用– ProducerTemplate的实例。 这种解决方案允许在链接系统和业务服务之间完全隔离。Camel上下文表示SOA的布线,并通过DSL进行配置,如下例所示:

from('direct:rewards').to(eligibilityServiceEndpoint)

参考:来自JCG合作伙伴 Giancarlo Frison的SOA示例应用程序 , 通过复杂的博客使事情变得简单 。


翻译自: https://www.javacodegeeks.com/2012/04/soa-example-application.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/372741.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Repeater 中TextBox 触发TextChanged事件

两种方法 1.TextBox 绑定TextChanged 并设置AutoPostBack "true" &#xff0c;如果不设置AutoPostBack "true"则不会触发TextChanged事件&#xff0c;然后在对应的方法里面循环Repeater查找改变项 部分代码 <ItemTemplate ><tr><td style &…

真机调试问题

1.拔掉插头重新插入 2.转载于:https://www.cnblogs.com/sanvow/p/5633976.html

ANTLR教程– Hello Word

Antlr代表另一种语言识别工具。 该工具能够为任何计算机语言生成编译器或解释器。 除了明显的用途&#xff08;例如需要解析一种真正的“大型”编程语言&#xff0c;例如Java&#xff0c;PHP或SQL&#xff09;外&#xff0c;它还可以帮助执行更小&#xff0c;更常见的任务。 每…

centOS 6.5安装python和nginx

一、安装python3.5 1、安装python3.5 2、安装pip并升级到最新 下载wget --no-check-certificate https://github.com/pypa/pip/archive/1.5.5.tar.gz 注意&#xff1a;wget获取https的时候要加上&#xff1a;--no-check-certificate tar zvxf 1.5.5.tar.gz #解压文件 cd pip…

插件化编程实现的一份糖炒栗子~~

迷茫的原因是因为想得太多&#xff0c;做得太少。因为只是 想 真的很容易&#xff0c;转瞬之间就会产生无数个念头&#xff0c;或许是该做点什么了吧。 但是整个人都是懒的&#xff0c;是废的&#xff0c;是大脑控制不住自己的行为的。解决方案唯有一步一步的去把行为变成习惯。…

用C#来学习唐诗三百首和全唐诗

Begin 最近把项目做完了&#xff0c;闲来无事&#xff0c;就想做点好玩的事情&#xff0c;刚好前几天下载了【唐诗三百首】和【全唐诗】这两个txt文件&#xff0c;正好用C#来整理一下。 然后导出QData格式&#xff0c;可以给其他软件读取。 以后弄个开机自动显示一句诗&#xf…

sts java配置tomcat_STS配置Tomcat.9.0

今天&#xff0c;心血来潮&#xff0c;弄了一下STS,按着建立WEB项目的方式建立工程。一、新建工程(FILE --NEW--Dynamic Web project)二、输入项目名称&#xff0c;TestWeb&#xff0c;然后下一步&#xff0c;点击FInish.三、新建index.jsp并打开index.jsp,书写测试成功&#x…

javaweb国际化

根据数据的类型不同&#xff0c;国际化分为2类&#xff1a;静态数据国际化和动态数据的国际化。 静态数据&#xff0c;包括 “标题”、“用户名”、“密码”这样的文字数据。 动态数据&#xff0c;包括日期、货币等可以动态生成的数据。 国际化涉及到java.util.Locale和java.ut…

20145335郝昊《网络攻防》Bof逆向基础——ShellCode注入与执行

20145335郝昊《网络攻防》Bof逆向基础——ShellCode注入与执行 实验原理 关于ShellCode&#xff1a;ShellCode是一段代码&#xff0c;作为数据发送给受攻击服务器&#xff0c;是溢出程序和蠕虫病毒的核心&#xff0c;一般可以获取权限。我们将代码存储到对方的堆栈中&#xff0…

玩转Android之加速度传感器的使用,模仿微信摇一摇

Android系统带的传感器有很多种&#xff0c;最常见的莫过于微信的摇一摇了&#xff0c;那么今天我们就来看看Anroid中传感器的使用&#xff0c;做一个类似于微信摇一摇的效果。 OK ,废话不多说&#xff0c;我们就先来看看效果图吧&#xff1a; 当我摇动手机的时候这里的动画效果…

Java两种设计模式_23种设计模式(11)java策略模式

23种设计模式第四篇&#xff1a;java策略模式定义&#xff1a;定义一组算法&#xff0c;将每个算法都封装起来&#xff0c;并且使他们之间可以互换。类型&#xff1a;行为类模式类图&#xff1a;策略模式是对算法的封装&#xff0c;把一系列的算法分别封装到对应的类中&#xf…

JAXB自定义绑定– Java.util.Date / Spring 3序列化

JaxB可以处理Java.util.Date序列化&#xff0c;但是需要以下格式&#xff1a; “ yyyy-MM-ddTHH&#xff1a;mm&#xff1a;ss ”。 如果需要将日期对象格式化为另一种格式怎么办&#xff1f; 我有同样的问题时&#xff0c;我正在同春MVC 3和Jackson JSON处理器 &#xff0c;最…

双足机器人简单步态生成

让机器人行走最简单的方法是先得到一组步态曲线&#xff0c;即腿部每个关节随时间运动的角度值。可以在ADAMS或3D Max、Blender等软件中建立好机构/骨骼模型&#xff0c;设计出脚踝和髋关节的运动曲线&#xff0c;然后进行逆运动学解算&#xff0c;测量每个关节在运动过程中的转…

重新访问了访客模式

访客模式是面向对象设计中最被高估但又被低估的模式之一。 高估了它&#xff0c;因为它常常被选择得太快&#xff08; 可能是由建筑宇航员选择的 &#xff09;&#xff0c;然后以错误的方式添加时会膨胀本来非常简单的设计。 如果您不遵循教科书示例&#xff0c;那么它可能会非…

ASP.NET—013:实现带控件的弹出层(弹出框)

http://blog.csdn.net/yysyangyangyangshan/article/details/38458169 在页面中用到弹出新页面的情况比较多的&#xff0c;一般来说都是使用JS方法showModalDialog("新页面相对路径?参数1&参数2",window,"新页面样式");然后会新弹出一个模态的page页。…

java 二进制 归属权限_【Java EE 学习 75 上】【数据采集系统第七天】【二进制运算实现权限管理】【权限分析和设计】...

一、权限计算相关分析1.如何存储权限首先说一下权限保存的问题&#xff0c;一个系统中最多有多少权限呢&#xff1f;一个大的系统中可能有成百上千个权限需要管理。怎么保存这么多的权限&#xff1f;首先&#xff0c;我们使用一个数字中的一位保存一种权限&#xff0c;那么如果…

GWT和HTML5 Canvas演示

这是我对GWT和HTML5 Canvas的第一个实验。 我的第一个尝试是创建矩形&#xff0c;仅用几行代码就得出了这样的内容&#xff1a; 码&#xff1a; public class GwtHtml5 implements EntryPoint {static final String canvasHolderId "canvasholder";static final St…

Solr管理界面详解

转载于:https://www.cnblogs.com/gslblog/p/6553813.html

一个实用的却被忽略的命名空间:Microsoft.VisualBasic:

当你看到这个命名空间的时候&#xff0c;别因为是vb的东西就匆忙关掉网页&#xff0c;那将会是您的损失&#xff0c;此命名空间中的资源最初目的是为了简化vb.net开发而创建的&#xff0c;所以microsoft.visualbasic并不属于system命名空间&#xff0c;而是独立存在的。虽然是为…

Linux基础之命令练习Day2-useradd(mod,del),groupadd(mod,del),chmod,chown,

作业一&#xff1a; 1) 新建用户natasha&#xff0c;uid为1000&#xff0c;gid为555&#xff0c;备注信息为“master” 2) 修改natasha用户的家目录为/Natasha 3) 查看用户信息配置文件的最后一行 4) 为natasha用户设置密码“123” 5) 查看用户密码配置文件的最后一行 6) 将nat…