webservice学习笔记 --孔浩-昭通学院 20150423

01--
SEI(Service Endpoint Interface)
SIB(Service implementation Bean)   
CXF Axis Metro
**************************************************************
02--
wsimport -d d:/webservice/01/ -keep -verbose http://localhost:8888/ns?wsdl
wsimport -d d:/webservice/01/ -p test -verbose http://localhost:8888/ns?wsdl   //-p 有包
wsimport -d d:/webservice/01/ -p test -keep -verbose http://localhost:8888/ns?wsdl   

**************************************************************
03--
localhost:8888/ns?xsd=1
localhost:8888/ns?wsdl
TCPMon 消息监控


**************************************************************
09--
package org.itat.xml;

import java.io.StringReader;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;

import org.junit.Test;

public class TestJaxb {
    
     @Test
     public void test01(){
               try {
                    JAXBContext ctx = JAXBContext.newInstance(Student.class);
                    Marshaller marshaller = ctx.createMarshaller();
                    Student stud = new Student(1,"zhangsan",21,new Classroom(1,"jisuanji",2010));
                    marshaller.marshal(stud, System.out);
               } catch (JAXBException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
               }
              
     }
     @Test
     public void test02(){
          String xml="<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?><student><age>21</age><classroom><grade>2010</grade><id>1</id><name>jisuanji</name></classroom><id>1</id><name>zhangsan</name></student>";
          try {
               JAXBContext ctx = JAXBContext.newInstance(Student.class);
               Unmarshaller um = ctx.createUnmarshaller();
               Student stu = (Student) um.unmarshal(new StringReader(xml));
               System.out.println(stu.getName()+","+stu.getClassroom().getName());
          } catch (JAXBException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
          }
         
    
     }
}
**************************************************************
10--
package org.itat.stax;

import java.io.IOException;
import java.io.InputStream;

import javax.xml.stream.EventFilter;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.events.XMLEvent;

import org.junit.Test;

public class TestStax {

