Client call to WSDL via SonicConnect

Posted by cmspsdn on 22-Jun-2011 01:35

i'm doing my first project using the sonic connect service under v8.01, but am having trouble when making the call.

Below is a extract of the container log. I can not figure out what i may have or not have done. For some reason the "Payload" does not contain the "SOAP"ed content.

[11/06/22 16:30:45] ID=dev_ESBCore (trace) Debug Service Interceptor called for Service 'dev.Run'
[11/06/22 16:30:45] ID=dev_ESBCore (trace) Debug Service Interceptor called for Process 'InvokeDispatchManifestWS' @ step 'DispatchManifest'
[11/06/22 16:30:45] ID=dev_ESBCore (trace) [IESSonicConnect] esbcamelBeanId = ManifestReceiverBeanService.ManifestReceiverBeanPort.dispatchManifest
[11/06/22 16:30:45] ID=dev_ESBCore (trace) [IESSonicConnect] XQMessage headers ...
[11/06/22 16:30:45] ID=dev_ESBCore (trace) [IESSonicConnect] JMS_SonicMQ_XQ.isMultipart = true
[11/06/22 16:30:45] ID=dev_ESBCore (trace) [IESSonicConnect] JMSType = null
[11/06/22 16:30:45] ID=dev_ESBCore (trace) [IESSonicConnect] JMSCorrelationID = null
[11/06/22 16:30:45] ID=dev_ESBCore (trace) [IESSonicConnect] JMSExpiration = 0
[11/06/22 16:30:45] ID=dev_ESBCore (trace) [IESSonicConnect] JMSMessageID = ID:ffffffffcbed081a:e3100b8:130B60B32C9
[11/06/22 16:30:45] ID=dev_ESBCore (trace) [IESSonicConnect] JMSRedelivered = false
[11/06/22 16:30:45] ID=dev_ESBCore (trace) [IESSonicConnect] JMSDeliveryMode = 1
[11/06/22 16:30:45] ID=dev_ESBCore (trace) [IESSonicConnect] JMSPriority = 4
[11/06/22 16:30:45] ID=dev_ESBCore (trace) [IESSonicConnect] JMSReplyTo = MgmtBroker::$ISYS.USERS.TemporaryQueues.Administrator.$TMPAPPID$24$$SESSION$423.*.*.13134790093649-873658342MgmtBroker
[11/06/22 16:30:45] ID=dev_ESBCore (trace) [IESSonicConnect] JMSTimestamp = 1308724245193
[11/06/22 16:30:45] ID=dev_ESBCore (trace) [IESSonicConnect] JMSDestination = IES-SonicConnect.Entry
[11/06/22 16:30:45] ID=dev_ESBCore (trace) [IESSonicConnect] JMS_SonicMQ_ExtendedType = x-sonicmq-multipart
[11/06/22 16:30:45] ID=dev_ESBCore (trace) [IESSonicConnect] XQMessage part 0
[11/06/22 16:30:45] ID=dev_ESBCore (trace) [IESSonicConnect]  Part header
[11/06/22 16:30:45] ID=dev_ESBCore (trace) [IESSonicConnect]   Content-ID = name
[11/06/22 16:30:45] ID=dev_ESBCore (trace) [IESSonicConnect]   Content-Type = text/xml
[11/06/22 16:30:45] ID=dev_ESBCore (trace) [IESSonicConnect]  ContentId = name
[11/06/22 16:30:45] ID=dev_ESBCore (trace) [IESSonicConnect]  ContentType = text/xml
[11/06/22 16:30:45] ID=dev_ESBCore (trace) [IESSonicConnect]  Content = <?xml version="1.0" encoding="UTF-8"?>
<PTManifestSonicStandard xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PTManifestSonicStandard.xsd">
<ttPTManifest>
  <ManifestNo>50001054</ManifestNo>
  <ShiftKey>0</ShiftKey>
  <LocationCode>0581</LocationCode>
  <ManifestDate>2011-07-12</ManifestDate>
  <ShiftCode>D</ShiftCode>
  <ProductOwner>5BPSTHA</ProductOwner>
