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^^^&amp;1.2.3.4&amp;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^^^&amp;1.2.3.4&amp;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^^^&amp;1.2.3.4&amp;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