Thanks Dan. Revised fix accordingly. ------------- Freeman(Yue) Fang
Red Hat, Inc. FuseSource is now part of Red Hat Web: http://fusesource.com | http://www.redhat.com/ Twitter: freemanfang Blog: http://freemanfang.blogspot.com http://blog.sina.com.cn/u/1473905042 weibo: http://weibo.com/u/1473905042 On 2012-11-13, at 下午10:41, Daniel Kulp wrote: > > On Nov 13, 2012, at 8:59 AM, Freeman Fang <freeman.f...@gmail.com> wrote: > >> Thanks Dan. >> >> But this check is for client side. > > Ah… confused by the commit message. > > In that case, the AsyncHandler shouldn't even be added to the > MessageContentsList at the very beginning in the JaxWsClientProxy.invokeAsync > method. It likely should pull the handler completely off the param list and > not pass it as its not really something that should ever be marshaled, etc... > > Dan > > > >> To avoid introducing new dependency, how about we just get obj interface >> name and compare it with string "javax.xml.ws.AsyncHandler"? >> >> Freeman >> ------------- >> Freeman(Yue) Fang >> >> Red Hat, Inc. >> FuseSource is now part of Red Hat >> Web: http://fusesource.com | http://www.redhat.com/ >> Twitter: freemanfang >> Blog: http://freemanfang.blogspot.com >> http://blog.sina.com.cn/u/1473905042 >> weibo: http://weibo.com/u/1473905042 >> >> On 2012-11-13, at 下午8:12, Daniel Kulp wrote: >> >>> >>> Umm… this puts a dependency on the jaxws API from the soap binding which >>> would be a new dep. That's "OK" for trunk since the JAX-WS API's are >>> built in the JDK, but that wouldn't be ok to be merged back. >>> >>> Ideally, this should be done somehow in the JAXWS layer. Most likely, >>> after the invoke completes, the JAXWS invoker should remove the callback >>> off of the param list. >>> >>> Dan >>> >>> >>> On Nov 13, 2012, at 2:50 AM, ff...@apache.org wrote: >>> >>>> Author: ffang >>>> Date: Tue Nov 13 07:50:14 2012 >>>> New Revision: 1408627 >>>> >>>> URL: http://svn.apache.org/viewvc?rev=1408627&view=rev >>>> Log: >>>> [CXF-4623]Marshalling Error during asynchronous service invocation when >>>> adding a soap header using a SOAPHandler >>>> >>>> Modified: >>>> cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/SoapOutInterceptor.java >>>> >>>> Modified: >>>> cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/SoapOutInterceptor.java >>>> URL: >>>> http://svn.apache.org/viewvc/cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/SoapOutInterceptor.java?rev=1408627&r1=1408626&r2=1408627&view=diff >>>> ============================================================================== >>>> --- >>>> cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/SoapOutInterceptor.java >>>> (original) >>>> +++ >>>> cxf/trunk/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/SoapOutInterceptor.java >>>> Tue Nov 13 07:50:14 2012 >>>> @@ -27,6 +27,7 @@ import java.util.ResourceBundle; >>>> >>>> import javax.xml.stream.XMLStreamException; >>>> import javax.xml.stream.XMLStreamWriter; >>>> +import javax.xml.ws.AsyncHandler; >>>> >>>> import org.w3c.dom.Element; >>>> >>>> @@ -212,13 +213,20 @@ public class SoapOutInterceptor extends >>>> if (headers == null) { >>>> return endedHeader; >>>> } >>>> + >>>> >>>> for (SoapHeaderInfo header : headers) { >>>> MessagePartInfo part = header.getPart(); >>>> if (wrappedBmi != bmi) { >>>> part = >>>> wrappedBmi.getMessageInfo().addMessagePart(part.getName()); >>>> } >>>> - if (part.getIndex() >= objs.size()) { >>>> + int paraLength = objs.size(); >>>> + if (objs.get(paraLength - 1) instanceof AsyncHandler) { >>>> + //when use asyn handler in bare mode the last >>>> parameter is AsyncHandler >>>> + //which shouldn't count in as parameter length >>>> + paraLength = paraLength - 1; >>>> + } >>>> + if (part.getIndex() >= paraLength) { >>>> // The optional out of band header is not a part of >>>> parameters of the method >>>> continue; >>>> } >>>> >>>> >>> >>> -- >>> Daniel Kulp >>> dk...@apache.org - http://dankulp.com/blog >>> Talend Community Coder - http://coders.talend.com >>> >> > > -- > Daniel Kulp > dk...@apache.org - http://dankulp.com/blog > Talend Community Coder - http://coders.talend.com >