Author: mmao
Date: Wed Jun 13 00:32:46 2007
New Revision: 546762

URL: http://svn.apache.org/viewvc?view=rev&rev=546762
Log:
CXF-670
  Validator flags valid rpc/lit operations as invalid
  it's valid to have parts in the message that are of type "element" if they 
are headers. 


Added:
    
incubator/cxf/trunk/tools/validator/src/test/resources/validator_wsdl/header.xsd
    
incubator/cxf/trunk/tools/validator/src/test/resources/validator_wsdl/header_rpc_lit.wsdl
    
incubator/cxf/trunk/tools/validator/src/test/resources/validator_wsdl/header_rpc_lit_2203_in.wsdl
    
incubator/cxf/trunk/tools/validator/src/test/resources/validator_wsdl/header_rpc_lit_2203_out.wsdl
Modified:
    
incubator/cxf/trunk/tools/validator/src/main/java/org/apache/cxf/tools/validator/internal/WSIBPValidator.java
    
incubator/cxf/trunk/tools/validator/src/test/java/org/apache/cxf/tools/validator/WSDLValidationTest.java

Modified: 
incubator/cxf/trunk/tools/validator/src/main/java/org/apache/cxf/tools/validator/internal/WSIBPValidator.java
URL: 
http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/validator/src/main/java/org/apache/cxf/tools/validator/internal/WSIBPValidator.java?view=diff&rev=546762&r1=546761&r2=546762
==============================================================================
--- 
incubator/cxf/trunk/tools/validator/src/main/java/org/apache/cxf/tools/validator/internal/WSIBPValidator.java
 (original)
+++ 
incubator/cxf/trunk/tools/validator/src/main/java/org/apache/cxf/tools/validator/internal/WSIBPValidator.java
 Wed Jun 13 00:32:46 2007
@@ -25,7 +25,6 @@
 import java.util.Collection;
 import java.util.Iterator;
 import java.util.List;
-
 import javax.jws.soap.SOAPBinding;
 import javax.wsdl.Binding;
 import javax.wsdl.BindingOperation;
@@ -35,6 +34,7 @@
 import javax.wsdl.Operation;
 import javax.wsdl.Part;
 import javax.wsdl.PortType;
+import javax.xml.namespace.QName;
 
 import org.apache.cxf.common.util.CollectionUtils;
 import org.apache.cxf.common.util.StringUtils;
