SOA中的“S”

 
   | |

导读:关注WebService,SOA的核心理念是"S",即服务。SCA绑定用于包含在SCA域里的引用和服务之间的服务交互。绑定类型以哪种方式被实现没有在SCA规范中定义。

关键词:WebService SOA 服务 SCA 绑定

 
正在加载数据...

  这些天一直在关注WebService,SOA的核心理念是“S”,即服务。当我们的构件完成之后,究竟如何发布为何种服务,这就设计到了SCA绑定的问题。我这里研究了一下Cxf框架,与大家一同分享,如理解有偏差,请大家指出,谢谢。

  SCA绑定用于包含在SCA域里的引用和服务之间的服务交互。绑定类型以哪种方式被实现没有在SCA规范中定义,它可以被不同的SCA运行时(runtimes)通过不用的方式实现。唯一的要求是:SCA绑定类型中必需的服务必须被实现。

  Web Service绑定的Schema如下:

  <binding.ws wsdlElement="xs:anyURI"?

                      wsdli:wsdlLocation="list of xs:anyURI"?

               ...>

           <wsa:EndpointReference>...</wsa:EndpointReference>*

            ...

       </binding.ws>

   1. Endpoint URI 解析

  解析SCA服务中的URI的规则已经制定好了,URI是如下形式:

  1). endpoint里的URIs或由wsa:EndpointReference的wsa:Address元素指定的URI

  2). 在binding.ws元素中使用“uri”属性显示指定

  3). 由组装规范(Assembly specification)定义的隐式URI。

  2. SCA服务的WSDL描述

  任何一个拥有1个或多个使用HTTP的web 服务绑定的服务必须返回一个WSDL描述,通过在HTTP endpoint后加上一个“?wsdl”的一个http get请求后缀就可以得到。

  下面是一个使用CXF框架生成WSDL描述的的helloworld例子:

  1.定义接口

   @WebService 
  public interface HelloWorld {  
      String sayHi(@WebParam(name="text") String text);  
  }

  2.实现接口

  @WebService(endpointInterface = "com.zx.cxf.service.HelloWorld", serviceName = "HelloWorld")
  public class HelloWorldImpl implements HelloWorld {

   public String sayHi(String text) {
    return "Hello " + text;
   }
  }

  3.配置并发布服务

   <jaxws:endpoint id="helloWorld"
    implementor="com.zx.cxf.service.HelloWorldImpl"
    address="/HelloWorld">
   </jaxws:endpoint>

   4.查看WSDL描述

  <?xml version="1.0" encoding="UTF-8" ?>

  - <wsdl:definitions name="HelloWorld"   targetNamespace="http://service.cxf.zx.com/"   xmlns:ns1="http://cxf.apache.org/bindings/xformat"   xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"   xmlns:tns="http://service.cxf.zx.com/"   xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"   xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  - <wsdl:types>
  - <xs:schema attributeFormDefault="unqualified"   elementFormDefault="unqualified"   targetNamespace="http://service.cxf.zx.com/"   xmlns:tns="http://service.cxf.zx.com/"   xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="sayHi" type="tns:sayHi" />
    <xs:element name="sayHiResponse" type="tns:sayHiResponse" />
  - <xs:complexType name="sayHi">
  - <xs:sequence>
    <xs:element minOccurs="0" name="text" type="xs:string" />
    </xs:sequence>
    </xs:complexType>
  - <xs:complexType name="sayHiResponse">
  - <xs:sequence>
    <xs:element minOccurs="0" name="return" type="xs:string" />
    </xs:sequence>
    </xs:complexType>
    </xs:schema>
    </wsdl:types>
  - <wsdl:message name="sayHiResponse">
    <wsdl:part element="tns:sayHiResponse" name="parameters" />
    </wsdl:message>
  - <wsdl:message name="sayHi">
    <wsdl:part element="tns:sayHi" name="parameters" />
    </wsdl:message>
  - <wsdl:portType name="HelloWorld">
  - <wsdl:operation name="sayHi">
    <wsdl:input message="tns:sayHi" name="sayHi" />
    <wsdl:output message="tns:sayHiResponse" name="sayHiResponse" />
    </wsdl:operation>
    </wsdl:portType>
  - <wsdl:binding name="HelloWorldSoapBinding" type="tns:HelloWorld">
    <soap:binding style="document"   transport="http://schemas.xmlsoap.org/soap/http" />
  - <wsdl:operation name="sayHi">
    <soap:operation soapAction="" style="document" />
  - <wsdl:input name="sayHi">
    <soap:body use="literal" />
    </wsdl:input>
  - <wsdl:output name="sayHiResponse">
    <soap:body use="literal" />
    </wsdl:output>
    </wsdl:operation>
    </wsdl:binding>
  - <wsdl:service name="HelloWorld">
  - <wsdl:port binding="tns:HelloWorldSoapBinding"   name="HelloWorldImplPort">
    <soap:address location="http://localhost:8081/CxfServiceTest/HelloWorld" />
    </wsdl:port>
    </wsdl:service>
    </wsdl:definitions>

  5. 客户端访问

   public static void main(String args[]) throws Exception {
    JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
    factory.getInInterceptors().add(new LoggingInInterceptor());
    factory.getOutInterceptors().add(new LoggingOutInterceptor());
    factory.setServiceClass(HelloWorld.class);
    factory
      .setAddress("http://localhost:8080/CxfService/HelloWorld");
    HelloWorld client = (HelloWorld) factory.create();

    String reply = client.sayHi("HI");
    System.out.println("Server said: " + reply);
   }

  原文出处:http://gocom.primeton.com/blog12255_35328.htm

 
