cxf-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From m...@apache.org
Subject svn commit: r546762 - in /incubator/cxf/trunk/tools/validator/src: main/java/org/apache/cxf/tools/validator/internal/ test/java/org/apache/cxf/tools/validator/ test/resources/validator_wsdl/
Date Wed, 13 Jun 2007 07:32:51 GMT
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>



Mime
View raw message