       @Test
       public void test01(){
            XMLInputFactory factory = XMLInputFactory.newFactory();
            InputStream is = TestStax.class.getClassLoader().getResourceAsStream("books.xml");
             try {
                  XMLStreamReader reader = factory.createXMLStreamReader(is );
                   while(reader .hasNext()){
                         int type = reader.next();
                         if(type ==XMLStreamConstants.START_ELEMENT){
                              System. out.println(reader .getName());
                        } else if (type ==XMLStreamConstants.CHARACTERS){
                              System. out.println(reader .getText().trim());
                        } else if (type ==XMLStreamConstants.END_ELEMENT){
                              System. out.println("/" +reader .getName());
                        }
                  }
            } catch (XMLStreamException e ) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
            } finally{
                   if(is !=null)
                         try {
                               is.close();
                        } catch (IOException e ) {
                               // TODO Auto-generated catch block
                               e.printStackTrace();
                        }
            }
      }
       @Test
       public void test02(){
            XMLInputFactory factory = XMLInputFactory.newFactory();
            InputStream is = TestStax.class.getClassLoader().getResourceAsStream("books.xml");
             try {
                  XMLStreamReader reader = factory.createXMLStreamReader(is );
                   while(reader .hasNext()){
                         int type = reader.next();
                         if(type ==XMLStreamConstants.START_ELEMENT){
                              String name = reader .getName().toString();
                               if(name .equals("book")){
                                    System. out.println(reader .getAttributeName(0)+":"+ reader.getAttributeValue(0));
                              }
                        }
                  }
            } catch (XMLStreamException e ) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
            } finally{
                   if(is !=null)
                         try {
                               is.close();
                        } catch (IOException e ) {
                               // TODO Auto-generated catch block
                               e.printStackTrace();
                        }
            }
      }
       @Test
       public void test03(){
            XMLInputFactory factory = XMLInputFactory.newFactory();
            InputStream is = TestStax.class.getClassLoader().getResourceAsStream("books.xml");
             try {
                  XMLStreamReader reader = factory.createXMLStreamReader(is );
                   while(reader .hasNext()){
                         int type = reader.next();
                         if(type ==XMLStreamConstants.START_ELEMENT){
                              String name = reader .getName().toString();
                               if(name .equals("title")){
                                    System. out.println(reader .getElementText()+":");
                              } if(name .equals("price")){
                                    System. out.println(reader .getElementText()+"\n");
                              }
                        }
                  }
            } catch (XMLStreamException e ) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
            } finally{
                   if(is !=null)
                         try {
                               is.close();
                        } catch (IOException e ) {
                               // TODO Auto-generated catch block
                               e.printStackTrace();
                        }
            }
      }
       @Test
       public void test04(){
            XMLInputFactory factory = XMLInputFactory.newFactory();
            InputStream is = TestStax.class.getClassLoader().getResourceAsStream("books.xml");
             try {
                  XMLEventReader reader = factory.createXMLEventReader(is );
                   while(reader .hasNext()){
                        XMLEvent event = reader .nextEvent();
                         if(event .isStartElement()){
                              String name = event.asStartElement().getName().toString();
                               if(name .equals("title")){
                                    System. out.println(reader .getElementText()+":");
                              } if(name .equals("price")){
                                    System. out.println(reader .getElementText()+"\n");
                              }
                        }
                  }
            } catch (XMLStreamException e ) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
            } finally{
                   if(is !=null)
                         try {
                               is.close();
                        } catch (IOException e ) {
                               // TODO Auto-generated catch block
                               e.printStackTrace();
                        }
            }
      }
       @Test
       public void test05(){
            XMLInputFactory factory = XMLInputFactory.newFactory();
            InputStream is = TestStax.class.getClassLoader().getResourceAsStream("books.xml");
             try {
                  XMLEventReader reader = factory.createFilteredReader(factory .createXMLEventReader(is),new EventFilter() {
                        
                         @Override
                         public boolean accept(XMLEvent event) {
                              
                               if(event .isStartElement()){
                                    String name = event.asStartElement().getName().toString();
                                     if(name .equals("title")|| name.equals("price" ))return true;
                              }
                               return false ;
                        }
                  });
                   while(reader .hasNext()){
                        XMLEvent event = reader .nextEvent();
                         if(event .isStartElement()){
                              String name = event.asStartElement().getName().toString();
                               if(name .equals("title")){
                                    System. out.println(reader .getElementText()+":");
                              } if(name .equals("price")){
                                    System. out.println(reader .getElementText()+"\n");
                              }
                        }
                  }
            } catch (XMLStreamException e ) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
            } finally{
                   if(is !=null)
                         try {
                               is.close();
                        } catch (IOException e ) {
                               // TODO Auto-generated catch block
                               e.printStackTrace();
                        }
            }
      }
}
**************************************************************

11--
        @Test
        public void test06(){
             XMLInputFactory factory = XMLInputFactory.newFactory();
             InputStream is = TestStax.class.getClassLoader().getResourceAsStream("books.xml" );
              try {
                    DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder();
                    Document doc = db.parse( is);
                    XPath xpath = javax.xml.xpath.XPathFactory.newInstance().newXPath();
                    NodeList list = (NodeList)xpath.evaluate("//book[@category='WEB']" , doc,XPathConstants.NODESET);
                     for(int i =0;i <list .getLength();i++){
                          Element e = (Element) list.item( i);
                           System. out.println(e .getElementsByTagName("title").item(0).getTextContent());
                    }
                    
             } catch (ParserConfigurationException e ) {
                     // TODO Auto-generated catch block
                     e.printStackTrace();
             } catch (SAXException e ) {
                     // TODO Auto-generated catch block
                     e.printStackTrace();
             } catch (IOException e ) {
                     // TODO Auto-generated catch block
                     e.printStackTrace();
             } catch (XPathExpressionException e ) {
                     // TODO Auto-generated catch block
                     e.printStackTrace();
             } finally{
                     if(is !=null)
                           try {
                                  is.close();
                          } catch (IOException e ) {
                                  // TODO Auto-generated catch block
                                  e.printStackTrace();
                          }
             }
       }
