在 Web 服务领域引入 MVC 模式的功能(3)

来源:互联网 发布:js中getattribute 方法 编辑:程序博客网 时间:2024/04/29 21:21
Struts 控制器

  MVC 体系结构的控制器部分主要集中于接收客户端的请求(一般为运行 Web 浏览器的用户),决定执行哪一种业务逻辑功能来响应请求,然后负责生成下一个用户界面连接到合适的视图组件上去。在 Structs 中,控制器的主要组件就是 ActionServlet 类的一个小服务程序。

  ActionServlet 负责通过 XML 文档将 URI 请求映射到特定的行为。这个文档包含了 URI 请求列表而且还告知 ActionServlet 它应该如何分配每个请求。这种方法有几个好处:

  应用程序的整个逻辑流程在分级文本文件中。

  这种格式的列表更容易查看与理解,尤其是对于一个很大的应用程序而言。

  ActionServlet 决定了应用程序的流程。许多 Action 类都继承了 ActionServlet 。每个 Action 类:

  都映射到各自独立的进程
  通过 Struts 的 ActionController 与 Structs JSPs 相结合

  作为继承 Struts中 Action 类的一个 Java 类来实现。

  Struts中 Action 类调用 WSManager 类中的相关方法来使用 Web 服务。 WSManager 获取所要求的响应(或者如果有一个被解除了就会出现异常)将它回传给 Structs 控制器。

  WSManager

  WSManager 接收 JAX-RPC 端点的请求。将 WSManager 类中的方法调用映射到新来的客户端请求。这些新来的客户端请求是 SOAP 信息的格式。WSManager 必须实现安全确定性,转变参数,在指定请求到模型服务之前,要对这些请求进行参数预处理。请求所包含的参数形式有 Java 对象,Java原始参数,XML 文档,或者甚至是 SOAP 文档分片(例如,SOAP Element 对象)。这些类型必须要转化成内部所支持的 schema(例如,预定义的 Java 数据访问对象)。

  虽然 WSManager 可以很直接地处理与 Java 对象结合的参数,但它还需要采取一些附加步骤来处理 XML 文档。建议以下步骤:

  WSManager 类必须能够确定新来的 XML 文档而不是它的 schema.
  WSManager 类接着要把 XML 文档转化成内部支持的 schema.
  最后 WSManager 应该分解文档并且尽可能地将它映射到域对象中去。

  WSManager 实现以下任务是非常重要的:

  身份验证和授权使用
  错误处理

 缓存

  WSManager 也可以生成响应;这个过程由方法调用返回值的简单构造所组成。WSManager 中保留这样的功能,您可以通过缓存数据从而避免重复访问模型服务层。您还可以集中管理响应聚集以及 XML 文档转换,如果您要返回给调度者的文档必须遵守与内部 schema 不同的 schema 时,这一点就显得尤其重要。

  WSManager 处理所有新来的 SOAP 请求并授权它们连接到出现在模型服务中的业务逻辑。如果模型服务是作为一个 EJB 层来实现,那您一样可以在 EJB 层中通过 Session Façade 设计模式来实现。如果您采用这种模式执行 WSManager ,您将获得很多好处,因为 WSManager 会:

  作为初始联系点来管理请求与服务
  调用安全服务,包括身份验证与授权使用,从而避免任何重复的层访问。
  授权业务处理(采用由 Structs 应用程序所使用的模型服务)
  在 WSManager 层缓存数据避免任何不必要的数据库访问。

  发布者:展示 Web 服务

  在 WSManager 类中执行的每一个公共方法都将作为一种 Web 服务发布出来。换句话说,您要为这些类发布一种 Web 服务描述 。Web 服务描述是由服务的 Web 服务描述语言(Web Services Description Language,WSDL)描述与由它所引用的任何 XML schema 所组成。(WSDL 是描述服务的标准语言。)

  您可以在公共注册表或在企业内的公司注册表上发布 Web 服务描述。您还可以发布 XML schema,这些是由相同公司或公共存储器上的 Web 服务所定义的。 Java Web 服务客户端采用 JAXR 应用编程接口来查询公司或公共注册表上的服务描述。