科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件使用Weblogic Integration的应用程序架构

使用Weblogic Integration的应用程序架构

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

  在一个已经使用Weblogic Integration和Workshop开发出多个应用程序的环境中,您可能希望考虑一种支持以下功能的方法:

作者:中国IT实验室 来源:中国IT实验室 2007年8月23日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

第3部分:对性能调优和部署的影响

性能调优

  根据层选择多个项目之后,正如本blog第2部分所述,业务模块或后端将为应用程序性能调优提供更多机会。如果来自后端的事件很多,为了防止默认队列中的所有线程都用于处理这些事件,出现线程饥饿的情况,这就相当有用。对于Files Event Generators,我们肯定能够使用针对文件事件生成器中的轮询文件的读取限制进行一些调整,但是这可能还不够。因此,为属于同一项目的所有流程指派一个专用的线程队列可能是一种更好的方法。

   对于异步调用的流程,或者对于具有缓冲方法调用的控件,AsyncDispatcher队列将用于调用一个Message Driven Bean,而这个Message Driven Bean将使用在Workshop项目的WEB-INF/wlw-config.xml文件中指定的执行队列。这种设置将在底层EJB的DD中生成正确的指派元素。

<wlw-config xmlns=”http://www.bea.com/2003/03/wlw/config/”>
...
...
<async-dispatch-policy>application.project.ExecuteQueueName</async-dispatch-policy>
</wlw-config>

   对于同步调用,例如由一个外部http Web Service调用启动的同步调用,需要在WEB-INF/web.xml中指定线程队列。

  应该使用Weblogic Server管理控制台创建相关的执行队列。如果这些队列不存在于服务器上,那么将使用默认的队列。

  可以在wlw-config.xml Configuration File中找到更多信息。

   要了解Workshop的内在本质,可以参考这篇文章http://dev2dev.bea.com/pub/a/2004/06/wlw_internals.html。

项目和应用程序命名

  在一个Weblogic域中,Workshop项目名称必须是独一无二的。一个Weblogic域可以作为组成Workshop项目的许多Workshop应用程序的宿主。为了避免上下文冲突,使用应用程序名称作为所有项目的前缀是一个不错的选择:

   [WorkshopProjectName] = [ApplicationName][ModuleName]

   使用Web Service Control或Service Broker Control来访问项目上下文或流程是通过使用(默认)包含项目名称的URL来实现的。例如,我们将会有:

   http://server:port/[WorkshopProjectName]/com/mycompany/mymodule/.../ClientOrder.jpd

   Workshop项目内部使用的JMS队列也是从Workshop项目名称导出的。一个叫做WorkshopProjectName 的项目将需要两个队列:

   [WorkshopProjectName]Processes.queue.AsyncDispatcher

   [WorkshopProjectName]Processes.queue.AsyncDispatcher_erreur 

从开始就考虑控制有状态流程的版本

  在 Versioning JPD On Running Instances中可以找到有用的相关支持模式。 

调用流程及相关考虑

  当在同一个域中从一个流程调用另一个流程时,根据设计抉择可以选择使用Process Control或Message Broker。如果它们位于同一个Weblogic Integration域中,这将对不同项目或不同应用程序中的流程有效。从另一个Weblogic域调用流程可以使用Service Broker Control、Web Service Control或JpdProxy来完成。后者可以在任意java客户端中使用。

  可以把Process Controls 复制到 ControlsProject,从而在不同项目或不同应用程序中的流程之间共享它们。

  使用Process Control时,如果子流程是同步的,它将与调用者在同一个线程中执行。在同一个Weblogic Integration域中使用Service Broker Control而不是Process Control,这将使用在被调用的流程一方的另一个线程,因为它将通过基于HTTP的 SOAP协议被调用;这对于性能来说不是最优的。

   借助复杂的Java类型,跨应用程序边界使用Process Control进行同步调用时,需要进行特殊的考虑。应该把java类添加到应用服务器的系统classpath中,以避免classcast异常。有关classcast异常的信息,请参考http://e-docs.bea.com/wli/docs81/relnotes/relnotesLimit.html#1268647文档。

  注意:在jpd中创建的XmlBeans文档是以特殊方式进行处理的。这由XmlBean的Factory完成,而它将根据其执行的上下文来创建bean。当在流程的上下文中调用XmlBean的Factory时,它将创建一个类型为com.bea.wli.variables.ProcessXML的代理对象,允许在应用服务器系统classpath中没有XmlObjects类的情况下,借助XmlObjects跨应用程序边界使用Process Control进行同步调用。

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章