Christian put the sample client + servers I made up on GitHub: 
https://github.com/ctoestreich/soapClient

He's the author of the Grails plugin (cxf-client) that I'm using.

The demo provides 4 very simple SOAP servers (1 MIME attachments, 1 non-MIME 
attachments, 1 Holders but no attachments, 1 no holders).  I followed this 
guide to create them from handmade WSDLs: 
http://cxf.apache.org/docs/developing-a-service.html

It also has a Grails 1.3.7 client that uses the cxf-client plugin to connect to 
the 4 SOAP servers and make a simple request that shows the issue with the 
attachments.  I realize that's probably inconvenient for people on this list, 
but GRAILS is simple to install (it's just an unzip, an environment variable, 
and a path entry) and then you should be able to run the client using "grails 
run-app" from the "soapClient" folder.  (The 1.3.7 release can be downloaded 
here: 
http://dist.springframework.org.s3.amazonaws.com/release/GRAILS/grails-1.3.7.zip)


As for the logs:

I have log4j set to 'all' for 'org.apache.cxf' but I don't see anything in the 
logs along the lines of "could not find service..."

Dan, I'll send you a complete logging output offlist, maybe you'll be able to 
see something helpful in it.  I can provide any other debug information 
desired.  As I mentioned in an earlier post I injected a custom interceptor 
which I'm using to extract all sorts of information.

-Kyle

-----Original Message-----
From: Daniel Kulp [mailto:dk...@apache.org] 
Sent: Wednesday, March 21, 2012 2:52 PM
To: users@cxf.apache.org
Cc: Dickerson, Kyle B.
Subject: Re: SwAInInterceptor failing to process attachment - no SoapBodyInfo


Can you create a sample that demonstrates this?   Can you also test with the 
latest 2.5.3-SNAPSHOT?   Also, is there anything "interesting" in the logs?  

The symptom is very similar to 
https://issues.apache.org/jira/browse/CXF-4106 where attachments were 
getting "lost" due to the SoapBodyInfo and other mime things getting "lost".   
I'd like to know if something in the logs was saying "could not find 
service..." or other message that would indicate it was creating a new 
binding.   If so, 2.5.3-SNAPSHOT *MIGHT* already fix it.

Dan




On Wednesday, March 21, 2012 01:57:40 PM Dickerson, Kyle B. wrote:
> This topic was previously: "CXF as Client - Response Attachment -
> HolderInInterceptor IndexOutOfBoundsException"
> 
> But this subject better represents the true issue
> 
> 
> 
> SwAInInterceptor is failing to handle the attachment because SoapBodyInfo
> is null.
> 
> The relevant code from SwAInInterceptor.java is:
> 
> 
> 
> BindingOperationInfo bop = message.getExchange().getBindingOperationInfo()
> 
> if (bop.isUnwrapped()) {bop = bop.getWrappedOperation()}
> 
> boolean client = isRequestor(message) // client == true
> 
> BindingMessageInfo bmi = client ? bop.getOutput() : bop.getInput()
> 
> SoapBodyInfo sbi = bmi.getExtensor(SoapBodyInfo.class)
> 
> 
> 
> sbi is null at this point and a null check stops execution.  So
> messageContentsList is not populated with the attachment as it should be.
> 
> 
> 
> Using reflection to investigate the BindingMessageInfo object I learn:
> 
> 1. No delegate is in use.
> 
> 2. The only extensor available is "SOAPBody
> ({http://schemas.xmlsoap.org/wsdl/soap/}body): required=null
> use=literal".
> 
> 3. Don't know if this is relevant, if I ask the SOAPBody extensor its
> class I get "$Proxy42"
> 
> 
> 
> Since no extensor match is found for a SoapBodyInfo class we get a null
> value returned, so sbi is null.
> 
> 
> 
> Anyone have any thoughts on why SoapBodyInfo is coming back null?
> 
> 
> 
> Thanks,
> 
> Kyle
-- 
Daniel Kulp
dk...@apache.org - http://dankulp.com/blog
Talend Community Coder - http://coders.talend.com

Reply via email to