Struts中 Action 类调用 WSManager 类中的相关方法来使用 Web 服务。 WSManager 获取所要求的响应——或者如果有一个被解除了就会出现异常——将它回传给 Struts 控制器。
WSManager
WSManager 接收 JAX-RPC 端点的请求。将 WSManager 类中的方法调用映射到新来的客户端请求。这些新来的客户端请求是 SOAP 信息的格式。WSManager 必须实现安全认证,转变参数,在指定请求到模型服务之前,要对这些请求进行参数预处理。请求所包含的参数形式有 Java 对象,Java原始参数,XML 文档,或者甚至是 SOAP 文档分片(例如,SOAP Element 对象)。这些类型必须要转化成内部所支持的 schema(例如,预定义的 Java 数据访问对象)。
虽然 WSManager 可以很直接地处理与 Java 对象结合的参数,但它还需要采取一些附加步骤来处理 XML 文档。建议以下步骤:
1. WSManager 类应该能够通过XML Schema来验证XML文档的有效性。
2. WSManager 类接着要把 XML 文档转化成内部支持的 schema。
3. 最后 WSManager 应该分解文档并且尽可能地将它映射到域对象中去。
WSManager 实现以下任务是非常重要的:
1. 身份验证和授权使用
2. 错误处理
3. 缓存。
WSManager 也可以生成响应;这个过程由方法调用返回值的简单构造所组成。WSManager 中保留这样的功能,您可以通过缓存数据从而避免重复访问模型服务层。您还可以集中管理响应聚集以及 XML 文档转换,如果您要返回给调度者的文档必须遵守与内部 schema 不同的 schema 时,这一点就显得尤其重要。
WSManager 处理所有SOAP 请求并把它们委派到模型层所暴露的业务逻辑。如果模型服务是作为一个 EJB 层来实现,那您一样可以在 EJB 层中通过 Session Fa?ade 设计模式来实现。如果您采用这种模式执行 WSManager ,您将获得很多好处,因为 WSManager 会:
☆ 作为初始联系点来管理请求与服务
☆ 调用安全服务,包括身份验证与授权使用,从而避免任何重复的层访问。
☆ 委派业务处理(采用由 Struts 应用程序所使用的模型服务)
☆ 在 WSManager 层缓存数据避免任何不必要的数据库访问。
发布者:展示 Web 服务
在 WSManager 类中实现的每一个公共方法都将作为一种 Web 服务发布出来。换句话说,您要为这些类发布一种 Web 服务描述 。Web 服务描述是由服务的 Web 服务描述语言(Web Services Description Language,WSDL)描述与由它所引用的任何 XML schema 所组成。(WSDL 是描述服务的标准语言。)
您可以在公共注册中心或在企业内的公司注册表上发布 Web 服务描述。同样,你也可以发布由WEB 服务定义的XML Schema到同一个公共的或者公司专有的(UDDI)注册中心上。 Java Web 服务客户端采用 JAXR 应用编程接口来查询公司或公共注册表上的服务描述。
如果您的客户都是专有的合作伙伴,那您就不需要使用注册表了。不过,您可以在您的应用程序的 Web 层或者在具备适当安全保护的熟知位置来发布您的 Web 服务描述( WSDL 和 XML schemas)。例如,假想有一个转售者的客户应用程序,他与某个特殊厂商有协定。客户应用程序已经在厂商开发时间中静态地 与 Web 服务结合在一起了。只有授权的团体才可以查询 XML schema 或者从 Web 层检索服务描述来生成客户端代码。您应该在 WSManager 层中执行有效客户的身份验证和授权使用。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
相关推荐
-
内存数据网格提供商一头扎进Java
10年的时间里,应用性能解决方案提供商Alachisoft一直在用NCache(针对N-Tier和网格计算.NET应用的内存计算和数据网格产品)为.NET社区服务。
-
docker当作web环境好吗?
-
遇到这样一个问题:通过java service wrapper部署应用,wrapper进程占用的内存会一直升高, 直到把内存吃完应用崩溃,但是这个wrapper
遇到这样一个问题:通过java service wrapper部署应用,wrapper进程占用的内存会一直升高 […]
-
为什么Web会成为承载云计算的核心?