Duplicated MTOM policy on Weblogic 12.1.3 - java

I'm developing download service using MTOM on weblogic 12.1.3 using JAX-WS. After deploy my wsdl has added two "MTOM" policies:
<definitions targetNamespace="http://schemas.test.pl/Test/001/2015/12/001" name="TestMTOM">
<wsp:UsingPolicy wsu:Required="true"/>
<wsp1_2:Policy wsu:Id="Mtom.xml">
<ns0:OptimizedMimeSerialization/>
</wsp1_2:Policy>
<wsp:UsingPolicy wssutil:Required="true"/>
<wsp1_2:Policy wssutil:Id="Mtom.xml">
<ns1:OptimizedMimeSerialization/>
</wsp1_2:Policy>
<wsp:Policy wssutil:Id="TestMTOM_portBinding_MTOM_Policy-TestMTOM_portBinding_MTOM_Policy">
<ns2:OptimizedMimeSerialization wsp:Optional="true"/>
</wsp:Policy>
<types>
<xsd:schema>
<xsd:import namespace="http://schemas.test.pl/Test/199/2014/07/001" schemaLocation="http://localhost:7001/TestWebservice/TestMTOM?xsd=1"/>
</xsd:schema>
<xsd:schema>
<xsd:import namespace="http://schemas.test.pl/Test/301/2015/12/001" schemaLocation="http://localhost:7001/TestWebservice/TestMTOM?xsd=2"/>
</xsd:schema>
<xsd:schema>
<xsd:import namespace="http://schemas.test.pl/Test/302/2015/12/001" schemaLocation="http://localhost:7001/TestWebservice/TestMTOM?xsd=3"/>
</xsd:schema>
</types>
<message name="ReadPrintFile">
<part name="requestBody" element="ns3:Document"/>
</message>
<message name="ReadPrintFileResponse">
<part name="responseBody" element="ns4:Document"/>
</message>
<message name="FaultMessage">
<part name="fault" element="ns5:Document"/>
</message>
<portType name="TestMTOM_portType">
<operation name="ReadPrintFile">
<input wsam:Action="http://schemas.test.pl/Test/TestMTOM/ReadPrintFile" message="tns:ReadPrintFile"/>
<output wsam:Action="http://schemas.test.pl/Test/001/2015/12/001/TestMTOM_portType/ReadPrintFileResponse" message="tns:ReadPrintFileResponse"/>
<fault message="tns:FaultMessage" name="FaultMessage" wsam:Action="http://schemas.test.pl/Test/001/2015/12/001/TestMTOM_portType/ReadPrintFile/Fault/FaultMessage"/>
</operation>
</portType>
<binding name="TestMTOM_portBinding" type="tns:TestMTOM_portType">
<wsp:PolicyReference URI="#Mtom.xml"/>
<wsp:PolicyReference URI="#TestMTOM_portBinding_MTOM_Policy-TestMTOM_portBinding_MTOM_Policy"/>
<wsp:PolicyReference URI="#Mtom.xml"/>
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="ReadPrintFile">
<soap:operation soapAction="http://schemas.test.pl/Test/TestMTOM/ReadPrintFile"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
<fault name="FaultMessage">
<soap:fault name="FaultMessage" use="literal"/>
</fault>
</operation>
</binding>
<service name="TestMTOM">
<port name="TestMTOM_port" binding="tns:TestMTOM_portBinding">
<soap:address location="http://localhost:7001/TestWebservice/TestMTOM"/>
</port>
</service>
Trying to connect to such deployed webservice is giving my error:
com.sun.xml.internal.ws.policy.PolicyException: WSP1020: Found two policies in one document with the same id: "Mtom.xml".
at com.sun.xml.internal.ws.policy.jaxws.SafePolicyReader$PolicyRecord.setUri(SafePolicyReader.java:113)
at com.sun.xml.internal.ws.policy.jaxws.SafePolicyReader.readPolicyElement(SafePolicyReader.java:272)
at com.sun.xml.internal.ws.policy.jaxws.PolicyWSDLParserExtension.definitionsElements(PolicyWSDLParserExtension.java:413)
at com.sun.xml.internal.ws.wsdl.parser.DelegatingParserExtension.definitionsElements(DelegatingParserExtension.java:80)
at com.sun.xml.internal.ws.wsdl.parser.FoolProofParserExtension.definitionsElements(FoolProofParserExtension.java:85)
at com.sun.xml.internal.ws.wsdl.parser.WSDLParserExtensionFacade.definitionsElements(WSDLParserExtensionFacade.java:123)
at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parseWSDL(RuntimeWSDLParser.java:464)
at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:234)
at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:194)
at com.sun.xml.internal.ws.wsdl.parser.RuntimeWSDLParser.parse(RuntimeWSDLParser.java:163)
at com.sun.xml.internal.ws.client.WSServiceDelegate.parseWSDL(WSServiceDelegate.java:348)
at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:306)
at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:215)
at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:196)
at com.sun.xml.internal.ws.client.WSServiceDelegate.<init>(WSServiceDelegate.java:192)
at com.sun.xml.internal.ws.spi.ProviderImpl.createServiceDelegate(ProviderImpl.java:104)
at javax.xml.ws.Service.<init>(Service.java:77)
at javax.xml.ws.Service.create(Service.java:707)
at com.test.ws.mtom.TestMTOMClient.main(TestMTOMClient.java:57)
Any idea woud be apreciated.
Service implementation is annotated like this:
#javax.xml.ws.soap.MTOM
#javax.jws.WebService(
serviceName = "TestMTOM",
portName = "TestMTOM_port",
targetNamespace = "http://schemas.test.pl/test/001/2015/12/001",
wsdlLocation = "file:/c:/TestWebservice/wsdl/TestMTOM.soap12/TestMTOM.wsdl",
endpointInterface = "pl.test.schemas.smw2._001._2015._12._001.TestMTOMPortType")
public class TestMTOMPortTypeImpl implements TestMTOMPortType {
}
and client is getting error while trying:
URL url = new URL("http://localhost:7001/TestWebservice/TestMTOM?WSDL");
QName qname = new QName("http://schemas.test.pl/test/001/2015/12/001", "TestMTOM");
Service service = TestMTOM.create(url, qname);

