梦相随1006

版权归 梦相随1006 所有,未经 https://www.cnblogs.com/xin1006 作者许可,严禁转载

导航

webservice02#wsdl#tcpmon#annotation定制参数名#服务类型

1,wsdl深入讲解

  1>types:用来定义访问的类型,它的具体内容打开属性schemaLocation的值就可以看到,通过msimport导出之后都会产生相应的对象 比如 add.java addResponse.java minus.java minusResponse.java 。

<types>
    <xsd:schema>
        <xsd:import namespace="http://service.webservice.yangw.com/" schemaLocation="http://localhost:8888/ns?xsd=1"/>
    </xsd:schema>
</types>    

  打开http://localhost:8888/ns?xsd=1的内容如下:

  

  SOAP (Simple Object Access Protocol),简单对象访问协议,通过XML传输对象的

  soap协议是用SOAPMessage来传递的

  2>message: 每个方法必须为参数写消息,也必须为返回值写消息

<message name="minus">
    <part name="parameters" element="tns:minus"/>
</message>
<message name="minusResponse">
    <part name="parameters" element="tns:minusResponse"/>
</message>
......

  3>portType: 指明服务器的接口,operation指明接口中的方法

<portType name="IMyService">
  <operation name="minus">
    <input message="tns:minus"/>           -- 参数
    <output message="tns:minusResponse"/>  -- 返回值
  </operation>
  <operation name="add">
    <input message="tns:add"/>
    <output message="tns:addResponse"/>
  </operation>
</portType>

  4>binding: 指定传递消息使用的格式, 消息有两种方式呈现给用户“document”和“rbc”,document用的最多;

              消息以什么样的形式传递 “literal”使用xml形式的 

<binding name="MyServiceImplPortBinding" type="tns:IMyService">
  <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
  <operation name="minus">
    <soap:operation soapAction=""/>
    <input>
      <soap:body use="literal"/>
    </input>
    <output>
      <soap:body use="literal"/>
    </output>
  </operation>
  <operation name="add">
    <soap:operation soapAction=""/>
    <input>
      <soap:body use="literal"/>
    </input>
    <output>
      <soap:body use="literal"/>
    </output>
  </operation>
</binding>

  5> service 指定服务所发布的名称

<service name="MyServiceImplService">
  <port name="MyServiceImplPort" binding="tns:MyServiceImplPortBinding">
    <soap:address location="http://localhost:8888/ns"/>
  </port>
</service>

 

2,消息是如何传递的,这里使用一个webservice的监控工具 tcpmon

这个工具下载解压缩后,直接运行 tcpmon-1.0-bin\build\tcpmon.bat 即可

  

  将程序的 url地址端口改成我们的监听端口即可

package com.yangw.webservice.service;

import java.net.URL;

import javax.xml.namespace.QName;

public class MyClient {

    public static void main(String[] args) throws Exception{
        
        //我们也可以使用代参数的构造,指定URL和QName
        URL url=new URL("http://localhost:7777/ns?wsdl");
        //生成QName(名称空间,本地webservice提供的名称)
        QName qName=new QName("http://service.webservice.yangw.com/","MyServiceImplService");
        MyServiceImplService msis2=new MyServiceImplService(url,qName);
        IMyService ims2=msis2.getMyServiceImplPort();
        System.out.println(ims2.add(10, 4)); 
    }

}

 


     

    arg0,arg1,这样的名字没有意义,而且很难看,修改很简单的,在接口方法中加入相应的注解即可 @WebResult @WebParam

package com.yangw.webservice.service;

import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;

//说明该接口是服务提供接口
@WebService
public interface IMyService {

    @WebResult(name="addResult")
    public int add(@WebParam(name="a")int a,@WebParam(name="b")int b);
    @WebResult(name="minusResult")
    public int minus(@WebParam(name="a")int a,@WebParam(name="b")int b);
}

 

  ***注意,修改之后,要重新wsimport 覆盖客户端的程序才能使用.***

 3, 契约优先: 最大的好处可以定制标准

   代码优先:

4, 服务类型:  基于实体的服务(最多)

        基于功能的服务(如天气,统一发邮件)

        基于流程的服务(业务流程)     业务流程BPM 服务编排      工作流程JBPM是业务系统内部的流程

 

 

  

 

posted on 2014-02-20 19:24  梦相随1006  阅读(341)  评论(0编辑  收藏  举报