来源:goCom构客网    作者:liang_ma    
 
 
 
 
 

SCA

 
服务组件架构(SCA)标准体系的愿景,起源于IBM和BEA的概念,对面向服务架构(SOA)来说具有编程标准的性质,这个说法来自于……
 
随着SCA/SCDL工具集的发展和时间的变化,很可能会改变。和微软的Frontpage一样,简化了基于HTML Web网站的开发过程,新厂商的产品……
 
SOA和Web服务已经成为主流,有些人认为它们现在实际上代表了部署新应用与合成服务。组件重用、开放标准和轻松装配合成服务……
 
Oracle近日发布了融合中间件11g套装,其目标是成为支持所有应用开发架构的产品。本次的11g产品代表了Oracle收购应用程序架构厂商BEA以来……
 
目标映射API是为XML模板文档设计的一个编程接口。它描述了一个XML文档被访问和被操作的方式。其目标是为众多应用程序提供一个标准编程接口……

热门技术手册排行

 

随着开源技术越来越成熟,一个稍有开发经验的人通过学习就可以用开源的产品和技术构建一套可用的系统。对于从事软件开发的人员,尤其是对Java或动态语言相关领域的人来说,“开源”也许是他们最喜爱的单词。但是,很多时候我们需要的不仅仅是一个可用的系统,而是希望这个系统开发更简易、性能更高和扩展性更好等。这确实是一个令人头痛的问题。本指南很多地方都是点到为止,要深入了解相关信息的读者请借助参考资料、网站等自行挖掘。

 

本专题分六部分探讨SOA设计模式,当初设计面向服务架构的一大初衷就是降低服务间耦合度,由此提高服务的灵活性和自由度。

 

业务流程管理(business process management,bpm)不是一个新概念,甚至不是一个新名词。它是从相关的业务流程变革领域,如业务流程改进(bpi)、业务流程重组(bpr)、业务流程革新中发展起来的。流程管理技术也是从早期的工作流管理、eai、流程自动化、流程集成、流程建模、流程优化等技术中发展起来的。

 

TOAGF是一个架构框架,简而言之,TOGAF是一种协助发展,验收,运行,使用,和维护架构的工具。它是基于一个迭代(Iterative)的过程模型,支持最佳实践和一套可重用的现有架构资产。

 

云计算的概念越来越流行,Amazon、Google和IBM是第一批将云计算引入公众视线的公司。云计算就是新的Web2.0,一种既有技术上的市场绽放。

 

Mashup是一个非常cool的新的应用程序种类。如果你想真正的了解它们,我们需要回过头来看看你现在的计算机,其实它就是一个非常好的帮助你理解mashup的模型。现在开源的操作系统无疑是非常好的apis的集合或应用程序编程接口,帮助开发者去构建其应用程序。计算机本身也是一个很好的为用户提供接口的例子,键盘和鼠标可以被理解为你通过计算机的接口而使用的不同的应用程序。本技术手册为读者提供了一些相关信息,如果需要深入了解mashup,读者可以借助其他参考资源。

查看更多
 
 

登录TechTarget中国

关闭
本服务仅向TechTarget中国的会员开放,请登录或立即免费注册
电子邮件地址:
请输入您的电子邮件地址
密码:
下次自动登录