[Ctk-developers] CTK based Hosted App fails when launched from Non-CTK Host

Anthony Dass antdass at gmail.com
Tue Sep 6 18:22:53 EDT 2011


-------------I'm re-sending this email since I got it bounced back.


Hello,



We've tried adapting one of our DICOM application into a CTK Based Hosted
App. It works well when tried with the ctkhost - we could launch the app,
load the DICOM data and get through different states as well.

However when tried launching the same app with different non-ctk based host,
 it launches our app but fails to load any data. This non-ctk based host
seems to be written using the WCF as per specification in  DICOM 118.



On investigating, we noticed that the initial ‘IDLE’ message sent by the App
upon launch is not getting processed by the Non-CTK based host.



When traced the SOAP communication, we found out that the messages from the
plug-in are getting to the host, but then they are not processed by WCF
because of some WSDL contacts mismatch. Thus the host does not receive any
messages. Here’s the log message:



<Message>*The message with Action '' cannot be processed at the receiver,
due to a ContractFilter mismatch at the EndpointDispatcher. This may be
because of either a contract mismatch (mismatched Actions between sender and
receiver) or a binding/security mismatch between the sender and the
receiver.  Check that sender and receiver have the same contract and the
same binding (including security requirements, e.g. Message, Transport,
None).*</Message>



When debugging the WCF processing of the message we get the deserialization
error:

"The ':' character, hexadecimal value 0x3A, cannot be included in a name.
Line 4, position 11."



Here’s the SOAP message braced between the CTK-plugin and Non-CTK based
Host:



<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/
" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:xsd="http://www.w3.org/1999/XMLSchema">

         <SOAP-ENV:Body xmlns:SOAP-ENV="
http://schemas.xmlsoap.org/soap/envelope/">

                 <notifyStateChanged xmlns="http://wg23.dicom.nema.org/">

                          <newState :type="xsd:string">IDLE</newState>

                 </notifyStateChanged>

         </SOAP-ENV:Body>

</SOAP-ENV:Envelope>



We can see the “:type” item in the newState element that’s causing the error
in WCF. Also, per DICOM supplement 118 it should be called “state”, not
“newState”.



Here’s the example of the SOAP message generated by Non-CTK based HostedApp:

<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">

         <s:Body>

                 <NotifyStateChanged
xmlns="http://dicom.nema.org/PS3.19/HostService-20100825">

                          <state>IDLE</state>

                 </NotifyStateChanged>

         </s:Body>

</s:Envelope>



Next, we tried changing “newState” to “state” but again it fails when tried
with  the  non-ctk based host and producing the same error.



*2011-09-06 17:17:52,234 New incoming connection *

*2011-09-06 17:17:59,469 "<SOAP-ENV:Envelope xmlns:SOAP-ENV="
http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="
http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="
http://www.w3.org/1999/XMLSchema">*

*2011-09-06 17:17:59,469 <SOAP-ENV:Body xmlns:SOAP-ENV="
http://schemas.xmlsoap.org/soap/envelope/">*

*2011-09-06 17:17:59,485 <notifyStateChanged xmlns="
http://wg23.dicom.nema.org/">*

*2011-09-06 17:17:59,500 <state :type="xsd:string">IDLE</state>*

*2011-09-06 17:17:59,500 </notifyStateChanged>*

*2011-09-06 17:17:59,516 </SOAP-ENV:Body>*

*2011-09-06 17:17:59,516 </SOAP-ENV:Envelope>*

*2011-09-06 17:17:59,531 " *

*2011-09-06 17:17:59,547 Submitted request  "notifyStateChanged" *

*2011-09-06 17:17:59,547 New incoming connection *

*2011-09-06 17:17:59,563 New incoming connection *

*2011-09-06 17:17:59,563 Response:  "<SOAP-ENV:Envelope xmlns:SOAP-ENV="
http://schemas.xmlsoap.org/soap/envelope/" SOAP-ENV:encodingStyle="
http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="
http://www.w3.org/1999/XMLSchema">*

*2011-09-06 17:17:59,578 <SOAP-ENV:Body xmlns:SOAP-ENV="
http://schemas.xmlsoap.org/soap/envelope/">*

*2011-09-06 17:17:59,594 <SOAP-ENV:Fault xmlns:SOAP-ENV="
http://schemas.xmlsoap.org/soap/envelope/">*

*2011-09-06 17:17:59,594 <faultcode xsi:type="xsd:string" xmlns:xsi="
http://www.w3.org/1999/XMLSchema-instance">a:ActionNotSupported</faultcode>*

*2011-09-06 17:17:59,609 <faultstring xsi:type="xsd:string" xmlns:xsi="
http://www.w3.org/1999/XMLSchema-instance">The message with Action '' cannot
be processed at the receiver, due to a ContractFilter mismatch at the
EndpointDispatcher. This may be because of either a contract mismatch
(mismatched Actions between sender and receiver) or a binding/security
mismatch between the sender and the receiver.  Check that sender and
receiver have the same contract and the same binding (including security
requirements, e.g. Message, Transport, None).</faultstring>*

*2011-09-06 17:17:59,625 </SOAP-ENV:Fault>*

*2011-09-06 17:17:59,625 </SOAP-ENV:Body>*

*2011-09-06 17:17:59,641 </SOAP-ENV:Envelope>*



I even tried replacing the WSDL files with the one provided by Non-CTK based
 host, but still it doesn’t  seem to work.



When looked at the code, I noticed a comment in the CTK code (below methods)
 “spec would be "state", java has "newState" FIX JAVA/STANDARD”. Could  this
be something we need to look for? If so may I know what would be the change
in Java side.

*void ctkDicomHostService::notifyStateChanged(ctkDicomAppHosting::State
state)*

*void ctkHostSoapMessageProcessor::processNotifyStateChanged(  const
QtSoapMessage &message, QtSoapMessage * /* reply */) const*



Could you please advice?



Thank you!

~Anthony
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://public.kitware.com/pipermail/ctk-developers/attachments/20110906/046392fa/attachment.html>


More information about the Ctk-developers mailing list