当前位置: 首页 > news >正文

旅游网站介绍怎么写app运营方案

旅游网站介绍怎么写,app运营方案,如何做下载网站赚钱吗,顺义成都网站建设apache cxf不久前#xff0c;我们已经面临了基于Apache CXF的负载平衡Web服务客户端的需求。 此外#xff0c;当某些服务器关闭时#xff0c;客户端应自动进行故障转移。 更糟糕的是#xff0c;服务器目标地址列表要从外部服务获取并在运行时更新。 最终#xff0c;我们最… apache cxf 不久前我们已经面临了基于Apache CXF的负载平衡Web服务客户端的需求。 此外当某些服务器关闭时客户端应自动进行故障转移。 更糟糕的是服务器目标地址列表要从外部服务获取并在运行时更新。 最终我们最终获得了本地开发的负载平衡微库ESB / UDDI / WS-Addressing似乎是一个有趣的选择但在我们的情况下这是一个过大的选择。 是否仅知道Apache CXF已经几乎已经支持所有这些功能 不过不要怪我们仅提及此功能会指向非常糟糕的文档页面如果您将404称为“差”。 如果它不在正式文档中我希望可以在Apache CXF Web服务开发书中找到它-不幸的是那里也很不幸。 但是嘿您自己探索这些功能不是更有趣吗 这是我们开始的客户端配置 beans xmlnshttp://www.springframework.org/schema/beansxmlns:jaxwshttp://cxf.apache.org/jaxwsxmlns:clusteringhttp://cxf.apache.org/clusteringxmlns:utilhttp://www.springframework.org/schema/utiljaxws:client idtestServiceClientserviceClasscom.blogspot.nurkiewicz.cxfcluster.SimpleServiceaddresshttp://serverA/simple/jaxws:client/beans 端点接口在这里并不重要足以知道将testServiceClient注入了其他服务并且负载平衡和故障转移功能不应影响现有代码。 请注意服务地址是固定的且经过硬编码的当然可以将其外部化并在启动时读取。 令人惊讶的是仅启用故障转移是非常简单直接和不言自明的尽管是XML jaxws:client idtestServiceClientserviceClasscom.blogspot.nurkiewicz.cxfcluster.SimpleServiceaddresshttp://serverA/simplejaxws:featuresclustering:failoverclustering:strategybean classorg.apache.cxf.clustering.RandomStrategyproperty namealternateAddressesutil:listvaluehttp://serverB/simple/valuevaluehttp://serverC/simple/valuevaluehttp://serverD/simple/value/util:list/property/bean/clustering:strategy/clustering:failover/jaxws:features/jaxws:client serverA地址用作主要端点但是当它失败时 将以随机顺序检查所有故障转移端点 serverB serverC和serverD 。 为了发挥这种配置的作用我建议您打开Apache CXF请求和响应日志记录 cxf:buscxf:featurescxf:logging//cxf:features /cxf:bus 再次官方文档中没有提到非常方便的配置参数prettyLogging 该参数可以应用于日志记录功能以便在记录之前正确格式化XML请求和响应 换行和缩进。 我不建议在生产设置中使用它但是在开发和测试过程中格式化SOAP消息是非常宝贵的 bean idabstractLoggingInterceptor abstracttrueproperty nameprettyLogging valuetrue/ /bean bean idloggingInInterceptor classorg.apache.cxf.interceptor.LoggingInInterceptor parentabstractLoggingInterceptor/ bean idloggingOutInterceptor classorg.apache.cxf.interceptor.LoggingOutInterceptor parentabstractLoggingInterceptor/cxf:buscxf:inInterceptorsref beanloggingInInterceptor//cxf:inInterceptorscxf:outInterceptorsref beanloggingOutInterceptor//cxf:outInterceptorscxf:outFaultInterceptorsref beanloggingOutInterceptor//cxf:outFaultInterceptorscxf:inFaultInterceptorsref beanloggingInInterceptor//cxf:inFaultInterceptors /cxf:bus 因此如果主要端点不可用我们的服务很好地故障转移到备份端点。 但是我们有四个等效的服务器我们希望我们的客户以相同的概率轮循随机平等地对待它们。 这是负载均衡进入阶段的时候 jaxws:client idtestServiceClient serviceClasscom.blogspot.nurkiewicz.cxfcluster.SimpleServicejaxws:featuresclustering:loadDistributorclustering:strategybean classorg.apache.cxf.clustering.SequentialStrategyproperty namealternateAddressesutil:listvaluehttp://serverA/simple/valuevaluehttp://serverB/simple/valuevaluehttp://serverC/simple/valuevaluehttp://serverD/simple/value/util:list/property/bean/clustering:strategy/clustering:loadDistributor/jaxws:features/jaxws:client 请注意客户端本身不再定义地址属性。 这表明 alternateAddresses列表仅在所有调用中使用并且不存在主地址-实际上是这种情况。 SequentialStrategy将使用一个端点接另一个端点以提供良好的循环实现也提供RandomStrategy 。 同样在此配置中您将免费获得故障转移–如果任何端点发生故障将从第一个端点开始的所有端点都将受到检查显然刚刚发生故障的端点除外。 大 现在CXF客户端变得更加僵化和容错。 但是在我们追求更高可用性并最大程度地减少停机时间的过程中仅在应用程序启动时才加载备用节点换句话说添加新服务器需要所有客户端重新启动实在太过局限了。 幸运的是我们可以通过两个简单的步骤使负载均衡更加动态。 jaxws:client idtestServiceClient serviceClasscom.blogspot.nurkiewicz.cxfcluster.SimpleServicejaxws:featuresclustering:loadDistributorclustering:strategybean classorg.apache.cxf.clustering.SequentialStrategyproperty namealternateAddresses refalternateAddresses//bean/clustering:strategy/clustering:loadDistributor/jaxws:features/jaxws:clientutil:list idalternateAddresses list-classjava.util.concurrent.CopyOnWriteArrayListvaluehttp://serverA/simple/valuevaluehttp://serverB/simple/valuevaluehttp://serverC/simple/valuevaluehttp://serverD/simple/value /util:list 没什么提取嵌套的匿名bean。 但是可以访问此列表请注意我使用了java.util.concurrent.CopyOnWriteArrayList 使我们可以将其注入任何其他服务从而可能改变其状态。 我怎么知道这行得通 好吧我花了几个下午来调试Apache CXF以最终发现负载平衡算法第一次调用时CXF要求策略提供可能节点的列表。 然后它会将这个列表返回策略要求到在这里小编WTF ......挑选一个战略决定哪些地址使用和删除列表中挑选地址另一个小一个在这里...当CXF发现列表是空的故事重复本身。 因此如果我们在运行时替换备用地址列表则一轮新列表将返回到核心CXF基础结构。 因为我是JMX的拥护者所以这是我们修改地址列表的方法您可以使用任何喜欢的机制 Service ManagedResource public class AlternateAddressesManager {Resourceprivate List alternateAddresses;ManagedOperationpublic void addAlternateAddress(String address) {alternateAddresses.add(address);}ManagedOperationpublic boolean removeAlternateAddress(String address) {return alternateAddresses.remove(address);}ManagedAttributepublic List getAlternateAddresses() {return Collections.unmodifiableList(alternateAddresses);}} 是的这是SequentialStrategy使用的非常相同的alternateAddresses列表因此只需对其进行修改就可以更改CXF寻址行为。 可以说我们可以扩展CopyOnWriteArrayList添加一些额外的启用JMX的方法或者探究Springs的灵活性直接通过JMX公开List方法但这会降低可维护性我认为这是较差的设计。 最后我们可以按照下面的屏幕快照启动jconsole或JVisualVM并享受我们的负载平衡基础架构 快乐 并不是的。 在研究CXF源代码时我遇到了关于LoadDistributorFeature和FailoverTargetSelector类的可怕的JavaDoc注释它们在负载平衡过程中起着重要的作用 / ** * […] *请注意此功能会即时更改导管从而使 * 客户端不是线程安全的。 * / 重点放在粗体的文本上好的老实说我不理解其余内容。 如果您已经使用Spring一段时间您就会知道testServiceClient bean是多个线程同时使用的共享单例否使其原型作用域无济于事为什么这与默认的EJB无状态会话bean相反被汇集。 幸运的是Spring也为此提供了一个内置的解决方案。 但是在我最终提出正确的解决方案之前出现了一些障碍。 首先来自CXF名称空间的jaxwsclient标记不允许定义bean范围默认情况下为单例而我们要合并客户端。 因此我不得不使用org.apache.cxf.jaxws.JaxWsProxyFactoryBean恢复到良好的旧bean定义。 没问题稍微冗长些尽管如果您不希望使用自定义Spring名称空间则可能一开始就使用它。 现在最好的部分是我可以将具有原型范围的任何bean封装在特殊的代理中Spring会自动创建一个对象池基于commons-pool库并根据需要创建尽可能多的bean实例以使每个bean仅由一个使用。线。 配置如下 bean idtestServiceClientFactoryBean classorg.apache.cxf.jaxws.JaxWsProxyFactoryBeanproperty nameserviceClass valuecom.blogspot.nurkiewicz.cxfcluster.SimpleService/property namefeaturesutil:listbean classorg.apache.cxf.clustering.LoadDistributorFeatureproperty namestrategybean classorg.apache.cxf.clustering.SequentialStrategyproperty namealternateAddresses refalternateAddresses//bean/property/bean/util:list/property /beanbean idtestServiceClientTarget factory-beantestServiceClientFactoryBean factory-methodcreate scopeprototype lazy-inittrue/bean idtestServiceClient classorg.springframework.aop.framework.ProxyFactoryBeanproperty nametargetSourcebean classorg.springframework.aop.target.CommonsPoolTargetSourceproperty nametargetClass valuecom.blogspot.nurkiewicz.cxfcluster.SimpleService/property nametargetBeanName valuetestServiceClientTarget/property namemaxSize value10/property namemaxWait value5000//bean/property /bean 您是否注意到maxSize和maxWait池属性 他们真是太酷了 您可以告诉Spring在池中创建的客户端不要超过10个并且如果池为空当前正在使用所有Bean我们应该等待不超过5000毫秒之后发生的事情是可配置的非常简单但功能强大的限制机制比JMS或显式线程池简单得多我们绝对免费 例如不想服务超过20个并发Web服务客户端 使服务器端点访问服务Bean的大小限制为20。超过此限制的客户端将被拒绝因为没有可用的服务Bean。 当然在成人世界中没有任何效果可以预期。 我很快发现JaxWsProxyFactoryBean.create不是线程安全的 并报告了CXF-3558 。 作为解决方法我必须通过将其 子类化 来同步 CommonsPoolTargetSource 使用的客户端工厂 import org.apache.commons.pool.ObjectPool; import org.apache.commons.pool.PoolUtils; import org.springframework.aop.target.CommonsPoolTargetSource;public class SynchCommonsPoolTargetSource extends CommonsPoolTargetSource {Overrideprotected ObjectPool createObjectPool() {return PoolUtils.synchronizedPool(super.createObjectPool());}} 似乎需要同步工厂所以我创建了SPR-8382-也许它将找到正式发行的方式。 顺便说一句在撰写本文时我还报告了IDEA-70365 – 报告了List类型bean的 虚假 “无法自动装配”错误 。 最后 我们的负载平衡和故障转移就像一个魅力。 下一步将是暂时丢弃掉了几秒钟的节点如果此后端点仍然掉线则增加此时间。 但是Apache CXF在这一领域的API如此糟糕以至于我不得不离开这个话题一段时间。 也许您可以帮忙 参考 NoBlogDefFound博客上的 JCG合作伙伴 Tomasz 在Apache CXF中启用负载平衡和故障转移 。 相关文章 具有Spring和Maven教程的JAX–WS Spring 3 RESTful Web服务 Tomcat 7上具有RESTeasy JAX-RS的RESTful Web服务– Eclipse和Maven项目 翻译自: https://www.javacodegeeks.com/2011/06/apache-cxf-load-balancing-failover.htmlapache cxf
http://www.zqtcl.cn/news/38264/

