You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by MARTELLI Julien <jm...@softwaymedical.fr> on 2011/01/19 09:54:08 UTC
Unable to set Soap Version to 1.2
Hi all,
I am facing a problem with the SOAP message version.
I am really stuck with this problem so any help would be appreciated.
OK so here is the context.
I have a WSDL file from which I generate sources using the wsdl2java CXF Maven plugin.
Here is an extract of my WSDL file :
<definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:ihe="urn:ihe:iti:xds-b:2007" xmlns:rs="urn:oasis:names:tc:ebxml-regrep:xsd:rs:3.0"
targetNamespace="urn:ihe:iti:xds-b:2007" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" name="DocumentRepository">
...
<binding name="DocumentRepository_Binding" type="ihe:DocumentRepository_PortType">
<soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="DocumentRepository_ProvideAndRegisterDocumentSet-b">
<soap12:operation soapAction="urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b"/>
<input>
<soap12:body use="literal"/>
</input>
<output>
<soap12:body use="literal"/>
</output>
</operation>
<operation name="DocumentRepository_RetrieveDocumentSet">
<soap12:operation soapAction="urn:ihe:iti:2007:RetrieveDocumentSet"/>
<input>
<soap12:body use="literal"/>
</input>
<output>
<soap12:body use="literal"/>
</output>
</operation>
</binding>
;;;
<service name="DocumentRepository_Service">
<port name="DocumentRepository_Port_Soap12" binding="ihe:DocumentRepository_Binding">
<soap12:address location="https://servicelocation/DocumentRepository_Service"/>
</port>
</service>
On the generated interface there is no annotation concerning the Binding :
@WebService(targetNamespace = "urn:ihe:iti:xds-b:2007", name = "DocumentRepository_PortType")
@XmlSeeAlso({oasis.names.tc.ebxml_regrep.xsd.query._3.ObjectFactory.class, oasis.names.tc.ebxml_regrep.xsd.rs._3.ObjectFactory.class, ObjectFactory.class, oasis.names.tc.ebxml_regrep.xsd.lcm._3.ObjectFactory.class, oasis.names.tc.ebxml_regrep.xsd.rim._3.ObjectFactory.class})
public interface DocumentRepositoryPortType {
...
Then I use the generated classes to contact the Web Service and my client is not configured via Spring but build programmatically.
The problem is that the generated SOAP message is a SOAP 1.1 message...
I am not able to find a way to configure my client to use a SOAP 1.2 binding, and I tried to add the annotation @BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_MTOM_BINDING) on the generated interface (as someone suggested to me on this stackoverflow post : http://stackoverflow.com/questions/4248098/cxf-how-to-set-soapversion-on-cxf-port-without-spring) but it didn't change anything...
Maybe it's because I configure my client without Spring and thus the default Soap 1.1 version is used...
I really don't know...
Do you guys have an idea ?
Thanks in advance !
J.
RE: Unable to set Soap Version to 1.2
Posted by MARTELLI Julien <jm...@softwaymedical.fr>.
Yes you're right this solutin works too.
And actually that's the one I'm gonna use because I don't want to use the WSDL.
Thanks again for your help!
-----Message d'origine-----
De : Daniel Kulp [mailto:dkulp@apache.org]
Envoyé : mercredi 19 janvier 2011 21:48
À : users@cxf.apache.org
Cc : MARTELLI Julien
Objet : Re: Unable to set Soap Version to 1.2
On Wednesday 19 January 2011 9:37:18 am MARTELLI Julien wrote:
> Ehehe yep... This should be better ;)
>
>
> Here is how I get the portType:
>
> // Get the Service => this is maybe here that the Wsdl Location is missing?
> QName serviceQName = new QName("urn:ihe:iti:xds-b:2007",
> "DocumentRepository_Service"); Service service =
> Service.create(serviceQName);
>
> // Get the PortType
> return Service.getPort(DocumentRepositoryPortType.class);
>
>
> => Maybe we need to create the service with Service.create(URL, QName) ??
As you said, that works. If you DON'T want to use the wsdl, you should also
be able to do:
QName portQName = new QName("urn:ihe:iti:xds-b:2007",
"DocumentRepository_Port");
service.addPort(portQName, SOAPBinding.SOAP12HTTP_MTOM_BINDING ,
"http://address.to.service);
return Service.getPort(portQName, DocumentRepositoryPortType.class);
Dan
>
>
> And here is the very beginning of my client start:
>
> 19 janv. 2011 15:14:59
> org.apache.cxf.service.factory.ReflectionServiceFactoryBean
> buildServiceFromClass INFO: Creating Service
> {urn:ihe:iti:xds-b:2007}DocumentRepository_Service from class
> ihe.iti.xdsb_2007.repository.DocumentRepositoryPortType 19 janv. 2011
> 15:15:00 org.apache.cxf.service.factory.ReflectionServiceFactoryBean
> buildServiceFromClass INFO: Creating Service
> {urn:ihe:iti:xds-b:2007}DocumentRepository_Service from class
> ihe.iti.xdsb_2007.repository.DocumentRepositoryPortType 19 janv. 2011
> 15:15:01 org.apache.cxf.interceptor.LoggingOutInterceptor$LoggingCallback
> onClose
>
>
> Thanks again
>
> -----Message d'origine-----
> De : Freeman Fang [mailto:freeman.fang@gmail.com]
> Envoyé : mercredi 19 janvier 2011 15:31
> À : users@cxf.apache.org
> Objet : Re: Unable to set Soap Version to 1.2
>
> Hi,
>
> About the code part, I just want to see how you get portType, so that
> I can know if you pass in wsdlLocation
>
> About the log part, I want to see how the servicemodel is build, so
> that I can see if it pick up the wsdl, it should be at very beginning
> when you start client.
>
> Unfortunately, your post miss both what I want to check. :-)
> Freeman
>
> On 2011-1-19, at 下午10:15, MARTELLI Julien wrote:
> > This is how I configure the client:
> >
> >
> > // Below portType is a concrete implementation of
> > DocumentRepositoryPortType generated interface
> >
> > // Setting the service URL
> > BindingProvider provider = (BindingProvider) portType;
> > provider
> > .getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
> > wsUrl);
> > // MTOM
> > SOAPBinding soapBinding = (SOAPBinding) provider.getBinding();
> > soapBinding.setMTOMEnabled(true);
> > // Adding a specific handler
> > List<Handler> handlerChain = binding.getHandlerChain();
> > handlerChain.add(new JetonAuthentificationHandler());
> > soapBinding.setHandlerChain(handlerChain);
> > // Getting the client
> > Client client = ClientProxy.getClient(portType);
> > // WS-Adressing
> > EndpointImpl endpoint = (EndpointImpl) client.getEndpoint();
> > Bus bus = endpoint.getBus();
> > new WSAddressingFeature().initialize(client, bus);
> > // Setting endpointInfo URL
> > ConduitSelector conduitSelector = client.getConduitSelector();
> > conduitSelector
> > .getEndpoint().getEndpointInfo().setAddress(super.wsUrl);
> > // Then we add SSL / TLS configuration => not showed here
> >
> >
> >
> > Then we call the service:
> >
> > // With request as content
> > portType.documentRepositoryProvideAndRegisterDocumentSetB(request);
> >
> >
> > On the logs here is what we have (extract of the SOAP Envelope
> > beginning only):
> >
> > INFO: Outbound Message
> > ---------------------------
> > ID: 1
> > Address: https://172.30.13.61:9043/xds/cxf/DocumentRepository_Service
> > Encoding: UTF-8
> > Content-Type: multipart/related; type="application/xop+xml";
> > boundary="uuid:0e72f86e-32e7-4259-a577-45c4482f461a";
> > start="<root.message@cxf.apache.org
> >
> > >"; start-info="text/xml"
> >
> > Headers: {SOAPAction=["urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b
> > "], Accept=[*/*]}
> > Payload:
> > --uuid:0e72f86e-32e7-4259-a577-45c4482f461a
> > Content-Type: application/xop+xml; charset=UTF-8; type="text/xml";
> > Content-Transfer-Encoding: binary
> > Content-ID: <ro...@cxf.apache.org>
> >
> > <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/
> > envelope/"><soap:Header><Action
> > xmlns="http://www.w3.org/2005/08/addressing
> > ">urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b</
> > Action><MessageID
> > xmlns="http://www.w3.org/2005/08/addressing">urn:uuid:c7a3eac7-054d-48a1
> > -a510-c43e6d3df180 </MessageID><To
> > xmlns="http://www.w3.org/2005/08/addressing">https://172.30.13.61:9043/x
> > ds/cxf/DocumentRepository_Service </To><ReplyTo
> > xmlns="http://www.w3.org/2005/08/addressing"><Address>http://www.w3.org/
> > 2005/08/addressing/anonymous </Address></ReplyTo><wsse:Security
> > xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wsse
> > curity-secext-1.0.xsd "><saml2:Assertion
> > xmlns:saml2="urn:oasis:names:tc:SAML:
> > 2.0:assertion" ID="be515324-bccf-4e2b-8667-231b6f46f4a6"
> > IssueInstant="2009-02-02T00:00:00.000Z" Version="2.0"><saml2:Issuer
> > Format="urn:oasis:names:tc:SAML:1.1:nameid-
> > format:X509SubjectName">CN=client, OU=Waid, O=Waid, L=Aix, ST=PACA,
> > C=FR</saml2:Issuer><ds:Signature
> > xmlns:ds="http://www.w3.org/2000/09/xmldsig# ">
> > ...
> >
> >
> >
> > -----Message d'origine-----
> > De : Freeman Fang [mailto:freeman.fang@gmail.com]
> > Envoyé : mercredi 19 janvier 2011 15:04
> > À : users@cxf.apache.org
> > Objet : Re: Unable to set Soap Version to 1.2
> >
> > Hi,
> >
> > How you configure your client? What the client side looks like, ensure
> > you already specify wsdlLocation for client side. Seems the client
> > side didn't pick up the wsdl to build the service model.
> > Could you please paste the log when you run client?
> >
> > Freeman
> >
> > On 2011-1-19, at 下午9:38, MARTELLI Julien wrote:
> >> Hi,
> >>
> >> Thanks for this quick answer.
> >>
> >> I impacted the momdifications you are talking about and there is no
> >> difference. The client still generates SOAP 1.1 messages....
> >>
> >>
> >> -----Message d'origine-----
> >> De : Freeman Fang [mailto:freeman.fang@gmail.com]
> >> Envoyé : mercredi 19 janvier 2011 10:06
> >> À : users@cxf.apache.org
> >> Objet : Re: Unable to set Soap Version to 1.2
> >>
> >> Hi,
> >>
> >> My comment inline
> >>
> >> On 2011-1-19, at 下午4:54, MARTELLI Julien wrote:
> >>> Hi all,
> >>>
> >>> I am facing a problem with the SOAP message version.
> >>> I am really stuck with this problem so any help would be
> >>> appreciated.
> >>>
> >>> OK so here is the context.
> >>>
> >>> I have a WSDL file from which I generate sources using the wsdl2java
> >>> CXF Maven plugin.
> >>> Here is an extract of my WSDL file :
> >>>
> >>> <definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> >>> xmlns="http://schemas.xmlsoap.org/wsdl/"
> >>> xmlns:xsd="http://www.w3.org/2001/XMLSchema "
> >>> xmlns:ihe="urn:ihe:iti:xds-b:2007"
> >>> xmlns:rs="urn:oasis:names:tc:ebxml-regrep:xsd:rs:3.0 "
> >>> targetNamespace="urn:ihe:iti:xds-b:2007"
> >>> xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/ "
> >>> xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
> >>> name="DocumentRepository">
> >>> ...
> >>> <binding name="DocumentRepository_Binding"
> >>> type="ihe:DocumentRepository_PortType">
> >>>
> >>> <soap12:binding style="document"
> >>> transport="http://schemas.xmlsoap.org/soap/http
> >>>
> >>> "/>
> >>
> >> I think transport here should be
> >> transport="http://www.w3.org/2003/05/soap/bindings/HTTP/"
> >>
> >>> <operation name="DocumentRepository_ProvideAndRegisterDocumentSet-
> >>>
> >>> b">
> >>>
> >>> <soap12:operation
> >>> soapAction="urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b
> >>>
> >>> "/>
> >>>
> >>> <input>
> >>>
> >>> <soap12:body use="literal"/>
> >>>
> >>> </input>
> >>> <output>
> >>>
> >>> <soap12:body use="literal"/>
> >>>
> >>> </output>
> >>>
> >>> </operation>
> >>> <operation name="DocumentRepository_RetrieveDocumentSet">
> >>>
> >>> <soap12:operation soapAction="urn:ihe:iti:
> >>> 2007:RetrieveDocumentSet
> >>> "/>
> >>>
> >>> <input>
> >>>
> >>> <soap12:body use="literal"/>
> >>>
> >>> </input>
> >>> <output>
> >>>
> >>> <soap12:body use="literal"/>
> >>>
> >>> </output>
> >>>
> >>> </operation>
> >>>
> >>> </binding>
> >>> ;;;
> >>> <service name="DocumentRepository_Service">
> >>>
> >>> <port name="DocumentRepository_Port_Soap12"
> >>>
> >>> binding="ihe:DocumentRepository_Binding">
> >>>
> >>> <soap12:address
> >>> location="https://servicelocation/DocumentRepository_Service
> >>>
> >>> "/>
> >>>
> >>> </port>
> >>>
> >>> </service>
> >>>
> >>>
> >>> On the generated interface there is no annotation concerning the
> >>> Binding :
> >>>
> >>> @WebService(targetNamespace = "urn:ihe:iti:xds-b:2007", name =
> >>> "DocumentRepository_PortType")
> >>> @XmlSeeAlso
> >>> ({oasis.names.tc.ebxml_regrep.xsd.query._3.ObjectFactory.class,
> >>> oasis.names.tc.ebxml_regrep.xsd.rs._3.ObjectFactory.class,
> >>> ObjectFactory.class,
> >>> oasis.names.tc.ebxml_regrep.xsd.lcm._3.ObjectFactory.class,
> >>> oasis.names.tc.ebxml_regrep.xsd.rim._3.ObjectFactory.class})
> >>> public interface DocumentRepositoryPortType {
> >>> ...
> >>>
> >>>
> >>> Then I use the generated classes to contact the Web Service and my
> >>> client is not configured via Spring but build programmatically.
> >>>
> >>> The problem is that the generated SOAP message is a SOAP 1.1
> >>> message...
> >>> I am not able to find a way to configure my client to use a SOAP 1.2
> >>> binding, and I tried to add the annotation
> >>> @BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_MTOM_BINDING)
> >>> on the generated interface (as someone suggested to me on this
> >>
> >>> stackoverflow post :
> >> You should add annotation like
> >> @javax.xml.ws.BindingType(value =
> >> "http://www.w3.org/2003/05/soap/bindings/HTTP/ ")
> >>
> >> You can get more details from the wsdl_first_soap12 example shipped
> >> with kit.
> >>
> >> Freeman
> >>
> >>> http://stackoverflow.com/questions/4248098/cxf-how-to-set-soapversion-o
> >>> n-cxf-port-without-spring) but it didn't change anything...
> >>> Maybe it's because I configure my client without Spring and thus the
> >>> default Soap 1.1 version is used...
> >>> I really don't know...
> >>>
> >>>
> >>> Do you guys have an idea ?
> >>>
> >>> Thanks in advance !
> >>> J.
> >>
> >> ------------------------
> >>
> >> FuseSource: http://fusesource.com
> >> blog: http://freemanfang.blogspot.com
> >> twitter: http://twitter.com/freemanfang
> >> Apache Servicemix:http://servicemix.apache.org
> >> Apache Cxf: http://cxf.apache.org
> >> Apache Karaf: http://karaf.apache.org
> >> Apache Felix: http://felix.apache.org
> >
> > ------------------------
> >
> > FuseSource: http://fusesource.com
> > blog: http://freemanfang.blogspot.com
> > twitter: http://twitter.com/freemanfang
> > Apache Servicemix:http://servicemix.apache.org
> > Apache Cxf: http://cxf.apache.org
> > Apache Karaf: http://karaf.apache.org
> > Apache Felix: http://felix.apache.org
--
Daniel Kulp
dkulp@apache.org
http://dankulp.com/blog
Re: Unable to set Soap Version to 1.2
Posted by Daniel Kulp <dk...@apache.org>.
On Wednesday 19 January 2011 9:37:18 am MARTELLI Julien wrote:
> Ehehe yep... This should be better ;)
>
>
> Here is how I get the portType:
>
> // Get the Service => this is maybe here that the Wsdl Location is missing?
> QName serviceQName = new QName("urn:ihe:iti:xds-b:2007",
> "DocumentRepository_Service"); Service service =
> Service.create(serviceQName);
>
> // Get the PortType
> return Service.getPort(DocumentRepositoryPortType.class);
>
>
> => Maybe we need to create the service with Service.create(URL, QName) ??
As you said, that works. If you DON'T want to use the wsdl, you should also
be able to do:
QName portQName = new QName("urn:ihe:iti:xds-b:2007",
"DocumentRepository_Port");
service.addPort(portQName, SOAPBinding.SOAP12HTTP_MTOM_BINDING ,
"http://address.to.service);
return Service.getPort(portQName, DocumentRepositoryPortType.class);
Dan
>
>
> And here is the very beginning of my client start:
>
> 19 janv. 2011 15:14:59
> org.apache.cxf.service.factory.ReflectionServiceFactoryBean
> buildServiceFromClass INFO: Creating Service
> {urn:ihe:iti:xds-b:2007}DocumentRepository_Service from class
> ihe.iti.xdsb_2007.repository.DocumentRepositoryPortType 19 janv. 2011
> 15:15:00 org.apache.cxf.service.factory.ReflectionServiceFactoryBean
> buildServiceFromClass INFO: Creating Service
> {urn:ihe:iti:xds-b:2007}DocumentRepository_Service from class
> ihe.iti.xdsb_2007.repository.DocumentRepositoryPortType 19 janv. 2011
> 15:15:01 org.apache.cxf.interceptor.LoggingOutInterceptor$LoggingCallback
> onClose
>
>
> Thanks again
>
> -----Message d'origine-----
> De : Freeman Fang [mailto:freeman.fang@gmail.com]
> Envoyé : mercredi 19 janvier 2011 15:31
> À : users@cxf.apache.org
> Objet : Re: Unable to set Soap Version to 1.2
>
> Hi,
>
> About the code part, I just want to see how you get portType, so that
> I can know if you pass in wsdlLocation
>
> About the log part, I want to see how the servicemodel is build, so
> that I can see if it pick up the wsdl, it should be at very beginning
> when you start client.
>
> Unfortunately, your post miss both what I want to check. :-)
> Freeman
>
> On 2011-1-19, at 下午10:15, MARTELLI Julien wrote:
> > This is how I configure the client:
> >
> >
> > // Below portType is a concrete implementation of
> > DocumentRepositoryPortType generated interface
> >
> > // Setting the service URL
> > BindingProvider provider = (BindingProvider) portType;
> > provider
> > .getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
> > wsUrl);
> > // MTOM
> > SOAPBinding soapBinding = (SOAPBinding) provider.getBinding();
> > soapBinding.setMTOMEnabled(true);
> > // Adding a specific handler
> > List<Handler> handlerChain = binding.getHandlerChain();
> > handlerChain.add(new JetonAuthentificationHandler());
> > soapBinding.setHandlerChain(handlerChain);
> > // Getting the client
> > Client client = ClientProxy.getClient(portType);
> > // WS-Adressing
> > EndpointImpl endpoint = (EndpointImpl) client.getEndpoint();
> > Bus bus = endpoint.getBus();
> > new WSAddressingFeature().initialize(client, bus);
> > // Setting endpointInfo URL
> > ConduitSelector conduitSelector = client.getConduitSelector();
> > conduitSelector
> > .getEndpoint().getEndpointInfo().setAddress(super.wsUrl);
> > // Then we add SSL / TLS configuration => not showed here
> >
> >
> >
> > Then we call the service:
> >
> > // With request as content
> > portType.documentRepositoryProvideAndRegisterDocumentSetB(request);
> >
> >
> > On the logs here is what we have (extract of the SOAP Envelope
> > beginning only):
> >
> > INFO: Outbound Message
> > ---------------------------
> > ID: 1
> > Address: https://172.30.13.61:9043/xds/cxf/DocumentRepository_Service
> > Encoding: UTF-8
> > Content-Type: multipart/related; type="application/xop+xml";
> > boundary="uuid:0e72f86e-32e7-4259-a577-45c4482f461a";
> > start="<root.message@cxf.apache.org
> >
> > >"; start-info="text/xml"
> >
> > Headers: {SOAPAction=["urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b
> > "], Accept=[*/*]}
> > Payload:
> > --uuid:0e72f86e-32e7-4259-a577-45c4482f461a
> > Content-Type: application/xop+xml; charset=UTF-8; type="text/xml";
> > Content-Transfer-Encoding: binary
> > Content-ID: <ro...@cxf.apache.org>
> >
> > <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/
> > envelope/"><soap:Header><Action
> > xmlns="http://www.w3.org/2005/08/addressing
> > ">urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b</
> > Action><MessageID
> > xmlns="http://www.w3.org/2005/08/addressing">urn:uuid:c7a3eac7-054d-48a1
> > -a510-c43e6d3df180 </MessageID><To
> > xmlns="http://www.w3.org/2005/08/addressing">https://172.30.13.61:9043/x
> > ds/cxf/DocumentRepository_Service </To><ReplyTo
> > xmlns="http://www.w3.org/2005/08/addressing"><Address>http://www.w3.org/
> > 2005/08/addressing/anonymous </Address></ReplyTo><wsse:Security
> > xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wsse
> > curity-secext-1.0.xsd "><saml2:Assertion
> > xmlns:saml2="urn:oasis:names:tc:SAML:
> > 2.0:assertion" ID="be515324-bccf-4e2b-8667-231b6f46f4a6"
> > IssueInstant="2009-02-02T00:00:00.000Z" Version="2.0"><saml2:Issuer
> > Format="urn:oasis:names:tc:SAML:1.1:nameid-
> > format:X509SubjectName">CN=client, OU=Waid, O=Waid, L=Aix, ST=PACA,
> > C=FR</saml2:Issuer><ds:Signature
> > xmlns:ds="http://www.w3.org/2000/09/xmldsig# ">
> > ...
> >
> >
> >
> > -----Message d'origine-----
> > De : Freeman Fang [mailto:freeman.fang@gmail.com]
> > Envoyé : mercredi 19 janvier 2011 15:04
> > À : users@cxf.apache.org
> > Objet : Re: Unable to set Soap Version to 1.2
> >
> > Hi,
> >
> > How you configure your client? What the client side looks like, ensure
> > you already specify wsdlLocation for client side. Seems the client
> > side didn't pick up the wsdl to build the service model.
> > Could you please paste the log when you run client?
> >
> > Freeman
> >
> > On 2011-1-19, at 下午9:38, MARTELLI Julien wrote:
> >> Hi,
> >>
> >> Thanks for this quick answer.
> >>
> >> I impacted the momdifications you are talking about and there is no
> >> difference. The client still generates SOAP 1.1 messages....
> >>
> >>
> >> -----Message d'origine-----
> >> De : Freeman Fang [mailto:freeman.fang@gmail.com]
> >> Envoyé : mercredi 19 janvier 2011 10:06
> >> À : users@cxf.apache.org
> >> Objet : Re: Unable to set Soap Version to 1.2
> >>
> >> Hi,
> >>
> >> My comment inline
> >>
> >> On 2011-1-19, at 下午4:54, MARTELLI Julien wrote:
> >>> Hi all,
> >>>
> >>> I am facing a problem with the SOAP message version.
> >>> I am really stuck with this problem so any help would be
> >>> appreciated.
> >>>
> >>> OK so here is the context.
> >>>
> >>> I have a WSDL file from which I generate sources using the wsdl2java
> >>> CXF Maven plugin.
> >>> Here is an extract of my WSDL file :
> >>>
> >>> <definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> >>> xmlns="http://schemas.xmlsoap.org/wsdl/"
> >>> xmlns:xsd="http://www.w3.org/2001/XMLSchema "
> >>> xmlns:ihe="urn:ihe:iti:xds-b:2007"
> >>> xmlns:rs="urn:oasis:names:tc:ebxml-regrep:xsd:rs:3.0 "
> >>> targetNamespace="urn:ihe:iti:xds-b:2007"
> >>> xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/ "
> >>> xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
> >>> name="DocumentRepository">
> >>> ...
> >>> <binding name="DocumentRepository_Binding"
> >>> type="ihe:DocumentRepository_PortType">
> >>>
> >>> <soap12:binding style="document"
> >>> transport="http://schemas.xmlsoap.org/soap/http
> >>>
> >>> "/>
> >>
> >> I think transport here should be
> >> transport="http://www.w3.org/2003/05/soap/bindings/HTTP/"
> >>
> >>> <operation name="DocumentRepository_ProvideAndRegisterDocumentSet-
> >>>
> >>> b">
> >>>
> >>> <soap12:operation
> >>> soapAction="urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b
> >>>
> >>> "/>
> >>>
> >>> <input>
> >>>
> >>> <soap12:body use="literal"/>
> >>>
> >>> </input>
> >>> <output>
> >>>
> >>> <soap12:body use="literal"/>
> >>>
> >>> </output>
> >>>
> >>> </operation>
> >>> <operation name="DocumentRepository_RetrieveDocumentSet">
> >>>
> >>> <soap12:operation soapAction="urn:ihe:iti:
> >>> 2007:RetrieveDocumentSet
> >>> "/>
> >>>
> >>> <input>
> >>>
> >>> <soap12:body use="literal"/>
> >>>
> >>> </input>
> >>> <output>
> >>>
> >>> <soap12:body use="literal"/>
> >>>
> >>> </output>
> >>>
> >>> </operation>
> >>>
> >>> </binding>
> >>> ;;;
> >>> <service name="DocumentRepository_Service">
> >>>
> >>> <port name="DocumentRepository_Port_Soap12"
> >>>
> >>> binding="ihe:DocumentRepository_Binding">
> >>>
> >>> <soap12:address
> >>> location="https://servicelocation/DocumentRepository_Service
> >>>
> >>> "/>
> >>>
> >>> </port>
> >>>
> >>> </service>
> >>>
> >>>
> >>> On the generated interface there is no annotation concerning the
> >>> Binding :
> >>>
> >>> @WebService(targetNamespace = "urn:ihe:iti:xds-b:2007", name =
> >>> "DocumentRepository_PortType")
> >>> @XmlSeeAlso
> >>> ({oasis.names.tc.ebxml_regrep.xsd.query._3.ObjectFactory.class,
> >>> oasis.names.tc.ebxml_regrep.xsd.rs._3.ObjectFactory.class,
> >>> ObjectFactory.class,
> >>> oasis.names.tc.ebxml_regrep.xsd.lcm._3.ObjectFactory.class,
> >>> oasis.names.tc.ebxml_regrep.xsd.rim._3.ObjectFactory.class})
> >>> public interface DocumentRepositoryPortType {
> >>> ...
> >>>
> >>>
> >>> Then I use the generated classes to contact the Web Service and my
> >>> client is not configured via Spring but build programmatically.
> >>>
> >>> The problem is that the generated SOAP message is a SOAP 1.1
> >>> message...
> >>> I am not able to find a way to configure my client to use a SOAP 1.2
> >>> binding, and I tried to add the annotation
> >>> @BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_MTOM_BINDING)
> >>> on the generated interface (as someone suggested to me on this
> >>
> >>> stackoverflow post :
> >> You should add annotation like
> >> @javax.xml.ws.BindingType(value =
> >> "http://www.w3.org/2003/05/soap/bindings/HTTP/ ")
> >>
> >> You can get more details from the wsdl_first_soap12 example shipped
> >> with kit.
> >>
> >> Freeman
> >>
> >>> http://stackoverflow.com/questions/4248098/cxf-how-to-set-soapversion-o
> >>> n-cxf-port-without-spring) but it didn't change anything...
> >>> Maybe it's because I configure my client without Spring and thus the
> >>> default Soap 1.1 version is used...
> >>> I really don't know...
> >>>
> >>>
> >>> Do you guys have an idea ?
> >>>
> >>> Thanks in advance !
> >>> J.
> >>
> >> ------------------------
> >>
> >> FuseSource: http://fusesource.com
> >> blog: http://freemanfang.blogspot.com
> >> twitter: http://twitter.com/freemanfang
> >> Apache Servicemix:http://servicemix.apache.org
> >> Apache Cxf: http://cxf.apache.org
> >> Apache Karaf: http://karaf.apache.org
> >> Apache Felix: http://felix.apache.org
> >
> > ------------------------
> >
> > FuseSource: http://fusesource.com
> > blog: http://freemanfang.blogspot.com
> > twitter: http://twitter.com/freemanfang
> > Apache Servicemix:http://servicemix.apache.org
> > Apache Cxf: http://cxf.apache.org
> > Apache Karaf: http://karaf.apache.org
> > Apache Felix: http://felix.apache.org
--
Daniel Kulp
dkulp@apache.org
http://dankulp.com/blog
RE: Unable to set Soap Version to 1.2
Posted by MARTELLI Julien <jm...@softwaymedical.fr>.
You were right!!
Adding the URL to the WSDL worked ;)
Thanks a lot for your quick and accurate advices!!
-----Message d'origine-----
De : Freeman Fang [mailto:freeman.fang@gmail.com]
Envoyé : mercredi 19 janvier 2011 15:44
À : users@cxf.apache.org
Objet : Re: Unable to set Soap Version to 1.2
On 2011-1-19, at 下午10:37, MARTELLI Julien wrote:
> Ehehe yep... This should be better ;)
>
>
> Here is how I get the portType:
>
> // Get the Service => this is maybe here that the Wsdl Location is
> missing?
> QName serviceQName = new QName("urn:ihe:iti:xds-b:2007",
> "DocumentRepository_Service");
> Service service = Service.create(serviceQName);
>
> // Get the PortType
> return Service.getPort(DocumentRepositoryPortType.class);
>
>
> => Maybe we need to create the service with Service.create(URL,
> QName) ??
That exactly what I suggest
Freeman
>
>
> And here is the very beginning of my client start:
>
> 19 janv. 2011 15:14:59
> org.apache.cxf.service.factory.ReflectionServiceFactoryBean
> buildServiceFromClass
> INFO: Creating Service {urn:ihe:iti:xds-b:
> 2007}DocumentRepository_Service from class
> ihe.iti.xdsb_2007.repository.DocumentRepositoryPortType
> 19 janv. 2011 15:15:00
> org.apache.cxf.service.factory.ReflectionServiceFactoryBean
> buildServiceFromClass
> INFO: Creating Service {urn:ihe:iti:xds-b:
> 2007}DocumentRepository_Service from class
> ihe.iti.xdsb_2007.repository.DocumentRepositoryPortType
> 19 janv. 2011 15:15:01
> org.apache.cxf.interceptor.LoggingOutInterceptor$LoggingCallback
> onClose
>
>
> Thanks again
>
> -----Message d'origine-----
> De : Freeman Fang [mailto:freeman.fang@gmail.com]
> Envoyé : mercredi 19 janvier 2011 15:31
> À : users@cxf.apache.org
> Objet : Re: Unable to set Soap Version to 1.2
>
> Hi,
>
> About the code part, I just want to see how you get portType, so that
> I can know if you pass in wsdlLocation
>
> About the log part, I want to see how the servicemodel is build, so
> that I can see if it pick up the wsdl, it should be at very beginning
> when you start client.
>
> Unfortunately, your post miss both what I want to check. :-)
> Freeman
>
> On 2011-1-19, at 下午10:15, MARTELLI Julien wrote:
>
>> This is how I configure the client:
>>
>>
>> // Below portType is a concrete implementation of
>> DocumentRepositoryPortType generated interface
>>
>> // Setting the service URL
>> BindingProvider provider = (BindingProvider) portType;
>> provider
>> .getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
>> wsUrl);
>> // MTOM
>> SOAPBinding soapBinding = (SOAPBinding) provider.getBinding();
>> soapBinding.setMTOMEnabled(true);
>> // Adding a specific handler
>> List<Handler> handlerChain = binding.getHandlerChain();
>> handlerChain.add(new JetonAuthentificationHandler());
>> soapBinding.setHandlerChain(handlerChain);
>> // Getting the client
>> Client client = ClientProxy.getClient(portType);
>> // WS-Adressing
>> EndpointImpl endpoint = (EndpointImpl) client.getEndpoint();
>> Bus bus = endpoint.getBus();
>> new WSAddressingFeature().initialize(client, bus);
>> // Setting endpointInfo URL
>> ConduitSelector conduitSelector = client.getConduitSelector();
>> conduitSelector
>> .getEndpoint().getEndpointInfo().setAddress(super.wsUrl);
>> // Then we add SSL / TLS configuration => not showed here
>>
>>
>>
>> Then we call the service:
>>
>> // With request as content
>> portType.documentRepositoryProvideAndRegisterDocumentSetB(request);
>>
>>
>> On the logs here is what we have (extract of the SOAP Envelope
>> beginning only):
>>
>> INFO: Outbound Message
>> ---------------------------
>> ID: 1
>> Address: https://172.30.13.61:9043/xds/cxf/DocumentRepository_Service
>> Encoding: UTF-8
>> Content-Type: multipart/related; type="application/xop+xml";
>> boundary="uuid:0e72f86e-32e7-4259-a577-45c4482f461a"; start="<root.message@cxf.apache.org
>>> "; start-info="text/xml"
>> Headers: {SOAPAction=["urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b
>> "], Accept=[*/*]}
>> Payload:
>> --uuid:0e72f86e-32e7-4259-a577-45c4482f461a
>> Content-Type: application/xop+xml; charset=UTF-8; type="text/xml";
>> Content-Transfer-Encoding: binary
>> Content-ID: <ro...@cxf.apache.org>
>>
>> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/
>> envelope/"><soap:Header><Action xmlns="http://www.w3.org/2005/08/addressing
>> ">urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b</
>> Action><MessageID xmlns="http://www.w3.org/2005/08/addressing">urn:uuid:c7a3eac7-054d-48a1-a510-c43e6d3df180
>> </MessageID><To xmlns="http://www.w3.org/2005/08/addressing">https://172.30.13.61:9043/xds/cxf/DocumentRepository_Service
>> </To><ReplyTo xmlns="http://www.w3.org/2005/08/addressing"><Address>http://www.w3.org/2005/08/addressing/anonymous
>> </Address></ReplyTo><wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd
>> "><saml2:Assertion xmlns:saml2="urn:oasis:names:tc:SAML:
>> 2.0:assertion" ID="be515324-bccf-4e2b-8667-231b6f46f4a6"
>> IssueInstant="2009-02-02T00:00:00.000Z" Version="2.0"><saml2:Issuer
>> Format="urn:oasis:names:tc:SAML:1.1:nameid-
>> format:X509SubjectName">CN=client, OU=Waid, O=Waid, L=Aix, ST=PACA,
>> C=FR</saml2:Issuer><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#
>> ">
>> ...
>>
>>
>>
>> -----Message d'origine-----
>> De : Freeman Fang [mailto:freeman.fang@gmail.com]
>> Envoyé : mercredi 19 janvier 2011 15:04
>> À : users@cxf.apache.org
>> Objet : Re: Unable to set Soap Version to 1.2
>>
>> Hi,
>>
>> How you configure your client? What the client side looks like,
>> ensure
>> you already specify wsdlLocation for client side. Seems the client
>> side didn't pick up the wsdl to build the service model.
>> Could you please paste the log when you run client?
>>
>> Freeman
>> On 2011-1-19, at 下午9:38, MARTELLI Julien wrote:
>>
>>> Hi,
>>>
>>> Thanks for this quick answer.
>>>
>>> I impacted the momdifications you are talking about and there is no
>>> difference. The client still generates SOAP 1.1 messages....
>>>
>>>
>>> -----Message d'origine-----
>>> De : Freeman Fang [mailto:freeman.fang@gmail.com]
>>> Envoyé : mercredi 19 janvier 2011 10:06
>>> À : users@cxf.apache.org
>>> Objet : Re: Unable to set Soap Version to 1.2
>>>
>>> Hi,
>>>
>>> My comment inline
>>> On 2011-1-19, at 下午4:54, MARTELLI Julien wrote:
>>>
>>>> Hi all,
>>>>
>>>> I am facing a problem with the SOAP message version.
>>>> I am really stuck with this problem so any help would be
>>>> appreciated.
>>>>
>>>> OK so here is the context.
>>>>
>>>> I have a WSDL file from which I generate sources using the
>>>> wsdl2java
>>>> CXF Maven plugin.
>>>> Here is an extract of my WSDL file :
>>>>
>>>> <definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
>>>> xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema
>>>> "
>>>> xmlns:ihe="urn:ihe:iti:xds-b:2007" xmlns:rs="urn:oasis:names:tc:ebxml-regrep:xsd:rs:3.0
>>>> "
>>>> targetNamespace="urn:ihe:iti:xds-b:2007" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/
>>>> "
>>>> xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
>>>> name="DocumentRepository">
>>>> ...
>>>> <binding name="DocumentRepository_Binding"
>>>> type="ihe:DocumentRepository_PortType">
>>>> <soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http
>>>> "/>
>>> I think transport here should be
>>> transport="http://www.w3.org/2003/05/soap/bindings/HTTP/"
>>>> <operation name="DocumentRepository_ProvideAndRegisterDocumentSet-
>>>> b">
>>>> <soap12:operation soapAction="urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b
>>>> "/>
>>>> <input>
>>>> <soap12:body use="literal"/>
>>>> </input>
>>>> <output>
>>>> <soap12:body use="literal"/>
>>>> </output>
>>>> </operation>
>>>> <operation name="DocumentRepository_RetrieveDocumentSet">
>>>> <soap12:operation soapAction="urn:ihe:iti:
>>>> 2007:RetrieveDocumentSet
>>>> "/>
>>>> <input>
>>>> <soap12:body use="literal"/>
>>>> </input>
>>>> <output>
>>>> <soap12:body use="literal"/>
>>>> </output>
>>>> </operation>
>>>> </binding>
>>>> ;;;
>>>> <service name="DocumentRepository_Service">
>>>> <port name="DocumentRepository_Port_Soap12"
>>>> binding="ihe:DocumentRepository_Binding">
>>>> <soap12:address location="https://servicelocation/DocumentRepository_Service
>>>> "/>
>>>> </port>
>>>> </service>
>>>>
>>>>
>>>> On the generated interface there is no annotation concerning the
>>>> Binding :
>>>>
>>>> @WebService(targetNamespace = "urn:ihe:iti:xds-b:2007", name =
>>>> "DocumentRepository_PortType")
>>>> @XmlSeeAlso
>>>> ({oasis.names.tc.ebxml_regrep.xsd.query._3.ObjectFactory.class,
>>>> oasis.names.tc.ebxml_regrep.xsd.rs._3.ObjectFactory.class,
>>>> ObjectFactory.class,
>>>> oasis.names.tc.ebxml_regrep.xsd.lcm._3.ObjectFactory.class,
>>>> oasis.names.tc.ebxml_regrep.xsd.rim._3.ObjectFactory.class})
>>>> public interface DocumentRepositoryPortType {
>>>> ...
>>>>
>>>>
>>>> Then I use the generated classes to contact the Web Service and my
>>>> client is not configured via Spring but build programmatically.
>>>>
>>>> The problem is that the generated SOAP message is a SOAP 1.1
>>>> message...
>>>> I am not able to find a way to configure my client to use a SOAP
>>>> 1.2
>>>> binding, and I tried to add the annotation
>>>> @BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_MTOM_BINDING)
>>>> on the generated interface (as someone suggested to me on this
>>>> stackoverflow post :
>>> You should add annotation like
>>> @javax.xml.ws.BindingType(value = "http://www.w3.org/2003/05/soap/bindings/HTTP/
>>> ")
>>>
>>> You can get more details from the wsdl_first_soap12 example shipped
>>> with kit.
>>>
>>> Freeman
>>>> http://stackoverflow.com/questions/4248098/cxf-how-to-set-soapversion-on-cxf-port-without-spring)
>>>> but it didn't change anything...
>>>> Maybe it's because I configure my client without Spring and thus
>>>> the
>>>> default Soap 1.1 version is used...
>>>> I really don't know...
>>>>
>>>>
>>>> Do you guys have an idea ?
>>>>
>>>> Thanks in advance !
>>>> J.
>>>
>>>
>>> --
>>> Freeman Fang
>>>
>>> ------------------------
>>>
>>> FuseSource: http://fusesource.com
>>> blog: http://freemanfang.blogspot.com
>>> twitter: http://twitter.com/freemanfang
>>> Apache Servicemix:http://servicemix.apache.org
>>> Apache Cxf: http://cxf.apache.org
>>> Apache Karaf: http://karaf.apache.org
>>> Apache Felix: http://felix.apache.org
>>>
>>
>>
>> --
>> Freeman Fang
>>
>> ------------------------
>>
>> FuseSource: http://fusesource.com
>> blog: http://freemanfang.blogspot.com
>> twitter: http://twitter.com/freemanfang
>> Apache Servicemix:http://servicemix.apache.org
>> Apache Cxf: http://cxf.apache.org
>> Apache Karaf: http://karaf.apache.org
>> Apache Felix: http://felix.apache.org
>>
>
>
> --
> Freeman Fang
>
> ------------------------
>
> FuseSource: http://fusesource.com
> blog: http://freemanfang.blogspot.com
> twitter: http://twitter.com/freemanfang
> Apache Servicemix:http://servicemix.apache.org
> Apache Cxf: http://cxf.apache.org
> Apache Karaf: http://karaf.apache.org
> Apache Felix: http://felix.apache.org
>
--
Freeman Fang
------------------------
FuseSource: http://fusesource.com
blog: http://freemanfang.blogspot.com
twitter: http://twitter.com/freemanfang
Apache Servicemix:http://servicemix.apache.org
Apache Cxf: http://cxf.apache.org
Apache Karaf: http://karaf.apache.org
Apache Felix: http://felix.apache.org
Re: Unable to set Soap Version to 1.2
Posted by Freeman Fang <fr...@gmail.com>.
On 2011-1-19, at 下午10:37, MARTELLI Julien wrote:
> Ehehe yep... This should be better ;)
>
>
> Here is how I get the portType:
>
> // Get the Service => this is maybe here that the Wsdl Location is
> missing?
> QName serviceQName = new QName("urn:ihe:iti:xds-b:2007",
> "DocumentRepository_Service");
> Service service = Service.create(serviceQName);
>
> // Get the PortType
> return Service.getPort(DocumentRepositoryPortType.class);
>
>
> => Maybe we need to create the service with Service.create(URL,
> QName) ??
That exactly what I suggest
Freeman
>
>
> And here is the very beginning of my client start:
>
> 19 janv. 2011 15:14:59
> org.apache.cxf.service.factory.ReflectionServiceFactoryBean
> buildServiceFromClass
> INFO: Creating Service {urn:ihe:iti:xds-b:
> 2007}DocumentRepository_Service from class
> ihe.iti.xdsb_2007.repository.DocumentRepositoryPortType
> 19 janv. 2011 15:15:00
> org.apache.cxf.service.factory.ReflectionServiceFactoryBean
> buildServiceFromClass
> INFO: Creating Service {urn:ihe:iti:xds-b:
> 2007}DocumentRepository_Service from class
> ihe.iti.xdsb_2007.repository.DocumentRepositoryPortType
> 19 janv. 2011 15:15:01
> org.apache.cxf.interceptor.LoggingOutInterceptor$LoggingCallback
> onClose
>
>
> Thanks again
>
> -----Message d'origine-----
> De : Freeman Fang [mailto:freeman.fang@gmail.com]
> Envoyé : mercredi 19 janvier 2011 15:31
> À : users@cxf.apache.org
> Objet : Re: Unable to set Soap Version to 1.2
>
> Hi,
>
> About the code part, I just want to see how you get portType, so that
> I can know if you pass in wsdlLocation
>
> About the log part, I want to see how the servicemodel is build, so
> that I can see if it pick up the wsdl, it should be at very beginning
> when you start client.
>
> Unfortunately, your post miss both what I want to check. :-)
> Freeman
>
> On 2011-1-19, at 下午10:15, MARTELLI Julien wrote:
>
>> This is how I configure the client:
>>
>>
>> // Below portType is a concrete implementation of
>> DocumentRepositoryPortType generated interface
>>
>> // Setting the service URL
>> BindingProvider provider = (BindingProvider) portType;
>> provider
>> .getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
>> wsUrl);
>> // MTOM
>> SOAPBinding soapBinding = (SOAPBinding) provider.getBinding();
>> soapBinding.setMTOMEnabled(true);
>> // Adding a specific handler
>> List<Handler> handlerChain = binding.getHandlerChain();
>> handlerChain.add(new JetonAuthentificationHandler());
>> soapBinding.setHandlerChain(handlerChain);
>> // Getting the client
>> Client client = ClientProxy.getClient(portType);
>> // WS-Adressing
>> EndpointImpl endpoint = (EndpointImpl) client.getEndpoint();
>> Bus bus = endpoint.getBus();
>> new WSAddressingFeature().initialize(client, bus);
>> // Setting endpointInfo URL
>> ConduitSelector conduitSelector = client.getConduitSelector();
>> conduitSelector
>> .getEndpoint().getEndpointInfo().setAddress(super.wsUrl);
>> // Then we add SSL / TLS configuration => not showed here
>>
>>
>>
>> Then we call the service:
>>
>> // With request as content
>> portType.documentRepositoryProvideAndRegisterDocumentSetB(request);
>>
>>
>> On the logs here is what we have (extract of the SOAP Envelope
>> beginning only):
>>
>> INFO: Outbound Message
>> ---------------------------
>> ID: 1
>> Address: https://172.30.13.61:9043/xds/cxf/DocumentRepository_Service
>> Encoding: UTF-8
>> Content-Type: multipart/related; type="application/xop+xml";
>> boundary="uuid:0e72f86e-32e7-4259-a577-45c4482f461a"; start="<root.message@cxf.apache.org
>>> "; start-info="text/xml"
>> Headers: {SOAPAction=["urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b
>> "], Accept=[*/*]}
>> Payload:
>> --uuid:0e72f86e-32e7-4259-a577-45c4482f461a
>> Content-Type: application/xop+xml; charset=UTF-8; type="text/xml";
>> Content-Transfer-Encoding: binary
>> Content-ID: <ro...@cxf.apache.org>
>>
>> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/
>> envelope/"><soap:Header><Action xmlns="http://www.w3.org/2005/08/addressing
>> ">urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b</
>> Action><MessageID xmlns="http://www.w3.org/2005/08/addressing">urn:uuid:c7a3eac7-054d-48a1-a510-c43e6d3df180
>> </MessageID><To xmlns="http://www.w3.org/2005/08/addressing">https://172.30.13.61:9043/xds/cxf/DocumentRepository_Service
>> </To><ReplyTo xmlns="http://www.w3.org/2005/08/addressing"><Address>http://www.w3.org/2005/08/addressing/anonymous
>> </Address></ReplyTo><wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd
>> "><saml2:Assertion xmlns:saml2="urn:oasis:names:tc:SAML:
>> 2.0:assertion" ID="be515324-bccf-4e2b-8667-231b6f46f4a6"
>> IssueInstant="2009-02-02T00:00:00.000Z" Version="2.0"><saml2:Issuer
>> Format="urn:oasis:names:tc:SAML:1.1:nameid-
>> format:X509SubjectName">CN=client, OU=Waid, O=Waid, L=Aix, ST=PACA,
>> C=FR</saml2:Issuer><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#
>> ">
>> ...
>>
>>
>>
>> -----Message d'origine-----
>> De : Freeman Fang [mailto:freeman.fang@gmail.com]
>> Envoyé : mercredi 19 janvier 2011 15:04
>> À : users@cxf.apache.org
>> Objet : Re: Unable to set Soap Version to 1.2
>>
>> Hi,
>>
>> How you configure your client? What the client side looks like,
>> ensure
>> you already specify wsdlLocation for client side. Seems the client
>> side didn't pick up the wsdl to build the service model.
>> Could you please paste the log when you run client?
>>
>> Freeman
>> On 2011-1-19, at 下午9:38, MARTELLI Julien wrote:
>>
>>> Hi,
>>>
>>> Thanks for this quick answer.
>>>
>>> I impacted the momdifications you are talking about and there is no
>>> difference. The client still generates SOAP 1.1 messages....
>>>
>>>
>>> -----Message d'origine-----
>>> De : Freeman Fang [mailto:freeman.fang@gmail.com]
>>> Envoyé : mercredi 19 janvier 2011 10:06
>>> À : users@cxf.apache.org
>>> Objet : Re: Unable to set Soap Version to 1.2
>>>
>>> Hi,
>>>
>>> My comment inline
>>> On 2011-1-19, at 下午4:54, MARTELLI Julien wrote:
>>>
>>>> Hi all,
>>>>
>>>> I am facing a problem with the SOAP message version.
>>>> I am really stuck with this problem so any help would be
>>>> appreciated.
>>>>
>>>> OK so here is the context.
>>>>
>>>> I have a WSDL file from which I generate sources using the
>>>> wsdl2java
>>>> CXF Maven plugin.
>>>> Here is an extract of my WSDL file :
>>>>
>>>> <definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
>>>> xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema
>>>> "
>>>> xmlns:ihe="urn:ihe:iti:xds-b:2007" xmlns:rs="urn:oasis:names:tc:ebxml-regrep:xsd:rs:3.0
>>>> "
>>>> targetNamespace="urn:ihe:iti:xds-b:2007" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/
>>>> "
>>>> xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
>>>> name="DocumentRepository">
>>>> ...
>>>> <binding name="DocumentRepository_Binding"
>>>> type="ihe:DocumentRepository_PortType">
>>>> <soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http
>>>> "/>
>>> I think transport here should be
>>> transport="http://www.w3.org/2003/05/soap/bindings/HTTP/"
>>>> <operation name="DocumentRepository_ProvideAndRegisterDocumentSet-
>>>> b">
>>>> <soap12:operation soapAction="urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b
>>>> "/>
>>>> <input>
>>>> <soap12:body use="literal"/>
>>>> </input>
>>>> <output>
>>>> <soap12:body use="literal"/>
>>>> </output>
>>>> </operation>
>>>> <operation name="DocumentRepository_RetrieveDocumentSet">
>>>> <soap12:operation soapAction="urn:ihe:iti:
>>>> 2007:RetrieveDocumentSet
>>>> "/>
>>>> <input>
>>>> <soap12:body use="literal"/>
>>>> </input>
>>>> <output>
>>>> <soap12:body use="literal"/>
>>>> </output>
>>>> </operation>
>>>> </binding>
>>>> ;;;
>>>> <service name="DocumentRepository_Service">
>>>> <port name="DocumentRepository_Port_Soap12"
>>>> binding="ihe:DocumentRepository_Binding">
>>>> <soap12:address location="https://servicelocation/DocumentRepository_Service
>>>> "/>
>>>> </port>
>>>> </service>
>>>>
>>>>
>>>> On the generated interface there is no annotation concerning the
>>>> Binding :
>>>>
>>>> @WebService(targetNamespace = "urn:ihe:iti:xds-b:2007", name =
>>>> "DocumentRepository_PortType")
>>>> @XmlSeeAlso
>>>> ({oasis.names.tc.ebxml_regrep.xsd.query._3.ObjectFactory.class,
>>>> oasis.names.tc.ebxml_regrep.xsd.rs._3.ObjectFactory.class,
>>>> ObjectFactory.class,
>>>> oasis.names.tc.ebxml_regrep.xsd.lcm._3.ObjectFactory.class,
>>>> oasis.names.tc.ebxml_regrep.xsd.rim._3.ObjectFactory.class})
>>>> public interface DocumentRepositoryPortType {
>>>> ...
>>>>
>>>>
>>>> Then I use the generated classes to contact the Web Service and my
>>>> client is not configured via Spring but build programmatically.
>>>>
>>>> The problem is that the generated SOAP message is a SOAP 1.1
>>>> message...
>>>> I am not able to find a way to configure my client to use a SOAP
>>>> 1.2
>>>> binding, and I tried to add the annotation
>>>> @BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_MTOM_BINDING)
>>>> on the generated interface (as someone suggested to me on this
>>>> stackoverflow post :
>>> You should add annotation like
>>> @javax.xml.ws.BindingType(value = "http://www.w3.org/2003/05/soap/bindings/HTTP/
>>> ")
>>>
>>> You can get more details from the wsdl_first_soap12 example shipped
>>> with kit.
>>>
>>> Freeman
>>>> http://stackoverflow.com/questions/4248098/cxf-how-to-set-soapversion-on-cxf-port-without-spring)
>>>> but it didn't change anything...
>>>> Maybe it's because I configure my client without Spring and thus
>>>> the
>>>> default Soap 1.1 version is used...
>>>> I really don't know...
>>>>
>>>>
>>>> Do you guys have an idea ?
>>>>
>>>> Thanks in advance !
>>>> J.
>>>
>>>
>>> --
>>> Freeman Fang
>>>
>>> ------------------------
>>>
>>> FuseSource: http://fusesource.com
>>> blog: http://freemanfang.blogspot.com
>>> twitter: http://twitter.com/freemanfang
>>> Apache Servicemix:http://servicemix.apache.org
>>> Apache Cxf: http://cxf.apache.org
>>> Apache Karaf: http://karaf.apache.org
>>> Apache Felix: http://felix.apache.org
>>>
>>
>>
>> --
>> Freeman Fang
>>
>> ------------------------
>>
>> FuseSource: http://fusesource.com
>> blog: http://freemanfang.blogspot.com
>> twitter: http://twitter.com/freemanfang
>> Apache Servicemix:http://servicemix.apache.org
>> Apache Cxf: http://cxf.apache.org
>> Apache Karaf: http://karaf.apache.org
>> Apache Felix: http://felix.apache.org
>>
>
>
> --
> Freeman Fang
>
> ------------------------
>
> FuseSource: http://fusesource.com
> blog: http://freemanfang.blogspot.com
> twitter: http://twitter.com/freemanfang
> Apache Servicemix:http://servicemix.apache.org
> Apache Cxf: http://cxf.apache.org
> Apache Karaf: http://karaf.apache.org
> Apache Felix: http://felix.apache.org
>
--
Freeman Fang
------------------------
FuseSource: http://fusesource.com
blog: http://freemanfang.blogspot.com
twitter: http://twitter.com/freemanfang
Apache Servicemix:http://servicemix.apache.org
Apache Cxf: http://cxf.apache.org
Apache Karaf: http://karaf.apache.org
Apache Felix: http://felix.apache.org
RE: Unable to set Soap Version to 1.2
Posted by MARTELLI Julien <jm...@softwaymedical.fr>.
Ehehe yep... This should be better ;)
Here is how I get the portType:
// Get the Service => this is maybe here that the Wsdl Location is missing?
QName serviceQName = new QName("urn:ihe:iti:xds-b:2007", "DocumentRepository_Service");
Service service = Service.create(serviceQName);
// Get the PortType
return Service.getPort(DocumentRepositoryPortType.class);
=> Maybe we need to create the service with Service.create(URL, QName) ??
And here is the very beginning of my client start:
19 janv. 2011 15:14:59 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
INFO: Creating Service {urn:ihe:iti:xds-b:2007}DocumentRepository_Service from class ihe.iti.xdsb_2007.repository.DocumentRepositoryPortType
19 janv. 2011 15:15:00 org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
INFO: Creating Service {urn:ihe:iti:xds-b:2007}DocumentRepository_Service from class ihe.iti.xdsb_2007.repository.DocumentRepositoryPortType
19 janv. 2011 15:15:01 org.apache.cxf.interceptor.LoggingOutInterceptor$LoggingCallback onClose
Thanks again
-----Message d'origine-----
De : Freeman Fang [mailto:freeman.fang@gmail.com]
Envoyé : mercredi 19 janvier 2011 15:31
À : users@cxf.apache.org
Objet : Re: Unable to set Soap Version to 1.2
Hi,
About the code part, I just want to see how you get portType, so that
I can know if you pass in wsdlLocation
About the log part, I want to see how the servicemodel is build, so
that I can see if it pick up the wsdl, it should be at very beginning
when you start client.
Unfortunately, your post miss both what I want to check. :-)
Freeman
On 2011-1-19, at 下午10:15, MARTELLI Julien wrote:
> This is how I configure the client:
>
>
> // Below portType is a concrete implementation of
> DocumentRepositoryPortType generated interface
>
> // Setting the service URL
> BindingProvider provider = (BindingProvider) portType;
> provider
> .getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
> wsUrl);
> // MTOM
> SOAPBinding soapBinding = (SOAPBinding) provider.getBinding();
> soapBinding.setMTOMEnabled(true);
> // Adding a specific handler
> List<Handler> handlerChain = binding.getHandlerChain();
> handlerChain.add(new JetonAuthentificationHandler());
> soapBinding.setHandlerChain(handlerChain);
> // Getting the client
> Client client = ClientProxy.getClient(portType);
> // WS-Adressing
> EndpointImpl endpoint = (EndpointImpl) client.getEndpoint();
> Bus bus = endpoint.getBus();
> new WSAddressingFeature().initialize(client, bus);
> // Setting endpointInfo URL
> ConduitSelector conduitSelector = client.getConduitSelector();
> conduitSelector
> .getEndpoint().getEndpointInfo().setAddress(super.wsUrl);
> // Then we add SSL / TLS configuration => not showed here
>
>
>
> Then we call the service:
>
> // With request as content
> portType.documentRepositoryProvideAndRegisterDocumentSetB(request);
>
>
> On the logs here is what we have (extract of the SOAP Envelope
> beginning only):
>
> INFO: Outbound Message
> ---------------------------
> ID: 1
> Address: https://172.30.13.61:9043/xds/cxf/DocumentRepository_Service
> Encoding: UTF-8
> Content-Type: multipart/related; type="application/xop+xml";
> boundary="uuid:0e72f86e-32e7-4259-a577-45c4482f461a"; start="<root.message@cxf.apache.org
> >"; start-info="text/xml"
> Headers: {SOAPAction=["urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b
> "], Accept=[*/*]}
> Payload:
> --uuid:0e72f86e-32e7-4259-a577-45c4482f461a
> Content-Type: application/xop+xml; charset=UTF-8; type="text/xml";
> Content-Transfer-Encoding: binary
> Content-ID: <ro...@cxf.apache.org>
>
> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/
> envelope/"><soap:Header><Action xmlns="http://www.w3.org/2005/08/addressing
> ">urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b</
> Action><MessageID xmlns="http://www.w3.org/2005/08/addressing">urn:uuid:c7a3eac7-054d-48a1-a510-c43e6d3df180
> </MessageID><To xmlns="http://www.w3.org/2005/08/addressing">https://172.30.13.61:9043/xds/cxf/DocumentRepository_Service
> </To><ReplyTo xmlns="http://www.w3.org/2005/08/addressing"><Address>http://www.w3.org/2005/08/addressing/anonymous
> </Address></ReplyTo><wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd
> "><saml2:Assertion xmlns:saml2="urn:oasis:names:tc:SAML:
> 2.0:assertion" ID="be515324-bccf-4e2b-8667-231b6f46f4a6"
> IssueInstant="2009-02-02T00:00:00.000Z" Version="2.0"><saml2:Issuer
> Format="urn:oasis:names:tc:SAML:1.1:nameid-
> format:X509SubjectName">CN=client, OU=Waid, O=Waid, L=Aix, ST=PACA,
> C=FR</saml2:Issuer><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#
> ">
> ...
>
>
>
> -----Message d'origine-----
> De : Freeman Fang [mailto:freeman.fang@gmail.com]
> Envoyé : mercredi 19 janvier 2011 15:04
> À : users@cxf.apache.org
> Objet : Re: Unable to set Soap Version to 1.2
>
> Hi,
>
> How you configure your client? What the client side looks like, ensure
> you already specify wsdlLocation for client side. Seems the client
> side didn't pick up the wsdl to build the service model.
> Could you please paste the log when you run client?
>
> Freeman
> On 2011-1-19, at 下午9:38, MARTELLI Julien wrote:
>
>> Hi,
>>
>> Thanks for this quick answer.
>>
>> I impacted the momdifications you are talking about and there is no
>> difference. The client still generates SOAP 1.1 messages....
>>
>>
>> -----Message d'origine-----
>> De : Freeman Fang [mailto:freeman.fang@gmail.com]
>> Envoyé : mercredi 19 janvier 2011 10:06
>> À : users@cxf.apache.org
>> Objet : Re: Unable to set Soap Version to 1.2
>>
>> Hi,
>>
>> My comment inline
>> On 2011-1-19, at 下午4:54, MARTELLI Julien wrote:
>>
>>> Hi all,
>>>
>>> I am facing a problem with the SOAP message version.
>>> I am really stuck with this problem so any help would be
>>> appreciated.
>>>
>>> OK so here is the context.
>>>
>>> I have a WSDL file from which I generate sources using the wsdl2java
>>> CXF Maven plugin.
>>> Here is an extract of my WSDL file :
>>>
>>> <definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
>>> xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema
>>> "
>>> xmlns:ihe="urn:ihe:iti:xds-b:2007" xmlns:rs="urn:oasis:names:tc:ebxml-regrep:xsd:rs:3.0
>>> "
>>> targetNamespace="urn:ihe:iti:xds-b:2007" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/
>>> "
>>> xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
>>> name="DocumentRepository">
>>> ...
>>> <binding name="DocumentRepository_Binding"
>>> type="ihe:DocumentRepository_PortType">
>>> <soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http
>>> "/>
>> I think transport here should be
>> transport="http://www.w3.org/2003/05/soap/bindings/HTTP/"
>>> <operation name="DocumentRepository_ProvideAndRegisterDocumentSet-
>>> b">
>>> <soap12:operation soapAction="urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b
>>> "/>
>>> <input>
>>> <soap12:body use="literal"/>
>>> </input>
>>> <output>
>>> <soap12:body use="literal"/>
>>> </output>
>>> </operation>
>>> <operation name="DocumentRepository_RetrieveDocumentSet">
>>> <soap12:operation soapAction="urn:ihe:iti:
>>> 2007:RetrieveDocumentSet
>>> "/>
>>> <input>
>>> <soap12:body use="literal"/>
>>> </input>
>>> <output>
>>> <soap12:body use="literal"/>
>>> </output>
>>> </operation>
>>> </binding>
>>> ;;;
>>> <service name="DocumentRepository_Service">
>>> <port name="DocumentRepository_Port_Soap12"
>>> binding="ihe:DocumentRepository_Binding">
>>> <soap12:address location="https://servicelocation/DocumentRepository_Service
>>> "/>
>>> </port>
>>> </service>
>>>
>>>
>>> On the generated interface there is no annotation concerning the
>>> Binding :
>>>
>>> @WebService(targetNamespace = "urn:ihe:iti:xds-b:2007", name =
>>> "DocumentRepository_PortType")
>>> @XmlSeeAlso
>>> ({oasis.names.tc.ebxml_regrep.xsd.query._3.ObjectFactory.class,
>>> oasis.names.tc.ebxml_regrep.xsd.rs._3.ObjectFactory.class,
>>> ObjectFactory.class,
>>> oasis.names.tc.ebxml_regrep.xsd.lcm._3.ObjectFactory.class,
>>> oasis.names.tc.ebxml_regrep.xsd.rim._3.ObjectFactory.class})
>>> public interface DocumentRepositoryPortType {
>>> ...
>>>
>>>
>>> Then I use the generated classes to contact the Web Service and my
>>> client is not configured via Spring but build programmatically.
>>>
>>> The problem is that the generated SOAP message is a SOAP 1.1
>>> message...
>>> I am not able to find a way to configure my client to use a SOAP 1.2
>>> binding, and I tried to add the annotation
>>> @BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_MTOM_BINDING)
>>> on the generated interface (as someone suggested to me on this
>>> stackoverflow post :
>> You should add annotation like
>> @javax.xml.ws.BindingType(value = "http://www.w3.org/2003/05/soap/bindings/HTTP/
>> ")
>>
>> You can get more details from the wsdl_first_soap12 example shipped
>> with kit.
>>
>> Freeman
>>> http://stackoverflow.com/questions/4248098/cxf-how-to-set-soapversion-on-cxf-port-without-spring)
>>> but it didn't change anything...
>>> Maybe it's because I configure my client without Spring and thus the
>>> default Soap 1.1 version is used...
>>> I really don't know...
>>>
>>>
>>> Do you guys have an idea ?
>>>
>>> Thanks in advance !
>>> J.
>>
>>
>> --
>> Freeman Fang
>>
>> ------------------------
>>
>> FuseSource: http://fusesource.com
>> blog: http://freemanfang.blogspot.com
>> twitter: http://twitter.com/freemanfang
>> Apache Servicemix:http://servicemix.apache.org
>> Apache Cxf: http://cxf.apache.org
>> Apache Karaf: http://karaf.apache.org
>> Apache Felix: http://felix.apache.org
>>
>
>
> --
> Freeman Fang
>
> ------------------------
>
> FuseSource: http://fusesource.com
> blog: http://freemanfang.blogspot.com
> twitter: http://twitter.com/freemanfang
> Apache Servicemix:http://servicemix.apache.org
> Apache Cxf: http://cxf.apache.org
> Apache Karaf: http://karaf.apache.org
> Apache Felix: http://felix.apache.org
>
--
Freeman Fang
------------------------
FuseSource: http://fusesource.com
blog: http://freemanfang.blogspot.com
twitter: http://twitter.com/freemanfang
Apache Servicemix:http://servicemix.apache.org
Apache Cxf: http://cxf.apache.org
Apache Karaf: http://karaf.apache.org
Apache Felix: http://felix.apache.org
Re: Unable to set Soap Version to 1.2
Posted by Freeman Fang <fr...@gmail.com>.
Hi,
About the code part, I just want to see how you get portType, so that
I can know if you pass in wsdlLocation
About the log part, I want to see how the servicemodel is build, so
that I can see if it pick up the wsdl, it should be at very beginning
when you start client.
Unfortunately, your post miss both what I want to check. :-)
Freeman
On 2011-1-19, at 下午10:15, MARTELLI Julien wrote:
> This is how I configure the client:
>
>
> // Below portType is a concrete implementation of
> DocumentRepositoryPortType generated interface
>
> // Setting the service URL
> BindingProvider provider = (BindingProvider) portType;
> provider
> .getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
> wsUrl);
> // MTOM
> SOAPBinding soapBinding = (SOAPBinding) provider.getBinding();
> soapBinding.setMTOMEnabled(true);
> // Adding a specific handler
> List<Handler> handlerChain = binding.getHandlerChain();
> handlerChain.add(new JetonAuthentificationHandler());
> soapBinding.setHandlerChain(handlerChain);
> // Getting the client
> Client client = ClientProxy.getClient(portType);
> // WS-Adressing
> EndpointImpl endpoint = (EndpointImpl) client.getEndpoint();
> Bus bus = endpoint.getBus();
> new WSAddressingFeature().initialize(client, bus);
> // Setting endpointInfo URL
> ConduitSelector conduitSelector = client.getConduitSelector();
> conduitSelector
> .getEndpoint().getEndpointInfo().setAddress(super.wsUrl);
> // Then we add SSL / TLS configuration => not showed here
>
>
>
> Then we call the service:
>
> // With request as content
> portType.documentRepositoryProvideAndRegisterDocumentSetB(request);
>
>
> On the logs here is what we have (extract of the SOAP Envelope
> beginning only):
>
> INFO: Outbound Message
> ---------------------------
> ID: 1
> Address: https://172.30.13.61:9043/xds/cxf/DocumentRepository_Service
> Encoding: UTF-8
> Content-Type: multipart/related; type="application/xop+xml";
> boundary="uuid:0e72f86e-32e7-4259-a577-45c4482f461a"; start="<root.message@cxf.apache.org
> >"; start-info="text/xml"
> Headers: {SOAPAction=["urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b
> "], Accept=[*/*]}
> Payload:
> --uuid:0e72f86e-32e7-4259-a577-45c4482f461a
> Content-Type: application/xop+xml; charset=UTF-8; type="text/xml";
> Content-Transfer-Encoding: binary
> Content-ID: <ro...@cxf.apache.org>
>
> <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/
> envelope/"><soap:Header><Action xmlns="http://www.w3.org/2005/08/addressing
> ">urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b</
> Action><MessageID xmlns="http://www.w3.org/2005/08/addressing">urn:uuid:c7a3eac7-054d-48a1-a510-c43e6d3df180
> </MessageID><To xmlns="http://www.w3.org/2005/08/addressing">https://172.30.13.61:9043/xds/cxf/DocumentRepository_Service
> </To><ReplyTo xmlns="http://www.w3.org/2005/08/addressing"><Address>http://www.w3.org/2005/08/addressing/anonymous
> </Address></ReplyTo><wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd
> "><saml2:Assertion xmlns:saml2="urn:oasis:names:tc:SAML:
> 2.0:assertion" ID="be515324-bccf-4e2b-8667-231b6f46f4a6"
> IssueInstant="2009-02-02T00:00:00.000Z" Version="2.0"><saml2:Issuer
> Format="urn:oasis:names:tc:SAML:1.1:nameid-
> format:X509SubjectName">CN=client, OU=Waid, O=Waid, L=Aix, ST=PACA,
> C=FR</saml2:Issuer><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#
> ">
> ...
>
>
>
> -----Message d'origine-----
> De : Freeman Fang [mailto:freeman.fang@gmail.com]
> Envoyé : mercredi 19 janvier 2011 15:04
> À : users@cxf.apache.org
> Objet : Re: Unable to set Soap Version to 1.2
>
> Hi,
>
> How you configure your client? What the client side looks like, ensure
> you already specify wsdlLocation for client side. Seems the client
> side didn't pick up the wsdl to build the service model.
> Could you please paste the log when you run client?
>
> Freeman
> On 2011-1-19, at 下午9:38, MARTELLI Julien wrote:
>
>> Hi,
>>
>> Thanks for this quick answer.
>>
>> I impacted the momdifications you are talking about and there is no
>> difference. The client still generates SOAP 1.1 messages....
>>
>>
>> -----Message d'origine-----
>> De : Freeman Fang [mailto:freeman.fang@gmail.com]
>> Envoyé : mercredi 19 janvier 2011 10:06
>> À : users@cxf.apache.org
>> Objet : Re: Unable to set Soap Version to 1.2
>>
>> Hi,
>>
>> My comment inline
>> On 2011-1-19, at 下午4:54, MARTELLI Julien wrote:
>>
>>> Hi all,
>>>
>>> I am facing a problem with the SOAP message version.
>>> I am really stuck with this problem so any help would be
>>> appreciated.
>>>
>>> OK so here is the context.
>>>
>>> I have a WSDL file from which I generate sources using the wsdl2java
>>> CXF Maven plugin.
>>> Here is an extract of my WSDL file :
>>>
>>> <definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
>>> xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema
>>> "
>>> xmlns:ihe="urn:ihe:iti:xds-b:2007" xmlns:rs="urn:oasis:names:tc:ebxml-regrep:xsd:rs:3.0
>>> "
>>> targetNamespace="urn:ihe:iti:xds-b:2007" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/
>>> "
>>> xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
>>> name="DocumentRepository">
>>> ...
>>> <binding name="DocumentRepository_Binding"
>>> type="ihe:DocumentRepository_PortType">
>>> <soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http
>>> "/>
>> I think transport here should be
>> transport="http://www.w3.org/2003/05/soap/bindings/HTTP/"
>>> <operation name="DocumentRepository_ProvideAndRegisterDocumentSet-
>>> b">
>>> <soap12:operation soapAction="urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b
>>> "/>
>>> <input>
>>> <soap12:body use="literal"/>
>>> </input>
>>> <output>
>>> <soap12:body use="literal"/>
>>> </output>
>>> </operation>
>>> <operation name="DocumentRepository_RetrieveDocumentSet">
>>> <soap12:operation soapAction="urn:ihe:iti:
>>> 2007:RetrieveDocumentSet
>>> "/>
>>> <input>
>>> <soap12:body use="literal"/>
>>> </input>
>>> <output>
>>> <soap12:body use="literal"/>
>>> </output>
>>> </operation>
>>> </binding>
>>> ;;;
>>> <service name="DocumentRepository_Service">
>>> <port name="DocumentRepository_Port_Soap12"
>>> binding="ihe:DocumentRepository_Binding">
>>> <soap12:address location="https://servicelocation/DocumentRepository_Service
>>> "/>
>>> </port>
>>> </service>
>>>
>>>
>>> On the generated interface there is no annotation concerning the
>>> Binding :
>>>
>>> @WebService(targetNamespace = "urn:ihe:iti:xds-b:2007", name =
>>> "DocumentRepository_PortType")
>>> @XmlSeeAlso
>>> ({oasis.names.tc.ebxml_regrep.xsd.query._3.ObjectFactory.class,
>>> oasis.names.tc.ebxml_regrep.xsd.rs._3.ObjectFactory.class,
>>> ObjectFactory.class,
>>> oasis.names.tc.ebxml_regrep.xsd.lcm._3.ObjectFactory.class,
>>> oasis.names.tc.ebxml_regrep.xsd.rim._3.ObjectFactory.class})
>>> public interface DocumentRepositoryPortType {
>>> ...
>>>
>>>
>>> Then I use the generated classes to contact the Web Service and my
>>> client is not configured via Spring but build programmatically.
>>>
>>> The problem is that the generated SOAP message is a SOAP 1.1
>>> message...
>>> I am not able to find a way to configure my client to use a SOAP 1.2
>>> binding, and I tried to add the annotation
>>> @BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_MTOM_BINDING)
>>> on the generated interface (as someone suggested to me on this
>>> stackoverflow post :
>> You should add annotation like
>> @javax.xml.ws.BindingType(value = "http://www.w3.org/2003/05/soap/bindings/HTTP/
>> ")
>>
>> You can get more details from the wsdl_first_soap12 example shipped
>> with kit.
>>
>> Freeman
>>> http://stackoverflow.com/questions/4248098/cxf-how-to-set-soapversion-on-cxf-port-without-spring)
>>> but it didn't change anything...
>>> Maybe it's because I configure my client without Spring and thus the
>>> default Soap 1.1 version is used...
>>> I really don't know...
>>>
>>>
>>> Do you guys have an idea ?
>>>
>>> Thanks in advance !
>>> J.
>>
>>
>> --
>> Freeman Fang
>>
>> ------------------------
>>
>> FuseSource: http://fusesource.com
>> blog: http://freemanfang.blogspot.com
>> twitter: http://twitter.com/freemanfang
>> Apache Servicemix:http://servicemix.apache.org
>> Apache Cxf: http://cxf.apache.org
>> Apache Karaf: http://karaf.apache.org
>> Apache Felix: http://felix.apache.org
>>
>
>
> --
> Freeman Fang
>
> ------------------------
>
> FuseSource: http://fusesource.com
> blog: http://freemanfang.blogspot.com
> twitter: http://twitter.com/freemanfang
> Apache Servicemix:http://servicemix.apache.org
> Apache Cxf: http://cxf.apache.org
> Apache Karaf: http://karaf.apache.org
> Apache Felix: http://felix.apache.org
>
--
Freeman Fang
------------------------
FuseSource: http://fusesource.com
blog: http://freemanfang.blogspot.com
twitter: http://twitter.com/freemanfang
Apache Servicemix:http://servicemix.apache.org
Apache Cxf: http://cxf.apache.org
Apache Karaf: http://karaf.apache.org
Apache Felix: http://felix.apache.org
RE: Unable to set Soap Version to 1.2
Posted by MARTELLI Julien <jm...@softwaymedical.fr>.
This is how I configure the client:
// Below portType is a concrete implementation of DocumentRepositoryPortType generated interface
// Setting the service URL
BindingProvider provider = (BindingProvider) portType;
provider.getRequestContext().put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY, wsUrl);
// MTOM
SOAPBinding soapBinding = (SOAPBinding) provider.getBinding();
soapBinding.setMTOMEnabled(true);
// Adding a specific handler
List<Handler> handlerChain = binding.getHandlerChain();
handlerChain.add(new JetonAuthentificationHandler());
soapBinding.setHandlerChain(handlerChain);
// Getting the client
Client client = ClientProxy.getClient(portType);
// WS-Adressing
EndpointImpl endpoint = (EndpointImpl) client.getEndpoint();
Bus bus = endpoint.getBus();
new WSAddressingFeature().initialize(client, bus);
// Setting endpointInfo URL
ConduitSelector conduitSelector = client.getConduitSelector();
conduitSelector.getEndpoint().getEndpointInfo().setAddress(super.wsUrl);
// Then we add SSL / TLS configuration => not showed here
Then we call the service:
// With request as content
portType.documentRepositoryProvideAndRegisterDocumentSetB(request);
On the logs here is what we have (extract of the SOAP Envelope beginning only):
INFO: Outbound Message
---------------------------
ID: 1
Address: https://172.30.13.61:9043/xds/cxf/DocumentRepository_Service
Encoding: UTF-8
Content-Type: multipart/related; type="application/xop+xml"; boundary="uuid:0e72f86e-32e7-4259-a577-45c4482f461a"; start="<ro...@cxf.apache.org>"; start-info="text/xml"
Headers: {SOAPAction=["urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b"], Accept=[*/*]}
Payload:
--uuid:0e72f86e-32e7-4259-a577-45c4482f461a
Content-Type: application/xop+xml; charset=UTF-8; type="text/xml";
Content-Transfer-Encoding: binary
Content-ID: <ro...@cxf.apache.org>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Header><Action xmlns="http://www.w3.org/2005/08/addressing">urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b</Action><MessageID xmlns="http://www.w3.org/2005/08/addressing">urn:uuid:c7a3eac7-054d-48a1-a510-c43e6d3df180</MessageID><To xmlns="http://www.w3.org/2005/08/addressing">https://172.30.13.61:9043/xds/cxf/DocumentRepository_Service</To><ReplyTo xmlns="http://www.w3.org/2005/08/addressing"><Address>http://www.w3.org/2005/08/addressing/anonymous</Address></ReplyTo><wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"><saml2:Assertion xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion" ID="be515324-bccf-4e2b-8667-231b6f46f4a6" IssueInstant="2009-02-02T00:00:00.000Z" Version="2.0"><saml2:Issuer Format="urn:oasis:names:tc:SAML:1.1:nameid-format:X509SubjectName">CN=client, OU=Waid, O=Waid, L=Aix, ST=PACA, C=FR</saml2:Issuer><ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
...
-----Message d'origine-----
De : Freeman Fang [mailto:freeman.fang@gmail.com]
Envoyé : mercredi 19 janvier 2011 15:04
À : users@cxf.apache.org
Objet : Re: Unable to set Soap Version to 1.2
Hi,
How you configure your client? What the client side looks like, ensure
you already specify wsdlLocation for client side. Seems the client
side didn't pick up the wsdl to build the service model.
Could you please paste the log when you run client?
Freeman
On 2011-1-19, at 下午9:38, MARTELLI Julien wrote:
> Hi,
>
> Thanks for this quick answer.
>
> I impacted the momdifications you are talking about and there is no
> difference. The client still generates SOAP 1.1 messages....
>
>
> -----Message d'origine-----
> De : Freeman Fang [mailto:freeman.fang@gmail.com]
> Envoyé : mercredi 19 janvier 2011 10:06
> À : users@cxf.apache.org
> Objet : Re: Unable to set Soap Version to 1.2
>
> Hi,
>
> My comment inline
> On 2011-1-19, at 下午4:54, MARTELLI Julien wrote:
>
>> Hi all,
>>
>> I am facing a problem with the SOAP message version.
>> I am really stuck with this problem so any help would be appreciated.
>>
>> OK so here is the context.
>>
>> I have a WSDL file from which I generate sources using the wsdl2java
>> CXF Maven plugin.
>> Here is an extract of my WSDL file :
>>
>> <definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
>> xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema
>> "
>> xmlns:ihe="urn:ihe:iti:xds-b:2007" xmlns:rs="urn:oasis:names:tc:ebxml-regrep:xsd:rs:3.0
>> "
>> targetNamespace="urn:ihe:iti:xds-b:2007" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/
>> "
>> xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
>> name="DocumentRepository">
>> ...
>> <binding name="DocumentRepository_Binding"
>> type="ihe:DocumentRepository_PortType">
>> <soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http
>> "/>
> I think transport here should be
> transport="http://www.w3.org/2003/05/soap/bindings/HTTP/"
>> <operation name="DocumentRepository_ProvideAndRegisterDocumentSet-
>> b">
>> <soap12:operation soapAction="urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b
>> "/>
>> <input>
>> <soap12:body use="literal"/>
>> </input>
>> <output>
>> <soap12:body use="literal"/>
>> </output>
>> </operation>
>> <operation name="DocumentRepository_RetrieveDocumentSet">
>> <soap12:operation soapAction="urn:ihe:iti:
>> 2007:RetrieveDocumentSet
>> "/>
>> <input>
>> <soap12:body use="literal"/>
>> </input>
>> <output>
>> <soap12:body use="literal"/>
>> </output>
>> </operation>
>> </binding>
>> ;;;
>> <service name="DocumentRepository_Service">
>> <port name="DocumentRepository_Port_Soap12"
>> binding="ihe:DocumentRepository_Binding">
>> <soap12:address location="https://servicelocation/DocumentRepository_Service
>> "/>
>> </port>
>> </service>
>>
>>
>> On the generated interface there is no annotation concerning the
>> Binding :
>>
>> @WebService(targetNamespace = "urn:ihe:iti:xds-b:2007", name =
>> "DocumentRepository_PortType")
>> @XmlSeeAlso
>> ({oasis.names.tc.ebxml_regrep.xsd.query._3.ObjectFactory.class,
>> oasis.names.tc.ebxml_regrep.xsd.rs._3.ObjectFactory.class,
>> ObjectFactory.class,
>> oasis.names.tc.ebxml_regrep.xsd.lcm._3.ObjectFactory.class,
>> oasis.names.tc.ebxml_regrep.xsd.rim._3.ObjectFactory.class})
>> public interface DocumentRepositoryPortType {
>> ...
>>
>>
>> Then I use the generated classes to contact the Web Service and my
>> client is not configured via Spring but build programmatically.
>>
>> The problem is that the generated SOAP message is a SOAP 1.1
>> message...
>> I am not able to find a way to configure my client to use a SOAP 1.2
>> binding, and I tried to add the annotation
>> @BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_MTOM_BINDING)
>> on the generated interface (as someone suggested to me on this
>> stackoverflow post :
> You should add annotation like
> @javax.xml.ws.BindingType(value = "http://www.w3.org/2003/05/soap/bindings/HTTP/
> ")
>
> You can get more details from the wsdl_first_soap12 example shipped
> with kit.
>
> Freeman
>> http://stackoverflow.com/questions/4248098/cxf-how-to-set-soapversion-on-cxf-port-without-spring)
>> but it didn't change anything...
>> Maybe it's because I configure my client without Spring and thus the
>> default Soap 1.1 version is used...
>> I really don't know...
>>
>>
>> Do you guys have an idea ?
>>
>> Thanks in advance !
>> J.
>
>
> --
> Freeman Fang
>
> ------------------------
>
> FuseSource: http://fusesource.com
> blog: http://freemanfang.blogspot.com
> twitter: http://twitter.com/freemanfang
> Apache Servicemix:http://servicemix.apache.org
> Apache Cxf: http://cxf.apache.org
> Apache Karaf: http://karaf.apache.org
> Apache Felix: http://felix.apache.org
>
--
Freeman Fang
------------------------
FuseSource: http://fusesource.com
blog: http://freemanfang.blogspot.com
twitter: http://twitter.com/freemanfang
Apache Servicemix:http://servicemix.apache.org
Apache Cxf: http://cxf.apache.org
Apache Karaf: http://karaf.apache.org
Apache Felix: http://felix.apache.org
Re: Unable to set Soap Version to 1.2
Posted by Freeman Fang <fr...@gmail.com>.
Hi,
How you configure your client? What the client side looks like, ensure
you already specify wsdlLocation for client side. Seems the client
side didn't pick up the wsdl to build the service model.
Could you please paste the log when you run client?
Freeman
On 2011-1-19, at 下午9:38, MARTELLI Julien wrote:
> Hi,
>
> Thanks for this quick answer.
>
> I impacted the momdifications you are talking about and there is no
> difference. The client still generates SOAP 1.1 messages....
>
>
> -----Message d'origine-----
> De : Freeman Fang [mailto:freeman.fang@gmail.com]
> Envoyé : mercredi 19 janvier 2011 10:06
> À : users@cxf.apache.org
> Objet : Re: Unable to set Soap Version to 1.2
>
> Hi,
>
> My comment inline
> On 2011-1-19, at 下午4:54, MARTELLI Julien wrote:
>
>> Hi all,
>>
>> I am facing a problem with the SOAP message version.
>> I am really stuck with this problem so any help would be appreciated.
>>
>> OK so here is the context.
>>
>> I have a WSDL file from which I generate sources using the wsdl2java
>> CXF Maven plugin.
>> Here is an extract of my WSDL file :
>>
>> <definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
>> xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema
>> "
>> xmlns:ihe="urn:ihe:iti:xds-b:2007" xmlns:rs="urn:oasis:names:tc:ebxml-regrep:xsd:rs:3.0
>> "
>> targetNamespace="urn:ihe:iti:xds-b:2007" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/
>> "
>> xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
>> name="DocumentRepository">
>> ...
>> <binding name="DocumentRepository_Binding"
>> type="ihe:DocumentRepository_PortType">
>> <soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http
>> "/>
> I think transport here should be
> transport="http://www.w3.org/2003/05/soap/bindings/HTTP/"
>> <operation name="DocumentRepository_ProvideAndRegisterDocumentSet-
>> b">
>> <soap12:operation soapAction="urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b
>> "/>
>> <input>
>> <soap12:body use="literal"/>
>> </input>
>> <output>
>> <soap12:body use="literal"/>
>> </output>
>> </operation>
>> <operation name="DocumentRepository_RetrieveDocumentSet">
>> <soap12:operation soapAction="urn:ihe:iti:
>> 2007:RetrieveDocumentSet
>> "/>
>> <input>
>> <soap12:body use="literal"/>
>> </input>
>> <output>
>> <soap12:body use="literal"/>
>> </output>
>> </operation>
>> </binding>
>> ;;;
>> <service name="DocumentRepository_Service">
>> <port name="DocumentRepository_Port_Soap12"
>> binding="ihe:DocumentRepository_Binding">
>> <soap12:address location="https://servicelocation/DocumentRepository_Service
>> "/>
>> </port>
>> </service>
>>
>>
>> On the generated interface there is no annotation concerning the
>> Binding :
>>
>> @WebService(targetNamespace = "urn:ihe:iti:xds-b:2007", name =
>> "DocumentRepository_PortType")
>> @XmlSeeAlso
>> ({oasis.names.tc.ebxml_regrep.xsd.query._3.ObjectFactory.class,
>> oasis.names.tc.ebxml_regrep.xsd.rs._3.ObjectFactory.class,
>> ObjectFactory.class,
>> oasis.names.tc.ebxml_regrep.xsd.lcm._3.ObjectFactory.class,
>> oasis.names.tc.ebxml_regrep.xsd.rim._3.ObjectFactory.class})
>> public interface DocumentRepositoryPortType {
>> ...
>>
>>
>> Then I use the generated classes to contact the Web Service and my
>> client is not configured via Spring but build programmatically.
>>
>> The problem is that the generated SOAP message is a SOAP 1.1
>> message...
>> I am not able to find a way to configure my client to use a SOAP 1.2
>> binding, and I tried to add the annotation
>> @BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_MTOM_BINDING)
>> on the generated interface (as someone suggested to me on this
>> stackoverflow post :
> You should add annotation like
> @javax.xml.ws.BindingType(value = "http://www.w3.org/2003/05/soap/bindings/HTTP/
> ")
>
> You can get more details from the wsdl_first_soap12 example shipped
> with kit.
>
> Freeman
>> http://stackoverflow.com/questions/4248098/cxf-how-to-set-soapversion-on-cxf-port-without-spring)
>> but it didn't change anything...
>> Maybe it's because I configure my client without Spring and thus the
>> default Soap 1.1 version is used...
>> I really don't know...
>>
>>
>> Do you guys have an idea ?
>>
>> Thanks in advance !
>> J.
>
>
> --
> Freeman Fang
>
> ------------------------
>
> FuseSource: http://fusesource.com
> blog: http://freemanfang.blogspot.com
> twitter: http://twitter.com/freemanfang
> Apache Servicemix:http://servicemix.apache.org
> Apache Cxf: http://cxf.apache.org
> Apache Karaf: http://karaf.apache.org
> Apache Felix: http://felix.apache.org
>
--
Freeman Fang
------------------------
FuseSource: http://fusesource.com
blog: http://freemanfang.blogspot.com
twitter: http://twitter.com/freemanfang
Apache Servicemix:http://servicemix.apache.org
Apache Cxf: http://cxf.apache.org
Apache Karaf: http://karaf.apache.org
Apache Felix: http://felix.apache.org
RE: Unable to set Soap Version to 1.2
Posted by MARTELLI Julien <jm...@softwaymedical.fr>.
Hi,
Thanks for this quick answer.
I impacted the momdifications you are talking about and there is no difference. The client still generates SOAP 1.1 messages....
-----Message d'origine-----
De : Freeman Fang [mailto:freeman.fang@gmail.com]
Envoyé : mercredi 19 janvier 2011 10:06
À : users@cxf.apache.org
Objet : Re: Unable to set Soap Version to 1.2
Hi,
My comment inline
On 2011-1-19, at 下午4:54, MARTELLI Julien wrote:
> Hi all,
>
> I am facing a problem with the SOAP message version.
> I am really stuck with this problem so any help would be appreciated.
>
> OK so here is the context.
>
> I have a WSDL file from which I generate sources using the wsdl2java
> CXF Maven plugin.
> Here is an extract of my WSDL file :
>
> <definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema
> "
> xmlns:ihe="urn:ihe:iti:xds-b:2007" xmlns:rs="urn:oasis:names:tc:ebxml-regrep:xsd:rs:3.0
> "
> targetNamespace="urn:ihe:iti:xds-b:2007" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/
> "
> xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
> name="DocumentRepository">
> ...
> <binding name="DocumentRepository_Binding"
> type="ihe:DocumentRepository_PortType">
> <soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http
> "/>
I think transport here should be
transport="http://www.w3.org/2003/05/soap/bindings/HTTP/"
> <operation name="DocumentRepository_ProvideAndRegisterDocumentSet-
> b">
> <soap12:operation soapAction="urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b
> "/>
> <input>
> <soap12:body use="literal"/>
> </input>
> <output>
> <soap12:body use="literal"/>
> </output>
> </operation>
> <operation name="DocumentRepository_RetrieveDocumentSet">
> <soap12:operation soapAction="urn:ihe:iti:2007:RetrieveDocumentSet
> "/>
> <input>
> <soap12:body use="literal"/>
> </input>
> <output>
> <soap12:body use="literal"/>
> </output>
> </operation>
> </binding>
> ;;;
> <service name="DocumentRepository_Service">
> <port name="DocumentRepository_Port_Soap12"
> binding="ihe:DocumentRepository_Binding">
> <soap12:address location="https://servicelocation/DocumentRepository_Service
> "/>
> </port>
> </service>
>
>
> On the generated interface there is no annotation concerning the
> Binding :
>
> @WebService(targetNamespace = "urn:ihe:iti:xds-b:2007", name =
> "DocumentRepository_PortType")
> @XmlSeeAlso
> ({oasis.names.tc.ebxml_regrep.xsd.query._3.ObjectFactory.class,
> oasis.names.tc.ebxml_regrep.xsd.rs._3.ObjectFactory.class,
> ObjectFactory.class,
> oasis.names.tc.ebxml_regrep.xsd.lcm._3.ObjectFactory.class,
> oasis.names.tc.ebxml_regrep.xsd.rim._3.ObjectFactory.class})
> public interface DocumentRepositoryPortType {
> ...
>
>
> Then I use the generated classes to contact the Web Service and my
> client is not configured via Spring but build programmatically.
>
> The problem is that the generated SOAP message is a SOAP 1.1
> message...
> I am not able to find a way to configure my client to use a SOAP 1.2
> binding, and I tried to add the annotation
> @BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_MTOM_BINDING)
> on the generated interface (as someone suggested to me on this
> stackoverflow post :
You should add annotation like
@javax.xml.ws.BindingType(value = "http://www.w3.org/2003/05/soap/bindings/HTTP/
")
You can get more details from the wsdl_first_soap12 example shipped
with kit.
Freeman
> http://stackoverflow.com/questions/4248098/cxf-how-to-set-soapversion-on-cxf-port-without-spring)
> but it didn't change anything...
> Maybe it's because I configure my client without Spring and thus the
> default Soap 1.1 version is used...
> I really don't know...
>
>
> Do you guys have an idea ?
>
> Thanks in advance !
> J.
--
Freeman Fang
------------------------
FuseSource: http://fusesource.com
blog: http://freemanfang.blogspot.com
twitter: http://twitter.com/freemanfang
Apache Servicemix:http://servicemix.apache.org
Apache Cxf: http://cxf.apache.org
Apache Karaf: http://karaf.apache.org
Apache Felix: http://felix.apache.org
Re: Unable to set Soap Version to 1.2
Posted by Freeman Fang <fr...@gmail.com>.
Hi,
My comment inline
On 2011-1-19, at 下午4:54, MARTELLI Julien wrote:
> Hi all,
>
> I am facing a problem with the SOAP message version.
> I am really stuck with this problem so any help would be appreciated.
>
> OK so here is the context.
>
> I have a WSDL file from which I generate sources using the wsdl2java
> CXF Maven plugin.
> Here is an extract of my WSDL file :
>
> <definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
> xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema
> "
> xmlns:ihe="urn:ihe:iti:xds-b:2007" xmlns:rs="urn:oasis:names:tc:ebxml-regrep:xsd:rs:3.0
> "
> targetNamespace="urn:ihe:iti:xds-b:2007" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/
> "
> xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl"
> name="DocumentRepository">
> ...
> <binding name="DocumentRepository_Binding"
> type="ihe:DocumentRepository_PortType">
> <soap12:binding style="document" transport="http://schemas.xmlsoap.org/soap/http
> "/>
I think transport here should be
transport="http://www.w3.org/2003/05/soap/bindings/HTTP/"
> <operation name="DocumentRepository_ProvideAndRegisterDocumentSet-
> b">
> <soap12:operation soapAction="urn:ihe:iti:2007:ProvideAndRegisterDocumentSet-b
> "/>
> <input>
> <soap12:body use="literal"/>
> </input>
> <output>
> <soap12:body use="literal"/>
> </output>
> </operation>
> <operation name="DocumentRepository_RetrieveDocumentSet">
> <soap12:operation soapAction="urn:ihe:iti:2007:RetrieveDocumentSet
> "/>
> <input>
> <soap12:body use="literal"/>
> </input>
> <output>
> <soap12:body use="literal"/>
> </output>
> </operation>
> </binding>
> ;;;
> <service name="DocumentRepository_Service">
> <port name="DocumentRepository_Port_Soap12"
> binding="ihe:DocumentRepository_Binding">
> <soap12:address location="https://servicelocation/DocumentRepository_Service
> "/>
> </port>
> </service>
>
>
> On the generated interface there is no annotation concerning the
> Binding :
>
> @WebService(targetNamespace = "urn:ihe:iti:xds-b:2007", name =
> "DocumentRepository_PortType")
> @XmlSeeAlso
> ({oasis.names.tc.ebxml_regrep.xsd.query._3.ObjectFactory.class,
> oasis.names.tc.ebxml_regrep.xsd.rs._3.ObjectFactory.class,
> ObjectFactory.class,
> oasis.names.tc.ebxml_regrep.xsd.lcm._3.ObjectFactory.class,
> oasis.names.tc.ebxml_regrep.xsd.rim._3.ObjectFactory.class})
> public interface DocumentRepositoryPortType {
> ...
>
>
> Then I use the generated classes to contact the Web Service and my
> client is not configured via Spring but build programmatically.
>
> The problem is that the generated SOAP message is a SOAP 1.1
> message...
> I am not able to find a way to configure my client to use a SOAP 1.2
> binding, and I tried to add the annotation
> @BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_MTOM_BINDING)
> on the generated interface (as someone suggested to me on this
> stackoverflow post :
You should add annotation like
@javax.xml.ws.BindingType(value = "http://www.w3.org/2003/05/soap/bindings/HTTP/
")
You can get more details from the wsdl_first_soap12 example shipped
with kit.
Freeman
> http://stackoverflow.com/questions/4248098/cxf-how-to-set-soapversion-on-cxf-port-without-spring)
> but it didn't change anything...
> Maybe it's because I configure my client without Spring and thus the
> default Soap 1.1 version is used...
> I really don't know...
>
>
> Do you guys have an idea ?
>
> Thanks in advance !
> J.
--
Freeman Fang
------------------------
FuseSource: http://fusesource.com
blog: http://freemanfang.blogspot.com
twitter: http://twitter.com/freemanfang
Apache Servicemix:http://servicemix.apache.org
Apache Cxf: http://cxf.apache.org
Apache Karaf: http://karaf.apache.org
Apache Felix: http://felix.apache.org