**************************************************************
14--
public class TestSoap {
       @Test
       public void test01(){
             try {
                   //1、创建消息工厂
                  MessageFactory factory = MessageFactory.newInstance();
                   //2、根据消息工厂创建SoapMessage
                  SOAPMessage message = factory .createMessage();
                   //3、创建SOAPart
                  SOAPPart part = message .getSOAPPart();
                //4、获取SOAPENvelope
                  SOAPEnvelope envelope = part .getEnvelope();
                   //5、可以通过SoapEnvelope有效的获取相应的Body和Header等信息
                  SOAPBody body = envelope .getBody();
                   //6、根据Qname创建相应的节点
                  QName qname = new QName("http://java.zttc.edu.cn/webservice" ,"add" ,"ns" );
                   body.addBodyElement(qname ).setValue("1234234");
                   //如果使用以下方式进行设置,会将<>转换为&lt; &gt;
                   //body.addBodyElement(qname).setValue("<a>1</a><b>2</b>");
                  SOAPBodyElement ele = body .addBodyElement(qname);
                   ele.addChildElement("a" ).setValue("22");
                   ele.addChildElement("b" ).setValue("33");
                   //打印消息信息
                   message.writeTo(System.out);
            } catch (SOAPException e ) {
                   e.printStackTrace();
            } catch (IOException e ) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
            }
            
      }
**************************************************************
15--soap消息的传递和处理--MESSAGE
private String ns = "http://service.soap.org/";
 private String wsdlUrl = "http://localhost:8989/ms?wsdl";
@Test
public void test02(){
       try {
             //1、创建服务(Service)
            URL url = new URL(wsdlUrl);
            QName sname = new QName(ns,"MyServiceImplService");
            Service service = Service.create( url,sname );
            
             //2、创建Dispatch
            Dispatch<SOAPMessage> dispatch = service .createDispatch(new QName(ns,"MyServiceImplPort" ),
                        SOAPMessage. class, Service.Mode.MESSAGE);
            
             //3、创建SOAPMessage
            SOAPMessage msg = MessageFactory.newInstance().createMessage();
            SOAPEnvelope envelope = msg .getSOAPPart().getEnvelope();
            SOAPBody body = envelope .getBody();
            
             //4、创建QName来指定消息中传递数据
            QName ename = new QName(ns,"add", "nn");
            SOAPBodyElement ele = body .addBodyElement(ename);
             ele.addChildElement("a" ).setValue("22");
             ele.addChildElement("b" ).setValue("33");
             msg.writeTo(System.out);
            System. out.println("\n invoking...." );
             //5、通过Dispatch 传递消息,会返回响应消息
            SOAPMessage response = dispatch .invoke(msg);
             response.writeTo(System.out);
            System. out.println();
            
             //将响应的消息转换为 dom对象
            Document doc = response.getSOAPPart().getEnvelope().getBody().extractContentAsDocument();
            String str = doc.getElementsByTagName("addResult" ).item(0).getTextContent();
            System. out.println(str );
            
      
      } catch (MalformedURLException e ) {
             // TODO Auto-generated catch block
             e.printStackTrace();
      } catch (SOAPException e ) {
             // TODO Auto-generated catch block
             e.printStackTrace();
      } catch (IOException e ) {
             // TODO Auto-generated catch block
             e.printStackTrace();
      }
      
}
**************************************************************
16----soap消息的传递和处理--PAYLOAD
@Test
public void test03(){
       try {
             //1、创建服务(Service)
            URL url = new URL(wsdlUrl);
            QName sname = new QName(ns,"MyServiceImplService");
            Service service = Service.create( url,sname );
            
             //2、创建Dispatch(通过源数据的方式传递)
            Dispatch<Source> dispatch = service .createDispatch(new QName(ns,"MyServiceImplPort" ),
                        Source. class, Service.Mode.PAYLOAD);
            
             //3、根据用户对象创建相应的 xml
            User user = new User(3,"zs", "张三","1111" );
            JAXBContext ctx = JAXBContext.newInstance(User. class);
            Marshaller mar = ctx .createMarshaller();
             mar.setProperty(Marshaller.JAXB_FRAGMENT, true);
            StringWriter writer = new StringWriter();
             mar.marshal(user , writer );
            
             //4.封装相应的part addUser
            String payload = "<nn:addUser xmlns:nn=\""+ns+"\">"+ writer.toString()+"</nn:addUser>" ;
            System. out.println(payload );
            StreamSource rs = new StreamSource(new StringReader(payload));
            
             //5.通过dispatch传递 payload
            Source response = dispatch .invoke(rs);
            
             //6.将Source转化为Dom进行操作,使用Transform对象转换
            Transformer tran = TransformerFactory.newInstance().newTransformer();
            DOMResult result = new DOMResult();
             tran.transform(response , result );
            
             //7.处理相应信息(通过 xpath处理)
            XPath xpath = XPathFactory.newInstance().newXPath();
            NodeList n1 = (NodeList) xpath.evaluate("//user" , result.getNode(),XPathConstants.NODESET);
            User ru = (User) ctx.createUnmarshaller().unmarshal(n1 .item(0));
            System. out.println(ru .getNickname());
            
      } catch (MalformedURLException e ) {
             // TODO Auto-generated catch block
             e.printStackTrace();
      }  catch (JAXBException e ) {
             // TODO Auto-generated catch block
             e.printStackTrace();
      } catch (TransformerConfigurationException e ) {
             // TODO Auto-generated catch block
             e.printStackTrace();
      } catch (TransformerFactoryConfigurationError e) {
             // TODO Auto-generated catch block
             e.printStackTrace();
      } catch (TransformerException e ) {
             // TODO Auto-generated catch block
             e.printStackTrace();
      } catch (XPathExpressionException e ) {
             // TODO Auto-generated catch block
             e.printStackTrace();
      }
      
}
**************************************************************
17--List--head
@Override
       public List<User> list(String authInfo ) {
            System. out.println(authInfo );
             return users ;
      }

