Web Service学习笔记

 

WebService 基础

什么叫 Web service

它是一套标准,它定义了应用程序如何在 Web 上实现互操作性。你可以用任何你喜欢的语言,在任何你喜欢的平台上写 Web service ,只要我们可以通过 Web service 标准对这些服务进行查询和访问。

 

Ws 的相关名词解释:

JAX-WS Java API for XML Web Services.

SOAP :simple object access protocal

    Web Service 的操作调用是通过SOAP 处理的.

In JAX-WS, a web service operation invocation is represented by an XML-based protocol such as SOAP.

  The SOAP specification defines the envelope structure, encoding rules, and conventions for representing web service invocations and responses. These calls and responses are transmitted as SOAP messages (XML files) over HTTP.

 

WSDL :web service description language.WSDL specifies an XML format for describing a service as a set of endpoints operating on messages.

 

SAAJ :java 提供的包装SOAP 消息的API 。包名:javax.xml.soap

 

JAX-WSjava 方法的参数类型和返回类型并不是所有都被支持。所以就要用到JAXB

JAXB :JavaTM Architecture for XML Binding provides a fast and convenient way to bind between XML schemas and Java representations

 

Apache CXF

Apache CXF 一个开源的 Service 框架,它实现了 JCPWeb Service 中一些重要标准。 CXF 简化了构造,集成,面向服务架构 (SOA) 业务组件与技术的灵活复用。在 CXF 中, Service 使用 WSDL 标准定义并能够使用各种不同的消息格式 (binding) 和网络协议 (transports) 包括 SOAPXML (通过 HTTPJMS )进行访问。 CXF 同样支持多种 model 如: JAX-WSJBISCACORBA serviceCXF 设计成可灵活部署到各种容器中包括 Spring-basedJBISCA ServletJ2EE 容器。

官方网站 http://cxf.apache.org

一些重要的类解释

1. @XmlType 将一个类或者枚举类型转换为 xml 元素类型。

2. @ XmlAccessorType (XmlAccessType. FIELD ) :设置 java   fields 或者 java bean 属性的序列化 方式

3. @ XmlElement (nillable = false , name = "entry" ) :通过给定的名字,将一个 java property 映射为 xml 元素。

       Nillabl e 将元素声明自定义为 nillable 如果 nillable() true ,那么 JavaBean 属性被映射到 XML 模式 nillable 元素声明。

 

4. XmlAdapter<ValueType,BoundType> java 类型的转换规则。 修改 Java 类型以适应自定义编组。 对于 SOAP 不支持的类型,需要使用到该类,如 map

       类型参数:

BoundType - JAXB 不知道如何处理的一些类型。编写一个适配器,以便允许通过 ValueType 将此类型用作内存表示形式。

ValueType - JAXB 无需其他操作便知道如何处理的类型。

方法:

       public abstract ValueType marshal(BoundType v)

    编组过程中, JAXB 绑定框架调用 XmlAdapter.marshal(..) bound 类型修改为 value 类型,然后将 value 类型编组为 XML 表示形式。

    public abstract BoundType unmarshal(ValueType v)

       解组过程中, JAXB 绑定框架首先将 XML 表示形式解组为 value 类型,然后调用 XmlAdapter.unmarshal(..) value 类型修改为 bound 类型。

5. @XmlJavaTypeAdapter :使用一个实现了 XmlAdapter 的类来定义编组过程。  

编写基于 CXF ws 程序过程:

1.    创建 Maven 工程

a)      导入依赖关系

<dependencies>

       <dependency>

           <groupId>org.apache.cxf</groupId>

           <artifactId>cxf-rt-core</artifactId>

           <version>${cxf.version}</version>

       </dependency>

       <dependency>

           <groupId>org.apache.cxf</groupId>

           <artifactId>cxf-rt-frontend-simple</artifactId>

           <version>${cxf.version}</version>

       </dependency>

       <dependency>

           <groupId>org.apache.cxf</groupId>

           <artifactId>cxf-rt-frontend-jaxws</artifactId>

           <version>${cxf.version}</version>

       </dependency>

       <dependency>

           <groupId>org.apache.cxf</groupId>

           <artifactId>cxf-rt-databinding-aegis</artifactId>

           <version>${cxf.version}</version>

       </dependency>

       <dependency>

           <groupId>org.apache.cxf</groupId>

           <artifactId>cxf-rt-transports-local</artifactId>

           <version>${cxf.version}</version>

       </dependency>

       <dependency>

           <groupId>org.apache.cxf</groupId>

           <artifactId>cxf-rt-transports-http</artifactId>

           <version>${cxf.version}</version>

       </dependency>

       <dependency>

           <groupId>org.apache.cxf</groupId>

           <artifactId>cxf-rt-transports-http-jetty</artifactId>

           <version>${cxf.version}</version>

       </dependency>

       <dependency>

           <groupId>org.apache.cxf</groupId>

           <artifactId>cxf-rt-transports-jms</artifactId>

           <version>${cxf.version}</version>

       </dependency>

       <dependency>

           <groupId>org.apache.cxf</groupId>

           <artifactId>cxf-rt-management</artifactId>

           <version>${cxf.version}</version>

       </dependency>

       <dependency>

           <groupId>org.apache.cxf</groupId>

           <artifactId>cxf-common-utilities</artifactId>

           <version>${cxf.version}</version>

       </dependency>

       <dependency>

           <groupId>org.mortbay.jetty</groupId>

           <artifactId>jetty</artifactId>

           <version>6.1.6</version>

       </dependency>

       <dependency>

           <groupId>junit</groupId>

           <artifactId>junit</artifactId>

           <version>3.8.2</version>

           <scope>test</scope>

       </dependency>

     </dependencies>

b)      把JDK版本设置为5.0

<plugin>

              <groupId>org.apache.maven.plugins</groupId>

              <artifactId>maven-compiler-plugin</artifactId>

              <version>2.0.2</version>

              <configuration>

                  <source>1.5</source>

                  <target>1.5</target>

                  <encoding>UTF-8</encoding>

              </configuration>

</plugin>



2.    编写 ws 服务接口。

3.    编写服务实现类。

4.    创建启动程序。

5.    编写客户端测试代码。

 

服务器端和客户端代码:

服务器端代码 :

       Endpoint.publish ( address , implementor);

 

客户端代码:

       JaxWsProxyFactoryBean factoryBean = new JaxWsProxyFactoryBean();

       factoryBean.setServiceClass(WSServer. class );

       factoryBean.setAddress(endpointAddress);

       wsservice = (WSServer) factoryBean.create();

 

 

 

 

 

  活色生香第二辑-66种生活

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值