</ttPTManifest>
</PTManifestSonicStandard>
[11/06/22 16:30:45] ID=dev_ESBCore (trace) [IESSonicConnect] Input parameter = `dispatchManifest` value = `<?xml version="1.0" encoding="UTF-8"?>
<PTManifestSonicStandard xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="PTManifestSonicStandard.xsd">
<ttPTManifest>
  <ManifestNo>50001054</ManifestNo>
  <ShiftKey>0</ShiftKey>
  <LocationCode>0581</LocationCode>
  <ManifestDate>2011-07-12</ManifestDate>
  <ShiftCode>D</ShiftCode>
  <ProductOwner>5BPSTHA</ProductOwner>
</ttPTManifest>
</PTManifestSonicStandard>`
[11/06/22 16:30:45] ID=dev_ESBCore (trace) [IESSonicConnect] Output parameter=`dispatchManifestResponse` value = `null`
[11/06/22 16:30:45] ID=dev_ESBCore (trace) [IESSonicConnect]  targetEndpoint = directsonicesb:ManifestReceiverBeanService.ManifestReceiverBeanPort.dispatchManifest?bindingStrategy=#InvokeBindingStrategy.ManifestReceiverBeanService.ManifestReceiverBeanPort.dispatchManifest&headerFilterStrategy=#DirectInvokeHeaderFilterStrategy.ManifestReceiverBeanService.ManifestReceiverBeanPort.dispatchManifest
22/06/2011 4:30:45 PM org.apache.cxf.interceptor.LoggingOutInterceptor$LoggingCallback onClose
INFO: Outbound Message
---------------------------
ID: 7
Address: http://iesmobdev01:8480/CootesFuelsInternal/ManifestReceiverBean
Encoding: UTF-8
Content-Type: text/xml
Headers: {JMS_SonicMQ_XQ.isMultipart=[true], JMSExpiration=[0], JMSMessageID=[ID:ffffffffcbed081a:e3100b8:130B60B32C9], JMSRedelivered=[false], JMSDeliveryMode=[1], SOAPAction=[""], JMSPriority=[4], JMSTimestamp=[1308724245193], JMSReplyTo=[MgmtBroker::$ISYS.USERS.TemporaryQueues.Administrator.$TMPAPPID$24$$SESSION$423.*.*.13134790093649-873658342MgmtBroker], JMSDestination=[IES-SonicConnect.Entry], JMS_SonicMQ_ExtendedType=[x-sonicmq-multipart], Accept=[*/*]}
Payload: <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body /></soap:Envelope>
--------------------------------------
22/06/2011 4:30:45 PM org.apache.cxf.interceptor.LoggingInInterceptor logging
INFO: Inbound Message
----------------------------
ID: 7
Response-Code: 500
Encoding: UTF-8
Content-Type: text/xml;charset=UTF-8
Headers: {content-type=[text/xml;charset=UTF-8], connection=[close], Date=[Wed, 22 Jun 2011 06:30:45 GMT], transfer-encoding=[chunked], X-Powered-By=[Servlet 2.4; JBoss-4.2.3.GA (build: SVNTag=JBoss_4_2_3_GA date=200807181417)/JBossWeb-2.0], Server=[Apache-Coyote/1.1]}
Payload: <env:Envelope xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'><env:Header></env:Header><env:Body><env:Fault xmlns:env='http://schemas.xmlsoap.org/soap/envelope/'><faultcode>env:Client</faultcode><faultstring>Endpoint {http://cmsws.cootesfuels.interdev.com.au/}ManifestReceiverBeanPort does not contain operation meta data for empty soap body</faultstring></env:Fault></env:Body></env:Envelope>
--------------------------------------

All Replies

Posted by wtam on 22-Jun-2011 09:04

I think you probably need to use request mapping to map input parameter for your WS client call.  If you are on the ESB Process view and double click on the SC service in the step box, you can click on the Request Mapping tab at the bottom which takes you to Request Mapping view.  You probably notice some parameter on the right has not been mapped.  Basically, SOAP message part (as in the WSDL) is your input parameter.  If input parameter is not mapped explicity, SC will look for ESB message part  for matching content-id when it populates SOAP message body.

Posted by cwiseman on 22-Jun-2011 09:35

Exactly what I was going to recommend.  Make sure to map the request and the response or you will make the client request correctly but your SonicConnect service will get empty responses when the server seemingly responds with the right payload.

Posted by cmspsdn on 22-Jun-2011 17:27

I have mapped "Part Index" 0 from the ESB message to the input parameter. See attached. I feel i'm missing something simple, but i just can't see it.

This thread is closed