@Test
public void test04(){
       try {
             //1、创建服务(Service)
            URL url = new URL(wsdlUrl);
            QName sname = new QName(ns,"MyServiceImplService");
            Service service = Service.create( url,sname );
            
             //2、创建Dispatch
            Dispatch<SOAPMessage> dispatch = service .createDispatch(new QName(ns,"MyServiceImplPort" ),
                        SOAPMessage. class, Service.Mode.MESSAGE);
            
             //3、创建SOAPMessage
            SOAPMessage msg = MessageFactory.newInstance().createMessage();
            SOAPEnvelope envelope = msg .getSOAPPart().getEnvelope();
            SOAPBody body = envelope .getBody();
            
             //3.2 处理header信息
            SOAPHeader header = envelope .getHeader();
             if(header == null) header = envelope .addHeader();
            QName hname = new QName(ns,"authInfo", "nn");
             header.addHeaderElement(hname ).setValue("aabbccdd");;
            
             //4、创建QName来指定消息中传递数据
            QName ename = new QName(ns,"list", "nn");
            SOAPBodyElement ele = body .addBodyElement(ename);
             msg.writeTo(System.out);
            System. out.println("\n invoking...." );
            
             //5、通过Dispatch 传递消息,会返回响应消息
            SOAPMessage response = dispatch .invoke(msg);
             response.writeTo(System.out);
            System. out.println();
            
             //将响应的消息转换为 dom对象
            Document doc = response.getSOAPBody().extractContentAsDocument();
            NodeList n1 = doc.getElementsByTagName("user" );
            JAXBContext ctx = JAXBContext.newInstance(User. class);
             for(int i =0;i<n1.getLength(); i++){
                  Node n = n1.item( i);
                  User u = (User) ctx.createUnmarshaller().unmarshal(n );
                  System. out.println(u .getNickname());
            }
            
      
      } catch (MalformedURLException e ) {
             // TODO Auto-generated catch block
             e.printStackTrace();
      } catch (SOAPException e ) {
             // TODO Auto-generated catch block
             e.printStackTrace();
      } catch (IOException e ) {
             // TODO Auto-generated catch block
             e.printStackTrace();
      } catch (JAXBException e ) {
             // TODO Auto-generated catch block
             e.printStackTrace();
      }
      
}    
public class Test {
       public static void main(String[] args) {
            MyServiceImplService mis = new MyServiceImplService();
            IMyService ms = mis.getMyServiceImplPort();
            java.util.List<User> users = ms .list(null, "ddd").getUser();
             for(User u : users){
                  System. out.println(u .getNickname());
            }
      }

}
**************************************************************
18--Exception
  @Override
       public User login(String username , String password) throws UserException {
             for(User user :users){
                   if(username .equals(user.getNickname())&& password.equals(user .getPassword()))
                         return user ;
            }
             throw new UserException("用户不存在");
      }