@@ -111,8 +111,8 @@
         SoapBody outSoapBody = SOAPBindingUtil.getBindingOutputSOAPBody(bop);
         if (inSoapBody != null && 
StringUtils.isEmpty(inSoapBody.getNamespaceURI())
             || outSoapBody != null && 
StringUtils.isEmpty(outSoapBody.getNamespaceURI())) {
-            addErrorMessage("Violate WSI-BP-1.0 R2717 operation '"
-                            + bop.getName() + "' soapBody MUST have namespace 
attribute");
+            addErrorMessage("Violate WSI-BP-1.0 R2717 soapBody in the 
input/output of the binding operation '"
+                            + bop.getName() + "' MUST have namespace 
attribute");
             return false;
         }
 
@@ -267,6 +267,22 @@
         return true;
     }
 
+    private boolean isHeaderPart(final BindingOperation bop, final Part part) {
+        QName elementName = part.getElementName();
+        if (elementName != null) {
+            String partName = elementName.getLocalPart();
+            SoapHeader inSoapHeader = 
SOAPBindingUtil.getBindingInputSOAPHeader(bop);
+            if (inSoapHeader != null) {
+                return partName.equals(inSoapHeader.getPart());
+            }
+            SoapHeader outSoapHeader = 
SOAPBindingUtil.getBindingOutputSOAPHeader(bop);
+            if (outSoapHeader != null) {
+                return partName.equals(outSoapHeader.getPart());
+            }
+        }
+        return false;
+    }
+    
     public boolean checkR2203And2204() {
 
         for (Iterator ite = def.getBindings().values().iterator(); 
ite.hasNext();) {
@@ -278,12 +294,14 @@
 
             for (Iterator ite2 = 
binding.getPortType().getOperations().iterator(); ite2.hasNext();) {
                 Operation operation = (Operation)ite2.next();
+                BindingOperation bop = wsdlHelper.getBindingOperation(def, 
operation.getName());
                 if (operation.getInput() != null && 
operation.getInput().getMessage() != null) {
                     Message inMess = operation.getInput().getMessage();
 
                     for (Iterator ite3 = 
inMess.getParts().values().iterator(); ite3.hasNext();) {
                         Part p = (Part)ite3.next();
-                        if 
(style.equalsIgnoreCase(SOAPBinding.Style.RPC.name()) && p.getTypeName() == 
null) {
+                        if 
(style.equalsIgnoreCase(SOAPBinding.Style.RPC.name()) && p.getTypeName() == null
+                            && !isHeaderPart(bop, p)) {
                             addErrorMessage("An rpc-literal binding in a 
DESCRIPTION MUST refer, "
                                             + "in its soapbind:body 
element(s), only to "
                                             + "wsdl:part element(s) that have 
been defined "
@@ -306,7 +324,8 @@
                     Message outMess = operation.getOutput().getMessage();
                     for (Iterator ite3 = 
outMess.getParts().values().iterator(); ite3.hasNext();) {
                         Part p = (Part)ite3.next();
-                        if 
(style.equalsIgnoreCase(SOAPBinding.Style.RPC.name()) && p.getTypeName() == 
null) {
+                        if 
(style.equalsIgnoreCase(SOAPBinding.Style.RPC.name()) && p.getTypeName() == null
+                            &&  !isHeaderPart(bop, p)) {
                             addErrorMessage("An rpc-literal binding in a 
DESCRIPTION MUST refer, "
                                             + "in its soapbind:body 
element(s), only to "
                                             + "wsdl:part element(s) that have 
been defined "

Modified: 
incubator/cxf/trunk/tools/validator/src/test/java/org/apache/cxf/tools/validator/WSDLValidationTest.java
URL: 
http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/validator/src/test/java/org/apache/cxf/tools/validator/WSDLValidationTest.java?view=diff&rev=546762&r1=546761&r2=546762
==============================================================================
--- 
incubator/cxf/trunk/tools/validator/src/test/java/org/apache/cxf/tools/validator/WSDLValidationTest.java
 (original)
+++ 
incubator/cxf/trunk/tools/validator/src/test/java/org/apache/cxf/tools/validator/WSDLValidationTest.java
 Wed Jun 13 00:32:46 2007
@@ -189,6 +189,37 @@
         }
     }
 
+    @Test
+    public void testWSIBPR2203() throws Exception {
+        try {
+            String[] args = new String[] {"-verbose",
+                                          
getLocation("/validator_wsdl/header_rpc_lit.wsdl")};
+            WSDLValidator.main(args);
+            assertTrue(getStdOut().indexOf("Passed Validation : Valid WSDL") > 
-1);
+        } catch (Exception e) {
+            e.printStackTrace();
+            fail("No exception expected here, header_rpc_lit is a valid wsdl");
+        }
+
+        try {
+            String[] args = new String[] {"-verbose",
+                                          
getLocation("/validator_wsdl/header_rpc_lit_2203_in.wsdl")};
+            WSDLValidator.main(args);
+            assertTrue(getStdErr().indexOf("soapbind:body element(s), only to 
wsdl:part element(s)") > -1);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+
+        try {
+            String[] args = new String[] {"-verbose",
+                                          
getLocation("/validator_wsdl/header_rpc_lit_2203_out.wsdl")};
+            WSDLValidator.main(args);
+            assertTrue(getStdErr().indexOf("soapbind:body element(s), only to 
wsdl:part element(s)") > -1);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+    }
+
     @Override
     protected String getLocation(String wsdlFile) throws Exception {
         Enumeration<URL> e = 
WSDLValidationTest.class.getClassLoader().getResources(wsdlFile);

Added: 
incubator/cxf/trunk/tools/validator/src/test/resources/validator_wsdl/header.xsd
URL: 
http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/validator/src/test/resources/validator_wsdl/header.xsd?view=auto&rev=546762
==============================================================================
--- 
incubator/cxf/trunk/tools/validator/src/test/resources/validator_wsdl/header.xsd
 (added)
+++ 
incubator/cxf/trunk/tools/validator/src/test/resources/validator_wsdl/header.xsd
 Wed Jun 13 00:32:46 2007
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements. See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership. The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License. You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied. See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<schema xmlns="http://www.w3.org/2001/XMLSchema"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema"; 
xmlns:x1="http://apache.org/headers/coloc/types"; 
targetNamespace="http://apache.org/headers/coloc/types"; 
elementFormDefault="qualified">
+    <element name="header" type="x1:headerInfo"/>
+    <complexType name="headerInfo">
+        <sequence>
+            <element name="originator" type="xsd:string"/>
+            <element name="message" type="xsd:string"/>
+        </sequence>
+    </complexType>
+    <element name="inHeader" type="x1:inHeaderT"/>
+    <complexType name="inHeaderT">
+        <sequence>
+            <element name="requestType" type="xsd:string"/>
+        </sequence>
+    </complexType>
+    <element name="inHeaderResponse" type="x1:inHeaderResponseT"/>
+    <complexType name="inHeaderResponseT">
+        <sequence>
+            <element name="responseType" type="xsd:string"/>
+        </sequence>
+    </complexType>
+    <element name="outHeader" type="x1:outHeaderT"/>
+    <complexType name="outHeaderT">
+        <sequence>
+            <element name="requestType" type="xsd:string"/>
+        </sequence>
+    </complexType>
+    <element name="outHeaderResponse" type="x1:outHeaderResponseT"/>
+    <complexType name="outHeaderResponseT">
+        <sequence>
+            <element name="responseType" type="xsd:string"/>
+        </sequence>
+    </complexType>
+    <element name="inoutHeader" type="x1:inoutHeaderT"/>
+    <complexType name="inoutHeaderT">
+        <sequence>
+            <element name="requestType" type="xsd:string"/>
+        </sequence>
+    </complexType>
+    <element name="inoutHeaderResponse" type="x1:inoutHeaderResponseT"/>
+    <complexType name="inoutHeaderResponseT">
+        <sequence>
+            <element name="responseType" type="xsd:string"/>
+        </sequence>
+    </complexType>
+    <element name="pingMe" type="x1:pingMeT"/>
+    <complexType name="pingMeT">
+        <sequence>
+            <element name="faultType" type="xsd:string"/>
+        </sequence>
+    </complexType>
+    <element name="pingMeResponse" type="x1:pingMeResponseT"/>
+    <complexType name="pingMeResponseT">
+        <sequence/>
+    </complexType>
+    <element name="faultDetail" type="x1:faultDetailT"/>
+    <complexType name="faultDetailT">
+        <sequence>
+            <element name="minor" type="xsd:short"/>
+            <element name="major" type="xsd:short"/>
+        </sequence>
+    </complexType>
+</schema>

Added: 
incubator/cxf/trunk/tools/validator/src/test/resources/validator_wsdl/header_rpc_lit.wsdl
URL: 
http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/validator/src/test/resources/validator_wsdl/header_rpc_lit.wsdl?view=auto&rev=546762
==============================================================================
--- 
incubator/cxf/trunk/tools/validator/src/test/resources/validator_wsdl/header_rpc_lit.wsdl
 (added)
+++ 
incubator/cxf/trunk/tools/validator/src/test/resources/validator_wsdl/header_rpc_lit.wsdl
 Wed Jun 13 00:32:46 2007
@@ -0,0 +1,78 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<definitions name="soap_header" 
targetNamespace="http://apache.org/headers/rpc_lit"; 
xmlns="http://schemas.xmlsoap.org/wsdl/"; 
xmlns:jms="http://cxf.apache.org/transports/jms"; 
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"; 
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"; 
xmlns:xformat="http://cxf.apache.org/bindings/xformat"; 
xmlns:tns="http://apache.org/headers/rpc_lit"; 
xmlns:x1="http://apache.org/headers/coloc/types"; 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
+    <types>
+       <schema targetNamespace="http://apache.org/headers/rpc_lit"; 
xmlns="http://www.w3.org/2001/XMLSchema"; elementFormDefault="qualified">
+           <xsd:import namespace="http://apache.org/headers/coloc/types"; 
schemaLocation="./header.xsd"/>
+       </schema>
+    </types>
+    <message name="inHeaderRequest">
+       <part type="x1:inHeaderT" name="in"/>
+       <part element="x1:header" name="header"/>
+    </message>
+    <message name="inHeaderResponse">
+       <part type="x1:inHeaderResponseT" name="out"/>
+    </message>
+    <message name="outHeaderRequest">
+       <part type="x1:outHeaderT" name="in"/>
+    </message>
+    <message name="outHeaderResponse">
+       <part type="x1:outHeaderResponseT" name="out"/>
+       <part element="x1:header" name="header"/>
+    </message>
+    <portType name="headerTester">
+       <operation name="inHeader">
+           <input message="tns:inHeaderRequest" name="inHeaderRequest"/>
+           <output message="tns:inHeaderResponse" name="inHeaderResponse"/>
+       </operation>
+       <operation name="outHeader">
+           <input message="tns:outHeaderRequest" name="outHeaderRequest"/>
+           <output message="tns:outHeaderResponse" name="outHeaderResponse"/>
+       </operation>
+    </portType>
+    <binding name="headerTesterSOAPBinding" type="tns:headerTester">
+       <soap:binding style="rpc" 
transport="http://schemas.xmlsoap.org/soap/http"/>
+       <operation name="inHeader">
+           <soap:operation soapAction="" style="rpc"/>
+           <input name="inHeaderRequest">
+               <soap:body namespace="http://apache.org/headers/coloc/types"; 
parts="in" use="literal"/>
+               <soap:header message="tns:inHeaderRequest" part="header" 
use="literal"/>
+           </input>
+           <output name="inHeaderResponse">
+               <soap:body namespace="http://apache.org/headers/coloc/types";  
use="literal"/>
+           </output>
+       </operation>
+       <operation name="outHeader">
+           <soap:operation soapAction="" style="rpc"/>
+           <input name="outHeaderRequest">
+               <soap:body namespace="http://apache.org/headers/coloc/types"; 
use="literal"/>
+           </input>
+           <output name="outHeaderResponse">
+               <soap:body namespace="http://apache.org/headers/coloc/types"; 
parts="out" use="literal"/>
+               <soap:header message="tns:outHeaderResponse" part="header" 
use="literal"/>
+           </output>
+       </operation>
+    </binding>
+    <service name="SOAPHeaderService">
+       <port binding="tns:headerTesterSOAPBinding" name="SoapPort">
+           <soap:address location="http://localhost:9222/headers"/>
+       </port>
+    </service>
+</definitions>

Added: 
incubator/cxf/trunk/tools/validator/src/test/resources/validator_wsdl/header_rpc_lit_2203_in.wsdl
URL: 
http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/validator/src/test/resources/validator_wsdl/header_rpc_lit_2203_in.wsdl?view=auto&rev=546762
==============================================================================
--- 
incubator/cxf/trunk/tools/validator/src/test/resources/validator_wsdl/header_rpc_lit_2203_in.wsdl
 (added)
+++ 
incubator/cxf/trunk/tools/validator/src/test/resources/validator_wsdl/header_rpc_lit_2203_in.wsdl
 Wed Jun 13 00:32:46 2007
@@ -0,0 +1,60 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<definitions name="soap_header" 
targetNamespace="http://apache.org/headers/rpc_lit"; 
xmlns="http://schemas.xmlsoap.org/wsdl/"; 
xmlns:jms="http://cxf.apache.org/transports/jms"; 
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"; 
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"; 
xmlns:xformat="http://cxf.apache.org/bindings/xformat"; 
xmlns:tns="http://apache.org/headers/rpc_lit"; 
xmlns:x1="http://apache.org/headers/coloc/types"; 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
+    <types>
+       <schema targetNamespace="http://apache.org/headers/rpc_lit"; 
xmlns="http://www.w3.org/2001/XMLSchema"; elementFormDefault="qualified">
+           <xsd:import namespace="http://apache.org/headers/coloc/types"; 
schemaLocation="./header.xsd"/>
+       </schema>
+    </types>
+    <message name="inHeaderRequest">
+       <part type="x1:inHeaderT" name="in"/>
+       <part element="x1:header" name="header"/>
+    </message>
+    <message name="inHeaderResponse">
+       <part type="x1:inHeaderResponseT" name="out"/>
+    </message>
+    <portType name="headerTester">
+       <operation name="inHeader">
+           <input message="tns:inHeaderRequest" name="inHeaderRequest"/>
+           <output message="tns:inHeaderResponse" name="inHeaderResponse"/>
+       </operation>
+    </portType>
+    <binding name="headerTesterSOAPBinding" type="tns:headerTester">
+       <soap:binding style="rpc" 
transport="http://schemas.xmlsoap.org/soap/http"/>
+       <operation name="inHeader">
+           <soap:operation soapAction="" style="rpc"/>
+           <input name="inHeaderRequest">
+               <!--
+                   If the part:header is not a soap:header, then it violate 
the R2203, means RPC part:element must ref the type
+                   <soap:body 
namespace="http://apache.org/headers/coloc/types"; parts="in" use="literal"/>
+                   <soap:header message="tns:inHeaderRequest" part="header" 
use="literal"/>
+               -->
+           </input>
+           <output name="inHeaderResponse">
+               <soap:body namespace="http://apache.org/headers/coloc/types";  
use="literal"/>
+           </output>
+       </operation>
+    </binding>
+    <service name="SOAPHeaderService">
+       <port binding="tns:headerTesterSOAPBinding" name="SoapPort">
+           <soap:address location="http://localhost:9222/headers"/>
+       </port>
+    </service>
+</definitions>

Added: 
incubator/cxf/trunk/tools/validator/src/test/resources/validator_wsdl/header_rpc_lit_2203_out.wsdl
URL: 
http://svn.apache.org/viewvc/incubator/cxf/trunk/tools/validator/src/test/resources/validator_wsdl/header_rpc_lit_2203_out.wsdl?view=auto&rev=546762
==============================================================================
--- 
incubator/cxf/trunk/tools/validator/src/test/resources/validator_wsdl/header_rpc_lit_2203_out.wsdl
 (added)
+++ 
incubator/cxf/trunk/tools/validator/src/test/resources/validator_wsdl/header_rpc_lit_2203_out.wsdl
 Wed Jun 13 00:32:46 2007
@@ -0,0 +1,61 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<definitions name="soap_header" 
targetNamespace="http://apache.org/headers/rpc_lit"; 
xmlns="http://schemas.xmlsoap.org/wsdl/"; 
xmlns:jms="http://cxf.apache.org/transports/jms"; 
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"; 
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"; 
xmlns:xformat="http://cxf.apache.org/bindings/xformat"; 
xmlns:tns="http://apache.org/headers/rpc_lit"; 
xmlns:x1="http://apache.org/headers/coloc/types"; 
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"; 
xmlns:xsd="http://www.w3.org/2001/XMLSchema";>
+    <types>
+       <schema targetNamespace="http://apache.org/headers/rpc_lit"; 
xmlns="http://www.w3.org/2001/XMLSchema"; elementFormDefault="qualified">
+           <xsd:import namespace="http://apache.org/headers/coloc/types"; 
schemaLocation="./header.xsd"/>
+       </schema>
+    </types>
+    <message name="outHeaderRequest">
+       <part type="x1:outHeaderT" name="in"/>
+    </message>
+    <message name="outHeaderResponse">
+       <part type="x1:outHeaderResponseT" name="out"/>
+       <part element="x1:header" name="header"/>
+    </message>
+
+    <portType name="headerTester">
+       <operation name="outHeader">
+           <input message="tns:outHeaderRequest" name="outHeaderRequest"/>
+           <output message="tns:outHeaderResponse" name="outHeaderResponse"/>
+       </operation>
+    </portType>
+    <binding name="headerTesterSOAPBinding" type="tns:headerTester">
+       <soap:binding style="rpc" 
transport="http://schemas.xmlsoap.org/soap/http"/>
+       <operation name="outHeader">
+           <soap:operation soapAction="" style="rpc"/>
+           <input name="outHeaderRequest">
+               <soap:body namespace="http://apache.org/headers/coloc/types"; 
use="literal"/>
+           </input>
+           <output name="outHeaderResponse">
+               <!--
+                   If the part:header is not a soap:header, then it violate 
the R2203, means RPC part:element must ref the type
+                   <soap:body parts="out" use="literal"/>
+                   <soap:header message="tns:outHeaderResponse" part="header" 
use="literal"/>
+               -->
+           </output>
+       </operation>
+    </binding>
+    <service name="SOAPHeaderService">
+       <port binding="tns:headerTesterSOAPBinding" name="SoapPort">
+           <soap:address location="http://localhost:9222/headers"/>
+       </port>
+    </service>
+</definitions>


Reply via email to