I have found a solution.
I prepared webservices.xml with the definition of my web service (although it wasn't needed) and put it in WEB-INF directory.
Deploying with such a file solved the problem.
Now deployed wsdl has only one MTOM policy :-)

In my case, removing the wsdlLocation attribute on the #javax.jws.WebService helped

Related

SOAP Webservices

I have a wsdl containing SAOP Header and SOAP Body. I generated client with eclipse and APACHE CXF and sent request. But request is failing saying Header is missed or invalid.
<?xml version="1.0" encoding="UTF-8"?>
<types>
<xsd:schema>
<xsd:import
namespace="http://finservice.cl.com/Services/financier/Operational/Messages/Request"
schemaLocation="financierRequest.xsd"/>
<xsd:import
namespace="http://finservice.cl.com/Services/financier/Operational/Messages/Response"
schemaLocation="financierResponse6.xsd"/>
<xsd:import namespace="http://finservice.cl.com/Services/Faults"
schemaLocation="finserviceFaults.xsd"/>
<xsd:import namespace="http://www.cl.com/Services/SOAPHeaders"
schemaLocation="CLSoapHeaders.xsd"/>
<xsd:import
namespace="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"
schemaLocation="oasis-200401-wss-wssecurity-secext-1.0.xsd"/>
</xsd:schema>
</types>
<message name="WS-Security-SOAPHeader">
<part element="wssec:Security" name="Security"/>
</message>
<message name="CLSOAPHeader">
<part element="hdr_ns:RequestContextHeader" name="requestHeader"/>
<part element="hdr_ns:ProcessingNodesHeader" name="processingNodesHeader"/>
</message>
<message name="financierRequest">
<part element="req_ns:financierRequestElement" name="financierRequestElement"/>
</message>
<message name="financierResponse">
<part element="res_ns:financierResponseElement" name="financierResponseElement"/>
</message>
<message name="Fault_Exception">
<part element="fault_ns:Fault" name="fault"/>
</message>
<portType name="finServicePortType">
<operation name="getFinanciers">
<input message="tns:financierRequest"/>
<output message="tns:financierResponse"/>
<fault message="tns:Fault_Exception" name="Fault_Exception"/>
</operation>
</portType>
<binding name="finServiceBinding" type="tns:finServicePortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="getFinanciers">
<soap:operation soapAction=""/>
<input>
<soap:body parts="financierRequestElement" use="literal"/>
<soap:header message="tns:CLSOAPHeader" part="requestHeader" use="literal"/>
<!-- soap:header message="tns:CLSOAPHeader" part="processingNodesHeader" use="optional"/-->
<soap:header message="tns:WS-Security-SOAPHeader" part="Security" use="literal"/>
</input>
<output>
<soap:body use="literal"/>
<soap:header message="tns:CLSOAPHeader" part="processingNodesHeader" use="literal"/>
<soap:header message="tns:WS-Security-SOAPHeader" part="Security" use="literal"/>
</output>
<fault name="Fault_Exception">
<soap:fault name="Fault_Exception" use="literal"/>
</fault>
</operation>
</binding>
<service name="financierService_v4">
<port binding="tns:finServiceBinding" name="finServicePort">
<soap:address location="http://finservice.qtcorpCL.cl.com:20021/finservService"/>
</port>
</service>
Can any one guide me how to write client for this wsdl?
How to attach header for this.
Did you test this wsdl in soapui? https://www.soapui.org/
I would suggest to first see what is the request and response structure of this web than may be you can use same request structure in your eclipse client. Soapui is very easy to use.
To generate all the client artifacts, you would need to use wsimport and then read about SOAP clients... Simple JAX-WS client