@Test
public void test05(){
       try {
             //1、创建服务(Service)
            URL url = new URL(wsdlUrl);
            QName sname = new QName(ns,"MyServiceImplService");
            Service service = Service.create( url,sname );
            
             //2、创建Dispatch
            Dispatch<SOAPMessage> dispatch = service .createDispatch(new QName(ns,"MyServiceImplPort" ),
                        SOAPMessage. class, Service.Mode.MESSAGE);
            
             //3、创建SOAPMessage
            SOAPMessage msg = MessageFactory.newInstance().createMessage();
            SOAPEnvelope envelope = msg .getSOAPPart().getEnvelope();
            SOAPBody body = envelope .getBody();

            
             //4、创建QName来指定消息中传递数据
            QName ename = new QName(ns,"login", "nn");
            SOAPBodyElement ele = body .addBodyElement(ename);
             ele.addChildElement("username" ).setValue("ss");
             ele.addChildElement("password" ).setValue("dd");
             msg.writeTo(System.out);
            System. out.println("\n invoking...." );
            
             //5、通过Dispatch 传递消息,会返回响应消息
            SOAPMessage response = dispatch .invoke(msg);
             response.writeTo(System.out);
            System. out.println();
            
            
            
      } catch(SOAPFaultException e ){
            System. out.println(e .getMessage());
      }
       catch (MalformedURLException e ) {
             // TODO Auto-generated catch block
             e.printStackTrace();
      } catch (SOAPException e ) {
             // TODO Auto-generated catch block
             e.printStackTrace();
      } catch (IOException e ) {
             // TODO Auto-generated catch block
             e.printStackTrace();
      }
      
}
--Client
public class Test {
       public static void main(String[] args) {
            MyServiceImplService mis = new MyServiceImplService();
            IMyService ms = mis.getMyServiceImplPort();
             try {
                   ms.login( "22", "ee" );
            } catch (UserException_Exception e ) {
                  System. out.println(e .getMessage());
                   //e.printStackTrace();
            }
      }

}
**************************************************************
19--Error
1.写配置文件
handler-chain.xml
<?xml version="1.0" encoding= "UTF-8" standalone ="yes"?>
<javaee:handler-chains
       xmlns:javaee="http://java.sun.com/xml/ns/javaee"
       xmlns:xsd="http://www.w3.org/2001/XMLSchema" >
       <javaee:handler-chain>
             <javaee:handler>
                   <javaee:handler-class> org.soap.service.handler.HeaderHandler</javaee:handler-class >
             </javaee:handler>
       </javaee:handler-chain>

</javaee:handler-chains>
2.配置MyServiceImplService
@WebServiceClient(name = "MyServiceImplService" , targetNamespace = "http://service.soap.org/" , wsdlLocation = "http://localhost:8989/ms?wsdl" )
@HandlerChain(file="handler-chain.xml" )
public class MyServiceImplService
3.写     HeaderHandler 类   
public class HeaderHandler implements SOAPHandler<SOAPMessageContext> {

       @Override
       public boolean handleMessage(SOAPMessageContext context) {
            System. out.println("handler" );
             return true ;
      }

       @Override
       public boolean handleFault(SOAPMessageContext context) {
            System. out.println("error" );
             return false ;
      }
**************************************************************
20--服务器端 客户端写 Handler 添加头部
客户端:
handler-chain.xml
public class HeaderHandler implements SOAPHandler<SOAPMessageContext> {

