岁月联盟 · 中国技术网 本站主页 | 安全认证 | 用户服务 | 技术论坛
新闻快报 | 新手学堂 | 黑客特区 | 程序语言 | 数 据 库 | 防 火 墙 | 路由交换 | 系统集成 | 服 务 器 | 存储备份 | 考试认证
Windows | Linux | Java | 协议分析 | 问题解答 | 进程大全 | 网页设计 | 多 媒 体 | 图库资料 | 软件下载 | 站内下载
  您现在的位置: 岁月联盟 >> Java >> 核心技术 >> JavaMedia >> Java正文
用JMS客户端利用空闲的计算机资源
作者:未知 文章来源:本站整理 点击数: 更新时间:2007-7-22 17:30:05
。分发工作流监听/UnitOfWork/StartWorkflow通道,该通道被绑定在与JMS Worker.Message队列相关联的JMS事件生成器上。只要有一个String “start”消息交付到此通道上,工作流就会开始工作。类似地,开始之后,分发工作流就会在它的一个Event Choice节点中监听Message Broker通道(/UnitOfWork/StopWorkflow),以便从Worker.StopMessage JMS队列接收”stop”消息。然后,事件生成器再次把Worker.StopMessage队列上的JMS消息关联到/UnitOfWork/StopWorkflow通道,以便交付消息。
  这实际上创建了一种与启动和停止分发工作流的实现解耦合的面向服务方法。通过Web服务客户端,或者使用所提供的Weblogic Integration Workshop Test Browser,可以轻松对Web服务进行测试。
  分发工作流
  图2说明了负责分发工作单元的DistributeFlow.jpd、我们的简单矩阵对象以及请求队列的相关部分:

图2. 用于分发工作单元的工作流

  while循环不断地循环,直到一条stop消息改变布尔变量的值,才跳出循环并结束工作流。Event Choice等待两个Control Receive回调的其中一个。第一个回调是通过刚刚描述的Web服务从一个Message Broker通道接收一条Stop消息。第二个回调对一个Timer控件做出响应,我们已经通过该控件的属性面板对它进行了设置,每5秒钟发生一次。这将使处理继续,而下一个行为将调用定制Java控件来浏览Worker.Request队列,以获得等待处理的请求的个数。接下来,决策节点检查请求的个数是否已经超出请求的最大个数(此处的最大个数被设置为5,其值保存在一个变量中)。如果尚未超出,就会调用一个执行节点,然后使用JMS控件在请求队列中放入5个矩阵对象,如下所示:

public void perform() throws Exception {
  for(int i = 0 ; i < maxInQueue; i++) {
    matrix = new SimpleMatrix();
    jmsControl.sendObjectMessage(matrix);
  }
}

  响应工作流的JMS客户端
  响应工作流的JMS客户端与前面在WebLogic Server部分中描述的JMS客户端几乎一模一样。惟一的区别在于,现在客户端使用一条字节消息(而不是对象消息)对响应队列做出响应。客户端把SimpleMatrix对象转换为一个字节数组,并将其传递给响应队列。这样做的理由是,与绑定到响应队列的事件生成器相关联的Message Broker通道只能够监听数据流,即String、XML Bean或字节数组。相关代码被设计用于对WebLogic Integration请求消息和普通的Weblogic Server请求消息做出响应。

  接收一个已完成的工作单元的工作流如图3所示:

图3.接收程序的工作流

  这里的重要行为是perform节点,它用于把字节数组转换为一个对象并调用print()和store()方法。

public void perform() throws Exception {
   ByteArrayInputStream arrayInputStream = new
        ByteArrayInputStream(rawData.byteValue());
   ObjectInputStream objectInputStream = new
        ObjectInputStream(arrayInputStream);
   UnitOfWork unit = (UnitOfWork) objectInputStream.readObject();
   unit.print();
   unit.store();
   objectInputStream.close();
}

使用Weblogic Integration工作流
  您已经了解到,使用工作流、Java控件和Message Broker通道可以提供一种更加完善的方式,把工作分发给未完全利用的计算机。只要在流程流中添加更多的行为节点,就可以让处理过程变得像您所期望的那样面面俱到。例如,该工作流可以有一个审计控件,用于在把所有发送到内部日志文件的请求放到队列中之前对其进行审计。该工作流可以把请求重定向到其他JMS队列,只要修改JMS控件的属性值即可。为了实现可扩展性,甚至可以让远程Web服务启动多个工作流实例。最后,基于业务安排,Timer控件的时间间隔可以更小。

  使用Message Broker通道和事件生成器的另一个好处在于,Weblogic Integration Administration Console可以监控事件生成器的响应消息的数量,以便实现进一步的控制。通过控制台,您可以挂起和恢复事件生成器及通道,从而对生产事件做出响应。
这种灵活性使得Weblogic Integration工作流成为一种极具吸引力的方法。

  结束语
  使用远程JMS客户端来分发工作的优点在于,它有效地利用了网络计算机来进行某种类型的批处理

上一页  [1] [2] [3] [4] [5] 下一页


  • 上一个Java:
  • 下一个Java: 没有了
  •  
    热门文章
    推荐文章
    关于我们 | 发展历程 | 网站地图 | 广告服务 | 招贤纳士 | 战略合作 | 友情链接 | 著作声明 | 联系我们
    Copyright © 2002-2007 SYUE All rights reserved.
    E_mail:WebSyue@163.Com 皖ICP备05004589号
    未经授权禁止转载、摘编、复制或建立镜像.如有违反,追究法律责任.
    惊天动地私服 天龙八部私服 天龙八部私服 热血江湖私服 天龙八部私服 bet365 魔域私服 劲舞私服 传奇世界私服 bet365 传世私服 传奇世界私服