Webservice compatibility issue due to name attribute in wsdl

I'm trying to use a third-party java-based webservice from a .net application. The thing is I'm having compatibility issues regarding the given wsdl. When I try to include this wsdl in my VStudio project I'm getting this message:
Warning: 'name' attribute is invalid. The value 'envio:Foo_Envio" is invalid for data type' http://www.w3.org/2001/XMLSchema:NCName '- The':' character, hexadecimal value 0x3A, can not be used in a name . Line 17, position 20
I've read here that they shouldn't use a colon character in the name attribute, because as a NCName type it's only allowed to use a very short set of them. The thing is when I import this wsdl in a Eclipse web project I've no issues at all. Does any of you have any clue about what's happening in Eclipse that doesn't work in VS?
Thanks in advance.
The concerning wsdl code:
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns:Foo="transmision" xmlns:envio="envio.xsd" xmlns:recepcion="recepcion.xsd" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:apachesoap="http://xml.apache.org/xml-soap" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:ns="http://schemas.xmlsoap.org/soap/encoding/" targetNamespace="transmision">
<types>
<schema elementFormDefault="qualified" xmlns:Foo="transmision" xmlns:envio="transmision" xmlns:FooRecepcion="recepcion.xsd" xmlns="http://www.w3.org/2001/XMLSchema">
<xsd:import namespace="recepcion.xsd" schemaLocation="recepcion.xsd"/>
<xsd:import namespace="envio.xsd" schemaLocation="envio.xsd"/>
</schema>
</types>
<message name="Foo_Envio">
<part name="envio" element="envio:envio"/>
</message>
<message name="Foo_Recepcion">
<part name="recepcion" element="recepcion:confirmacionRecepcion"/>
</message>
<portType name="Foo">
<operation name="Foo">
<input name="envio:Foo_Envio" message="Foo:Foo_Envio"/>
<output name="envio:Foo_Recepcion" message="Foo:Foo_Recepcion"/>
</operation>
</portType>
<binding name="FooSoapBinding" type="Foo:Foo">
<wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="Foo">
<input>
<wsdlsoap:body use="literal"/>
</input>
<output>
<wsdlsoap:body use="literal"/>
</output>
</operation>
</binding>
<service name="FooService">
<port name="Foo" binding="Foo:FooSoapBinding">
<wsdlsoap:address location="https://ws.whatever.com/iniinvoc/es.foo.Foos.ws.EnvioSOAP"/>
</port>
</service>
</definitions>
In the end we've contacted with the third-party and they've changed the name attribute, removing the ":" character.

WSDL got from a web service different from WSDL used to produce the web service