       @Override
       public boolean handleMessage(SOAPMessageContext context) {
             try {
                  String ns = "http://service.soap.org";
                  Boolean out =  (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
                   if(out ){
                        SOAPMessage message = context .getMessage();
                         //1、判断message中是否存在header
                        SOAPEnvelope enve = message.getSOAPPart().getEnvelope();
                        SOAPHeader header = enve .getHeader();
                         if(header ==null) header = enve.addHeader();
                        
                        QName qname = new QName(ns,"licenseInfo", "ns");
                         header.addHeaderElement(qname ).setValue("123123");
                        
                  }
            } catch (SOAPException e ) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
            }
            
             return true ;
      }
服务器端 :
handler-chain.xml

@WebService(endpointInterface="org.soap.service.IMyService" /*,targetNamespace="http://www.zttc.edu.cn"*/ )
@HandlerChain(file="handler-chain.xml" )
public class MyServiceImpl implements IMyService{


 public class LicenseHandler implements SOAPHandler<SOAPMessageContext> {
 
       @Override
       public boolean handleMessage(SOAPMessageContext context) {
             try {
                  Boolean out = (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
                   if(!out ){
                        SOAPMessage message = context .getMessage();
                        SOAPEnvelope enve = message.getSOAPPart().getEnvelope();
                        SOAPHeader header = enve .getHeader();
                         /*if(header==null){
                               trow new UserException("没有验证,无法通过处理");
                        }*/
                        
                         if(header !=null){
                              NodeList n1 = (NodeList)header.getElementsByTagName("ns:licenseInfo" );
                              System. out.println(n1 .getLength());
                              Node node = n1 .item(0);
                              System. out.println(node .getTextContent());
                        }
                  }
            } catch (SOAPException e ) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
            }
             return true ;
      }       
**************************************************************
21--过滤验证
客户端:
public class HeaderHandler implements SOAPHandler<SOAPMessageContext> {

       @Override
       public boolean handleMessage(SOAPMessageContext context) {
             try {
                  String ns = "http://service.soap.org";
                  Boolean out =  (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
                   if(out ){
                        SOAPMessage message = context .getMessage();
                         //1、判断message中是否存在header
                        SOAPEnvelope enve = message.getSOAPPart().getEnvelope();
                        
                        SOAPBody body = enve .getBody();
                        Node node = body .getChildNodes().item(0);
                        String pn = node.getLocalName();
                         if("list" .equals(pn)||"addUser".equals( pn)){
                              SOAPHeader header = enve .getHeader();
                               if(header ==null) header = enve.addHeader();
                              
                              QName qname = new QName(ns,"licenseInfo" ,"ns" );
                               header.addHeaderElement(qname ).setValue("123123");
                        }
                  }
            } catch (SOAPException e ) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
            }
            
             return true ;
      }
服务器端 :
public class LicenseHandler implements SOAPHandler<SOAPMessageContext> {
 
       @Override
       public boolean handleMessage(SOAPMessageContext context) {
             try {
                  Boolean out = (Boolean) context.get(MessageContext.MESSAGE_OUTBOUND_PROPERTY);
                   if(!out ){
                        SOAPMessage message = context .getMessage();
                        SOAPEnvelope enve = message.getSOAPPart().getEnvelope();
                        SOAPHeader header = enve .getHeader();
                        SOAPBody body = enve .getBody();
                        Node bn = body.getChildNodes().item(0);
                        String partname = bn .getLocalName();
                         if("list" .equals(partname)|| "addUser".equals(partname )){
                               if(header ==null){
                                     //添加一个错误信息
                                    System. out.println("ttt" );
                                    SOAPFault fault = body .addFault();
                                     fault.setFaultString("头部信息不能为空" );
                                     throw new SOAPFaultException(fault);
                              }
                              Iterator<SOAPHeaderElement> iterator = header.extractAllHeaderElements();
                               if(!iterator .hasNext()){
                                    SOAPFault fault = body .addFault();
                                     fault.setFaultString("头部信息不正确" );
                                     throw new SOAPFaultException(fault);
                              }
                        }
                  }
            } catch (SOAPException e ) {
                   // TODO Auto-generated catch block
                   e.printStackTrace();
            }
             return true ;
      }
**************************************************************
22--契约优先的 编写方式
1、先写scheme或者wsdl文件
2、根据文件生成一个客户端代码
3、编写实现类(在实现类指定wsdlLocation)
4、发布服务

**************************************************************



 

posted @ 2020-02-29 12:18  my_flash  阅读(39)  评论(0)    收藏  举报