You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@cxf.apache.org by Rahul Somasunderam <rs...@certifydatasystems.com> on 2013/12/02 23:55:05 UTC
Decoupled Endpoint: Setting ReplyTo header
Hi,
I'm trying to set the ReplyTo header in my soap request. This is my code. It doesn't seem to set the header correctly.
@Grapes([
@Grab(group = 'com.github.rahulsom', module = 'ihe-iti', version = '0.3'),
@Grab(group = 'org.apache.cxf', module = 'cxf-rt-ws-addr', version = '2.6.7'),
])
import ihe.iti.xds_b._2007.RespondingGatewayQueryService
import oasis.names.tc.ebxml_regrep.xsd.query._3.AdhocQueryRequest
import oasis.names.tc.ebxml_regrep.xsd.query._3.ResponseOptionType
import oasis.names.tc.ebxml_regrep.xsd.rim._3.AdhocQueryType
import oasis.names.tc.ebxml_regrep.xsd.rim._3.SlotType1
import oasis.names.tc.ebxml_regrep.xsd.rim._3.ValueListType
import org.apache.cxf.ws.addressing.WSAContextUtils
import javax.xml.ws.BindingProvider
import javax.xml.ws.soap.AddressingFeature
RespondingGatewayQueryService theService = new RespondingGatewayQueryService(new URL('http://localhost:8080/healthdock/alpine/xca-r-query?wsdl'))
def thePort = theService.getRespondingGatewayQueryPortSoap12(new AddressingFeature(true, true))
BindingProvider bp = thePort
bp.requestContext[BindingProvider.ENDPOINT_ADDRESS_PROPERTY] = 'http://localhost:8080/healthdock/alpine/xca-r-query'
bp.requestContext[WSAContextUtils.REPLYTO_PROPERTY] = 'http://localhost:9090/decoupled_endpoint'
def query = new AdhocQueryRequest()
.withAdhocQuery(new AdhocQueryType()
.withId('123')
.withSlot(
new SlotType1(name: '$XDSDocumentEntryPatientId', valueList: new ValueListType(value: ['123^^^&1.2.3.4&ISO'])),
new SlotType1(
name: '$XDSDocumentEntryStatus',
valueList: new ValueListType(value: [
'urn:oasis:names:tc:ebxml-regrep:StatusType:Approved',
]))
)
)
.withResponseOption(new ResponseOptionType()
.withReturnType('LeafClass')
.withReturnComposedObjects(true)
)
thePort.respondingGatewayCrossGatewayQuery(query)
This is what I receive at the server
ID: 7
Address: http://localhost:8080/healthdock/services/receivingGatewayQuery
Encoding: UTF-8
Http-Method: POST
Content-Type: application/soap+xml; charset=utf-8;action="urn:ihe:iti:2007:CrossGatewayQuery"
Headers: {Accept=[application/soap+xml, multipart/related], connection=[keep-alive], Content-Length=[1440], content-type=[application/soap+xml; charset=utf-8;action="urn:ihe:iti:2007:CrossGatewayQuery"], host=[localhost:8080], user-agent=[JAX-WS RI 2.2.4-b01]}
Payload: <?xml version='1.0' encoding='UTF-8'?><S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope"><S:Header><To xmlns="http://www.w3.org/2005/08/addressing">http://localhost:8080/healthdock/alpine/xca-r-query</To><Action xmlns="http://www.w3.org/2005/08/addressing" xmlns:S="http://www.w3.org/2003/05/soap-envelope" S:mustUnderstand="true">urn:ihe:iti:2007:CrossGatewayQuery</Action><ReplyTo xmlns="http://www.w3.org/2005/08/addressing">
<Address>http://www.w3.org/2005/08/addressing/anonymous</Address>
</ReplyTo><MessageID xmlns="http://www.w3.org/2005/08/addressing">uuid:cd66b8bb-ce01-4ec0-98ff-fa03c368619a</MessageID></S:Header><S:Body><ns6:AdhocQueryRequest xmlns:ns2="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0" xmlns:ns3="urn:oasis:names:tc:ebxml-regrep:xsd:rs:3.0" xmlns:ns4="urn:oasis:names:tc:ebxml-regrep:xsd:lcm:3.0" xmlns:ns5="urn:ihe:iti:xds-b:2007" xmlns:ns6="urn:oasis:names:tc:ebxml-regrep:xsd:query:3.0" xmlns:ns7="urn:oasis:names:tc:ebxml-regrep:xsd:cms:3.0"><ns6:ResponseOption returnType="LeafClass" returnComposedObjects="true"/><ns2:AdhocQuery id="123"><ns2:Slot name="$XDSDocumentEntryPatientId"><ns2:ValueList><ns2:Value>123^^^&1.2.3.4&ISO</ns2:Value></ns2:ValueList></ns2:Slot><ns2:Slot name="$XDSDocumentEntryStatus"><ns2:ValueList><ns2:Value>urn:oasis:names:tc:ebxml-regrep:StatusType:Approved</ns2:Value></ns2:ValueList></ns2:Slot></ns2:AdhocQuery></ns6:AdhocQueryRequest></S:Body></S:Envelope>
Any hints as to what I'm doing wrong? Oh, and my code is in groovy.
R,
rahul
Re: Decoupled Endpoint: Setting ReplyTo header
Posted by Daniel Kulp <dk...@apache.org>.
As a point of reference for folks that may come across this in the future:
This is because the user is not using CXF. They are using the JAX-WS implementation built into the JDK. Those annotations will not work if CXF is picked up instead.
Dan
On Dec 2, 2013, at 7:19 PM, Rahul Somasunderam <rs...@certifydatasystems.com> wrote:
> Solved. I just needed to use the OneWayFeature
>
> import com.sun.xml.internal.ws.api.addressing.AddressingVersion
> import com.sun.xml.internal.ws.api.addressing.OneWayFeature
> import com.sun.xml.internal.ws.api.addressing.WSEndpointReference
> @Grapes([
> @Grab(group = 'com.github.rahulsom', module = 'ihe-iti', version = '0.3'),
> @Grab(group = 'org.apache.cxf', module = 'cxf-rt-ws-addr', version = '2.6.7'),
> ])
>
> import ihe.iti.xds_b._2007.RespondingGatewayQueryService
> import oasis.names.tc.ebxml_regrep.xsd.query._3.AdhocQueryRequest
> import oasis.names.tc.ebxml_regrep.xsd.query._3.ResponseOptionType
> import oasis.names.tc.ebxml_regrep.xsd.rim._3.AdhocQueryType
> import oasis.names.tc.ebxml_regrep.xsd.rim._3.SlotType1
> import oasis.names.tc.ebxml_regrep.xsd.rim._3.ValueListType
>
> import javax.xml.ws.BindingProvider
> import javax.xml.ws.soap.AddressingFeature
>
> RespondingGatewayQueryService theService = new RespondingGatewayQueryService(new URL('http://localhost:8080/healthdock/alpine/xca-r-query?wsdl'))
>
> def thePort = theService.getRespondingGatewayQueryPortSoap12(
> new AddressingFeature(true, true),
> new OneWayFeature(
> true,
> new WSEndpointReference('http://localhost:9000/dec', AddressingVersion.W3C),
> new WSEndpointReference('urn:oid:1.2.3.4', AddressingVersion.W3C),
> 'something'
> )
> )
> def bp = thePort as BindingProvider
>
> bp.requestContext[BindingProvider.ENDPOINT_ADDRESS_PROPERTY] = 'http://localhost:8080/healthdock/alpine/xca-r-query'
>
> def query =
> new AdhocQueryRequest().withAdhocQuery(
> new AdhocQueryType()
> .withId('urn:uuid:14d4debf-8f97-4251-9a74-a90016b0af0d')
> .withSlot(
> new SlotType1()
> .withName('$XDSDocumentEntryPatientId')
> .withValueList(new ValueListType().withValue('123^^^&1.2.3.4&ISO')),
> new SlotType1()
> .withName('$XDSDocumentEntryStatus')
> .withValueList(new ValueListType().withValue('urn:oasis:names:tc:ebxml-regrep:StatusType:Approved'))
> )
> ).withResponseOption(
> new ResponseOptionType()
> .withReturnType('LeafClass')
> .withReturnComposedObjects(true)
> )
>
> thePort.respondingGatewayCrossGatewayQuery(query)
>
> On Dec 2, 2013, at 2:55 PM, Rahul Somasunderam <rs...@certifydatasystems.com> wrote:
>
>> Hi,
>>
>> I'm trying to set the ReplyTo header in my soap request. This is my code. It doesn't seem to set the header correctly.
>>
>> @Grapes([
>> @Grab(group = 'com.github.rahulsom', module = 'ihe-iti', version = '0.3'),
>> @Grab(group = 'org.apache.cxf', module = 'cxf-rt-ws-addr', version = '2.6.7'),
>> ])
>>
>> import ihe.iti.xds_b._2007.RespondingGatewayQueryService
>> import oasis.names.tc.ebxml_regrep.xsd.query._3.AdhocQueryRequest
>> import oasis.names.tc.ebxml_regrep.xsd.query._3.ResponseOptionType
>> import oasis.names.tc.ebxml_regrep.xsd.rim._3.AdhocQueryType
>> import oasis.names.tc.ebxml_regrep.xsd.rim._3.SlotType1
>> import oasis.names.tc.ebxml_regrep.xsd.rim._3.ValueListType
>> import org.apache.cxf.ws.addressing.WSAContextUtils
>>
>> import javax.xml.ws.BindingProvider
>> import javax.xml.ws.soap.AddressingFeature
>>
>> RespondingGatewayQueryService theService = new RespondingGatewayQueryService(new URL('http://localhost:8080/healthdock/alpine/xca-r-query?wsdl'))
>>
>> def thePort = theService.getRespondingGatewayQueryPortSoap12(new AddressingFeature(true, true))
>> BindingProvider bp = thePort
>> bp.requestContext[BindingProvider.ENDPOINT_ADDRESS_PROPERTY] = 'http://localhost:8080/healthdock/alpine/xca-r-query'
>> bp.requestContext[WSAContextUtils.REPLYTO_PROPERTY] = 'http://localhost:9090/decoupled_endpoint'
>>
>> def query = new AdhocQueryRequest()
>> .withAdhocQuery(new AdhocQueryType()
>> .withId('123')
>> .withSlot(
>> new SlotType1(name: '$XDSDocumentEntryPatientId', valueList: new ValueListType(value: ['123^^^&1.2.3.4&ISO'])),
>> new SlotType1(
>> name: '$XDSDocumentEntryStatus',
>> valueList: new ValueListType(value: [
>> 'urn:oasis:names:tc:ebxml-regrep:StatusType:Approved',
>> ]))
>> )
>>
>> )
>> .withResponseOption(new ResponseOptionType()
>> .withReturnType('LeafClass')
>> .withReturnComposedObjects(true)
>> )
>>
>> thePort.respondingGatewayCrossGatewayQuery(query)
>> This is what I receive at the server
>>
>> ID: 7
>> Address: http://localhost:8080/healthdock/services/receivingGatewayQuery
>> Encoding: UTF-8
>> Http-Method: POST
>> Content-Type: application/soap+xml; charset=utf-8;action="urn:ihe:iti:2007:CrossGatewayQuery"
>> Headers: {Accept=[application/soap+xml, multipart/related], connection=[keep-alive], Content-Length=[1440], content-type=[application/soap+xml; charset=utf-8;action="urn:ihe:iti:2007:CrossGatewayQuery"], host=[localhost:8080], user-agent=[JAX-WS RI 2.2.4-b01]}
>> Payload: <?xml version='1.0' encoding='UTF-8'?><S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope"><S:Header><To xmlns="http://www.w3.org/2005/08/addressing">http://localhost:8080/healthdock/alpine/xca-r-query</To><Action xmlns="http://www.w3.org/2005/08/addressing" xmlns:S="http://www.w3.org/2003/05/soap-envelope" S:mustUnderstand="true">urn:ihe:iti:2007:CrossGatewayQuery</Action><ReplyTo xmlns="http://www.w3.org/2005/08/addressing">
>> <Address>http://www.w3.org/2005/08/addressing/anonymous</Address>
>> </ReplyTo><MessageID xmlns="http://www.w3.org/2005/08/addressing">uuid:cd66b8bb-ce01-4ec0-98ff-fa03c368619a</MessageID></S:Header><S:Body><ns6:AdhocQueryRequest xmlns:ns2="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0" xmlns:ns3="urn:oasis:names:tc:ebxml-regrep:xsd:rs:3.0" xmlns:ns4="urn:oasis:names:tc:ebxml-regrep:xsd:lcm:3.0" xmlns:ns5="urn:ihe:iti:xds-b:2007" xmlns:ns6="urn:oasis:names:tc:ebxml-regrep:xsd:query:3.0" xmlns:ns7="urn:oasis:names:tc:ebxml-regrep:xsd:cms:3.0"><ns6:ResponseOption returnType="LeafClass" returnComposedObjects="true"/><ns2:AdhocQuery id="123"><ns2:Slot name="$XDSDocumentEntryPatientId"><ns2:ValueList><ns2:Value>123^^^&1.2.3.4&ISO</ns2:Value></ns2:ValueList></ns2:Slot><ns2:Slot name="$XDSDocumentEntryStatus"><ns2:ValueList><ns2:Value>urn:oasis:names:tc:ebxml-regrep:StatusType:Approved</ns2:Value></ns2:ValueList></ns2:Slot></ns2:AdhocQuery></ns6:AdhocQueryRequest></S:Body></S:Envelope>
>> Any hints as to what I'm doing wrong? Oh, and my code is in groovy.
>>
>> R,
>>
>> rahul
>
--
Daniel Kulp
dkulp@apache.org - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com
Re: Decoupled Endpoint: Setting ReplyTo header
Posted by Rahul Somasunderam <rs...@certifydatasystems.com>.
Solved. I just needed to use the OneWayFeature
import com.sun.xml.internal.ws.api.addressing.AddressingVersion
import com.sun.xml.internal.ws.api.addressing.OneWayFeature
import com.sun.xml.internal.ws.api.addressing.WSEndpointReference
@Grapes([
@Grab(group = 'com.github.rahulsom', module = 'ihe-iti', version = '0.3'),
@Grab(group = 'org.apache.cxf', module = 'cxf-rt-ws-addr', version = '2.6.7'),
])
import ihe.iti.xds_b._2007.RespondingGatewayQueryService
import oasis.names.tc.ebxml_regrep.xsd.query._3.AdhocQueryRequest
import oasis.names.tc.ebxml_regrep.xsd.query._3.ResponseOptionType
import oasis.names.tc.ebxml_regrep.xsd.rim._3.AdhocQueryType
import oasis.names.tc.ebxml_regrep.xsd.rim._3.SlotType1
import oasis.names.tc.ebxml_regrep.xsd.rim._3.ValueListType
import javax.xml.ws.BindingProvider
import javax.xml.ws.soap.AddressingFeature
RespondingGatewayQueryService theService = new RespondingGatewayQueryService(new URL('http://localhost:8080/healthdock/alpine/xca-r-query?wsdl'))
def thePort = theService.getRespondingGatewayQueryPortSoap12(
new AddressingFeature(true, true),
new OneWayFeature(
true,
new WSEndpointReference('http://localhost:9000/dec', AddressingVersion.W3C),
new WSEndpointReference('urn:oid:1.2.3.4', AddressingVersion.W3C),
'something'
)
)
def bp = thePort as BindingProvider
bp.requestContext[BindingProvider.ENDPOINT_ADDRESS_PROPERTY] = 'http://localhost:8080/healthdock/alpine/xca-r-query'
def query =
new AdhocQueryRequest().withAdhocQuery(
new AdhocQueryType()
.withId('urn:uuid:14d4debf-8f97-4251-9a74-a90016b0af0d')
.withSlot(
new SlotType1()
.withName('$XDSDocumentEntryPatientId')
.withValueList(new ValueListType().withValue('123^^^&1.2.3.4&ISO')),
new SlotType1()
.withName('$XDSDocumentEntryStatus')
.withValueList(new ValueListType().withValue('urn:oasis:names:tc:ebxml-regrep:StatusType:Approved'))
)
).withResponseOption(
new ResponseOptionType()
.withReturnType('LeafClass')
.withReturnComposedObjects(true)
)
thePort.respondingGatewayCrossGatewayQuery(query)
On Dec 2, 2013, at 2:55 PM, Rahul Somasunderam <rs...@certifydatasystems.com> wrote:
> Hi,
>
> I'm trying to set the ReplyTo header in my soap request. This is my code. It doesn't seem to set the header correctly.
>
> @Grapes([
> @Grab(group = 'com.github.rahulsom', module = 'ihe-iti', version = '0.3'),
> @Grab(group = 'org.apache.cxf', module = 'cxf-rt-ws-addr', version = '2.6.7'),
> ])
>
> import ihe.iti.xds_b._2007.RespondingGatewayQueryService
> import oasis.names.tc.ebxml_regrep.xsd.query._3.AdhocQueryRequest
> import oasis.names.tc.ebxml_regrep.xsd.query._3.ResponseOptionType
> import oasis.names.tc.ebxml_regrep.xsd.rim._3.AdhocQueryType
> import oasis.names.tc.ebxml_regrep.xsd.rim._3.SlotType1
> import oasis.names.tc.ebxml_regrep.xsd.rim._3.ValueListType
> import org.apache.cxf.ws.addressing.WSAContextUtils
>
> import javax.xml.ws.BindingProvider
> import javax.xml.ws.soap.AddressingFeature
>
> RespondingGatewayQueryService theService = new RespondingGatewayQueryService(new URL('http://localhost:8080/healthdock/alpine/xca-r-query?wsdl'))
>
> def thePort = theService.getRespondingGatewayQueryPortSoap12(new AddressingFeature(true, true))
> BindingProvider bp = thePort
> bp.requestContext[BindingProvider.ENDPOINT_ADDRESS_PROPERTY] = 'http://localhost:8080/healthdock/alpine/xca-r-query'
> bp.requestContext[WSAContextUtils.REPLYTO_PROPERTY] = 'http://localhost:9090/decoupled_endpoint'
>
> def query = new AdhocQueryRequest()
> .withAdhocQuery(new AdhocQueryType()
> .withId('123')
> .withSlot(
> new SlotType1(name: '$XDSDocumentEntryPatientId', valueList: new ValueListType(value: ['123^^^&1.2.3.4&ISO'])),
> new SlotType1(
> name: '$XDSDocumentEntryStatus',
> valueList: new ValueListType(value: [
> 'urn:oasis:names:tc:ebxml-regrep:StatusType:Approved',
> ]))
> )
>
> )
> .withResponseOption(new ResponseOptionType()
> .withReturnType('LeafClass')
> .withReturnComposedObjects(true)
> )
>
> thePort.respondingGatewayCrossGatewayQuery(query)
> This is what I receive at the server
>
> ID: 7
> Address: http://localhost:8080/healthdock/services/receivingGatewayQuery
> Encoding: UTF-8
> Http-Method: POST
> Content-Type: application/soap+xml; charset=utf-8;action="urn:ihe:iti:2007:CrossGatewayQuery"
> Headers: {Accept=[application/soap+xml, multipart/related], connection=[keep-alive], Content-Length=[1440], content-type=[application/soap+xml; charset=utf-8;action="urn:ihe:iti:2007:CrossGatewayQuery"], host=[localhost:8080], user-agent=[JAX-WS RI 2.2.4-b01]}
> Payload: <?xml version='1.0' encoding='UTF-8'?><S:Envelope xmlns:S="http://www.w3.org/2003/05/soap-envelope"><S:Header><To xmlns="http://www.w3.org/2005/08/addressing">http://localhost:8080/healthdock/alpine/xca-r-query</To><Action xmlns="http://www.w3.org/2005/08/addressing" xmlns:S="http://www.w3.org/2003/05/soap-envelope" S:mustUnderstand="true">urn:ihe:iti:2007:CrossGatewayQuery</Action><ReplyTo xmlns="http://www.w3.org/2005/08/addressing">
> <Address>http://www.w3.org/2005/08/addressing/anonymous</Address>
> </ReplyTo><MessageID xmlns="http://www.w3.org/2005/08/addressing">uuid:cd66b8bb-ce01-4ec0-98ff-fa03c368619a</MessageID></S:Header><S:Body><ns6:AdhocQueryRequest xmlns:ns2="urn:oasis:names:tc:ebxml-regrep:xsd:rim:3.0" xmlns:ns3="urn:oasis:names:tc:ebxml-regrep:xsd:rs:3.0" xmlns:ns4="urn:oasis:names:tc:ebxml-regrep:xsd:lcm:3.0" xmlns:ns5="urn:ihe:iti:xds-b:2007" xmlns:ns6="urn:oasis:names:tc:ebxml-regrep:xsd:query:3.0" xmlns:ns7="urn:oasis:names:tc:ebxml-regrep:xsd:cms:3.0"><ns6:ResponseOption returnType="LeafClass" returnComposedObjects="true"/><ns2:AdhocQuery id="123"><ns2:Slot name="$XDSDocumentEntryPatientId"><ns2:ValueList><ns2:Value>123^^^&1.2.3.4&ISO</ns2:Value></ns2:ValueList></ns2:Slot><ns2:Slot name="$XDSDocumentEntryStatus"><ns2:ValueList><ns2:Value>urn:oasis:names:tc:ebxml-regrep:StatusType:Approved</ns2:Value></ns2:ValueList></ns2:Slot></ns2:AdhocQuery></ns6:AdhocQueryRequest></S:Body></S:Envelope>
> Any hints as to what I'm doing wrong? Oh, and my code is in groovy.
>
> R,
>
> rahul