I have written a web service in a top down way : I wrote de WSDL first, then I used the wsimport tool to produce the WS interface and the proxies, and finally I wrote the WS implementation.
Now, my WS is deployed on a Tomee 1.6 server, and when I invoke it with a ?wsdl parameter, I get a WSDL wich is different from the one I wrote first. In my first WSDL the service name was "ImmoService", whereas in the WSDL I get when invoking the deployed web service, it is "ImmoServiceService".
I first thought it was a bug in Tomee, so I deployed the WS on Glassfish. But I got the same result. It seems that I have missed something. The name of the service in the WSDL produced by the WS should not be the same as the name of the service in the WSDL from which the WS was produced ?
Here is the WSDL I wrote first :
<?xml version="1.0" encoding="utf-8"?>
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:s="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:rp="http://ws.csf.fr/ImmoService"
targetNamespace="http://ws.csf.fr/ImmoService">
<types>
...
</types>
<!-- =========================================================================
Messages
========================================================================= -->
<message name="imprimerDocumentsSoapIn">
<part name="parameters" element="rp:imprimerDocuments"/>
</message>
<message name="imprimerDocumentsSoapOut">
<part name="parameters" element="rp:imprimerDocumentsResponse"/>
</message>
<!-- =========================================================================
PortType
========================================================================= -->
<portType name="ImmoServiceSoap">
<operation name="imprimerDocuments">
<input message="rp:imprimerDocumentsSoapIn"/>
<output message="rp:imprimerDocumentsSoapOut"/>
</operation>
</portType>
<!-- =========================================================================
Binding
========================================================================= -->
<binding name="ImmoServiceSoap" type="rp:ImmoServiceSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="imprimerDocuments">
...
</operation>
</binding>
<!-- =========================================================================
Service
========================================================================= -->
<service name="ImmoService">
<port name="ImmoServiceSoap" binding="rp:ImmoServiceSoap">
<soap:address location="http://serveur:0/ImmoService/webservices/ImmoService"/>
</port>
</service>
</definitions>
Here is the one I get when invoking my WS under Tomee with the ?wsdl parameter
<?xml version='1.0' encoding='UTF-8'?>
<wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://ws.immoservice.csf.fr/" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns2="http://schemas.xmlsoap.org/soap/http" xmlns:ns1="http://ws.csf.fr/ImmoService" name="ImmoServiceService" targetNamespace="http://ws.immoservice.csf.fr/">
<wsdl:import location="http://vir-ws-int.csf.asso.fr:8080/ImmoService/webservices/ImmoService?wsdl=ImmoServiceSoap.wsdl" namespace="http://ws.csf.fr/ImmoService">
</wsdl:import>
<wsdl:binding name="ImmoServiceServiceSoapBinding" type="ns1:ImmoServiceSoap">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="imprimerDocuments">
<soap:operation soapAction="http://csf.fr/ImmoService/imprimerDocuments" style="document"/>
<wsdl:input name="imprimerDocuments">
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output name="imprimerDocumentsResponse">
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="ImmoServiceService">
<wsdl:port binding="tns:ImmoServiceServiceSoapBinding" name="ImmoServicePort">
<soap:address location="http://vir-ws-int.csf.asso.fr:8080/ImmoService/webservices/ImmoService"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
Here is the WSDL I get when I invoke my WS under Glassfish :
<?xml version='1.0' encoding='UTF-8'?>
<!-- Published by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is Metro/2.3 (tags/2.3-7528; 2013-04-29T19:34:10+0000) JAXWS-RI/2.2.8 JAXWS/2.2 svn-revision#unknown. -->
<!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is Metro/2.3 (tags/2.3-7528; 2013-04-29T19:34:10+0000) JAXWS-RI/2.2.8 JAXWS/2.2 svn-revision#unknown. -->
<definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://ws.immoservice.csf.fr/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://ws.immoservice.csf.fr/" name="ImmoServiceService">
<import namespace="http://ws.csf.fr/ImmoService" location="http://localhost:8081/ImmoServiceService/ImmoService?wsdl=1"/>
<binding xmlns:ns1="http://ws.csf.fr/ImmoService" name="ImmoServicePortBinding" type="ns1:ImmoServiceSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="imprimerDocuments">
<soap:operation soapAction="http://csf.fr/ImmoService/imprimerDocuments"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="ImmoServiceService">
<port name="ImmoServicePort" binding="tns:ImmoServicePortBinding">
<soap:address location="http://localhost:8081/ImmoServiceService/ImmoService"/>
</port>
</service>
</definitions>
This is the normal behavior of Java SOAP Frameworks (Metro, CXF). They always create a different WSDL even if you wrote a WSDL by hand, generated Code using wsimport and then fetch the generated WSDL using ?wsdl. Some frameworks allow you to provide your own WSDL when exposing the Service (see http://cxf.apache.org/docs/jax-ws-configuration.html Param wsdlLocation)
If you have a self-written WSDL, use it to generate Clients and Services using your WSDL. Do not use the generated one (That's my experience). You can reference the generated WSDL for having an always valid Endpoint but not for more.

call third party web service using apache camel

I am new to camel
I am trying to call webservice using camel java dsl
from("cxf://http://darshan:8080/sampleWebService/SampleTestServicePort?wsdlURL=http://darshan:8080/sampleWebService/SampleTestServicePort?wsdl&serviceName={http://ws.test.com/}SampleTestServiceService&portName={http://ws.test.com/}SampleTestServicePort&dataFormat=MESSAGE")
following is my wsdl file:
<?xml version="1.0" encoding="UTF-8"?>
<definitions xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://ws.test.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://ws.test.com/" name="SampleTestServiceService">
<types>
<xsd:schema>
<xsd:import namespace="http://ws.test.com/" schemaLocation="http://darshan:808O/sampleWebService/SampleTestServicePort?xsd=1"></xsd:import>
</xsd:schema>
</types>
<message name="sayHello">
<part name="parameters" element="tns:sayHello"></part>
</message>
<message name="sayHelloResponse">
<part name="parameters" element="tns:sayHelloResponse"></part>
</message>
<portType name="SampleTestServiceDelegate">
<operation name="sayHello">
<input message="tns:sayHello"></input>
<output message="tns:sayHelloResponse"></output>
</operation>
</portType>
<binding name="SampleTestServicePortBinding" type="tns:SampleTestServiceDelegate">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"></soap:binding>
<operation name="sayHello">
<soap:operation soapAction=""></soap:operation>
<input>
<soap:body use="literal"></soap:body>
</input>
<output>
<soap:body use="literal"></soap:body>
</output>
</operation>
</binding>
<service name="SampleTestServiceService">
<port name="SampleTestServicePort" binding="tns:SampleTestServicePortBinding">
<soap:address location="http://darshan:808O/sampleWebService/SampleTestServicePort"></soap:address>
</port>
</service>
</definitions>
That gives no error but also output is nothing.
Please suggest me what is wrong in my code.
Thanks in advance
When you use the Apache CXF Component as a from() what you are doing is you are hosting the webservice instead of accessing a third-party one.
To access a third-party service you need to use the to() form of the component. You need to do something like this:
<route>
<from uri="file:./myFileRequest?delay=1000&include=myRequest.xml">
<to uri="cxf://http://darshan:8080/sampleWebService/SampleTestServicePort?wsdlURL=http://darshan:8080/sampleWebService/SampleTestServicePort?wsdl&serviceName={http://ws.test.com/}SampleTestServiceService&portName={http://ws.test.com/}SampleTestServicePort&dataFormat=MESSAGE" />
...
</route>
Is this what you are looking for?
Define the cxf bean as below in the camel context
<cxf:cxfEndpoint
address="Service ENDPOINT"
endpointName="give wsdl:port#name here from wsdl"
id="any id" loggingFeatureEnabled="true"
serviceClass="your service class - it will be inside the stubs generated from WSDL"
serviceName="Service Name"
wsdlURL="WSDL path" xmlns:ws="namespace">
<cxf:properties>
<entry key="dataFormat" value="PAYLOAD"/>
</cxf:properties>
</cxf:cxfEndpoint>
then write the following in your route:
<to id="_to1" uri="cxf:bean:id Of the cxfEndpoint bean"/>

How to test a webservice / WSDL

I have generated this WSDL file...
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Generated by JAX-WS RI at http://jax-ws.dev.java.net. RI's version is JAX-WS RI 2.1.6 in JDK 6. -->
<definitions targetNamespace="http://math/" name="MathServicesService" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://math/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<types>
<xsd:schema>
<xsd:import namespace="http://math/" schemaLocation="MathServicesService_schema1.xsd"/>
</xsd:schema>
</types>
<message name="addTwoInts">
<part name="parameters" element="tns:addTwoInts"/>
</message>
<message name="addTwoIntsResponse">
<part name="parameters" element="tns:addTwoIntsResponse"/>
</message>
<message name="multiplyTwoFloats">
<part name="parameters" element="tns:multiplyTwoFloats"/>
</message>
<message name="multiplyTwoFloatsResponse">
<part name="parameters" element="tns:multiplyTwoFloatsResponse"/>
</message>
<portType name="MathServices">
<operation name="addTwoInts">
<input message="tns:addTwoInts"/>
<output message="tns:addTwoIntsResponse"/>
</operation>
<operation name="multiplyTwoFloats">
<input message="tns:multiplyTwoFloats"/>
<output message="tns:multiplyTwoFloatsResponse"/>
</operation>
</portType>
<binding name="MathServicesPortBinding" type="tns:MathServices">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="addTwoInts">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
<operation name="multiplyTwoFloats">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="MathServicesService">
<port name="MathServicesPort" binding="tns:MathServicesPortBinding">
<soap:address location="REPLACE_WITH_ACTUAL_URL"/>
</port>
</service>
</definitions>
from this class...
package math;
import javax.jws.WebService;
#WebService
public class MathServices {
public int addTwoInts(int int1, int int2){
return int1+int2;
}
public float multiplyTwoFloats(float float1, float float2){
return float1 * float2;
}
}
How can I test to see if this webservice is working properly using the WSDL? I don't understand how the functionality (int1+int2 and float1*float2) translates to the XML. All I see in the WSDL are what translate to method names and parameter names. I don't see where the math goes on. :/
That said, where do the parameters come from when using the webservice? How do you even use the webservice? Can I just use it through my browser?
For soap you can use SoapUI. See http://www.soapui.org/.
You can test WSDLs with SoapUI.

Categories