相关文章:

  • 有哪些专门做减肥内容的网站工商管理局注册查询
  • 国外怎么做直播网站wordpress 主页面错乱
  • 桂林网站开发公司电话top域名的网站打不开
  • 咸宁网站设计公司4006668800人工服务几点
  • 广州做网站基本流程北京城乡住房建设厅网站
  • 网站设计计费深圳本地招聘网站
  • 网站正在建设页面制作网站免费建站
  • 做3ds磁铁卡网站微信网络推广方案
  • 金华英文网站建设做网站中的镜像是什么
  • 个人博客网站的建设结构图广安发展建设集团官方网站
  • php做网站如何架构app软件网站开发
  • 卖渔具的亲戚做网站怎么样做一家装修竞标网站
  • 六一儿童节网站制作seo的工作内容
  • 代发新闻稿的网站商品的销售网站总体设计
  • 服务网站建设公司百度论坛首页官网
  • wordpress网站翻译插件网站开网站开发设计公司
  • 没固定ip怎么做网站新品怎么刷关键词
  • 淳安县建设网站免费会员黄页网
  • 创建销售网站多少钱wordpress 邮件回复
  • 山西响应式网站建设哪家有网上下载的免费网站模板怎么用
  • 网站建设市区制作网站的软件
  • 中国制造网国际站wordpress 文章图片插件
  • 投诉网站制作如何设置网站域名
  • 钰鸣厦门网站建设怎么在网站做视频接口
  • asia 域名 知名网站阳西县建设局网站
  • 图片手机网站模板网页设计公司官网功能图
  • 网站qq登录原理套做网站
  • 网站空间是什么做网站的职位
  • 雅安网站建设网站页面seo
  • 主播网站建立档案门户网站建设方案