OK.   This is actually a code generations problem:
http://issues.apache.org/jira/browse/CXF-1600

I created a salesforce.com developer account for myself today and played with the wsdl a bit. I downloaded their "jaxws 2.1" sample pack thing and modified their QuickStart client to work with CXF.

The first thing I did was:
http://issues.apache.org/jira/browse/CXF-1601
to allow me to not have to create a JAXB customization file.   :-)

Then I noticed the method signatures aren't correct. Most of those parameters on the methods are not supposed to be there. That's CXF-1600. I just fixed that and committed the changes. With that fixed, I can use the modified QuickStart to login, get the server timestamp, list the accounts, and update and account. Thus, I think it's now working OK.

In anycase, I'm deploying a new snapshot now. In another hour or so, it should be up. If you can give that a try, that would be great. The fix for 1600 WILL change all the method signatures to remove the "headers" that aren't applicable to that method. Thus, you will need to modify your client code a bit. However, it's probably a good thing.

Dan



On May 21, 2008, at 4:20 AM, Gaël LAZZARI wrote:

Hi Daniel, thanks for your help !
Yes, the error was very different. I actually use SOAP header in my outbound Messages. The NullPointerException was my fault, but when I fixed it, the
HolderInInterceptor throw a IndexOutOfBoundsException when calling the
MessageContentsList.getContentsList(message).get(MessagePartInfo part),
where the parts are got from the SOAP output message.

So I tried this morning with the "apache-cxf-2.1.1-20080520.211236-4"
snapshot, the same error has been thrown.

A Jira issue has already been posted (
https://issues.apache.org/jira/browse/CXF-1568), and I just saw that it was
assigned to you today !

I send you here my client code and the generated SOAP message which is ok,
maybe it can help you !
(I'm trying to consume Salesforce.com services through the partner.wsdl)

cxf generated code of one service's methods :

   @SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE)
   @WebResult(name = "createResponse", targetNamespace = "urn:
partner.soap.sforce.com", partName = "parameters")
   @WebMethod
   public CreateResponse create(
@WebParam(partName = "parameters", name = "create", targetNamespace
= "urn:partner.soap.sforce.com")
       Create parameters,
@WebParam(partName = "DebuggingInfo", mode = WebParam.Mode.INOUT, name = "DebuggingInfo", targetNamespace = "urn:partner.soap.sforce.com",
header = true)
       javax.xml.ws.Holder<DebuggingInfo> debuggingInfo,
@WebParam(partName = "DebuggingHeader", mode = WebParam.Mode.INOUT, name = "DebuggingHeader", targetNamespace = "urn:partner.soap.sforce.com ",
header = true)
       javax.xml.ws.Holder<DebuggingHeader> debuggingHeader,
@WebParam(partName = "MruHeader", mode = WebParam.Mode.INOUT, name = "MruHeader", targetNamespace = "urn:partner.soap.sforce.com", header = true)
       javax.xml.ws.Holder<MruHeader> mruHeader,
@WebParam(partName = "QueryOptions", mode = WebParam.Mode.INOUT, name = "QueryOptions", targetNamespace = "urn:partner.soap.sforce.com")
       javax.xml.ws.Holder<QueryOptions> queryOptions,
@WebParam(partName = "LocaleOptions", mode = WebParam.Mode.INOUT, name = "LocaleOptions", targetNamespace = "urn:partner.soap.sforce.com")
       javax.xml.ws.Holder<LocaleOptions> localeOptions,
@WebParam(partName = "EmailHeader", mode = WebParam.Mode.INOUT, name = "EmailHeader", targetNamespace = "urn:partner.soap.sforce.com", header =
true)
       javax.xml.ws.Holder<EmailHeader> emailHeader,
       @WebParam(partName = "UserTerritoryDeleteHeader", mode =
WebParam.Mode.INOUT, name = "UserTerritoryDeleteHeader", targetNamespace =
"urn:partner.soap.sforce.com")
       javax.xml.ws.Holder<UserTerritoryDeleteHeader>
userTerritoryDeleteHeader,
@WebParam(partName = "LoginScopeHeader", mode = WebParam.Mode.INOUT, name = "LoginScopeHeader", targetNamespace = "urn:partner.soap.sforce.com ")
       javax.xml.ws.Holder<LoginScopeHeader> loginScopeHeader,
       @WebParam(partName = "AssignmentRuleHeader", mode =
WebParam.Mode.INOUT, name = "AssignmentRuleHeader", targetNamespace = "urn:
partner.soap.sforce.com", header = true)
       javax.xml.ws.Holder<AssignmentRuleHeader> assignmentRuleHeader,
@WebParam(partName = "SessionHeader", mode = WebParam.Mode.INOUT, name = "SessionHeader", targetNamespace = "urn:partner.soap.sforce.com",
header = true)
       javax.xml.ws.Holder<SessionHeader> sessionHeader,
@WebParam(partName = "CallOptions", mode = WebParam.Mode.INOUT, name = "CallOptions", targetNamespace = "urn:partner.soap.sforce.com", header =
true)
       javax.xml.ws.Holder<CallOptions> callOptions
   ) throws UnexpectedErrorFault, InvalidIdFault, InvalidFieldFault,
InvalidSObjectFault;


The outbound message when calling this :

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";>
   <soap:Header>
       <SessionHeader xmlns:ns3="urn:fault.partner.soap.sforce.com"
           xmlns:ns2="urn:sobject.partner.soap.sforce.com"
           xmlns="urn:partner.soap.sforce.com">
           <sessionId>

460200D70000000IQeW! AQ0AQG9d9iqlIIAaw_R3H15rJHfrf_GMj12ETIp8f .BsCplX0KwaHrJLGoEFaAMeoy4y_PPppcX2uXItleMLbVJF24uof0MI
           </sessionId>
       </SessionHeader>
   </soap:Header>
   <soap:Body>
       <create xmlns="urn:partner.soap.sforce.com"
           xmlns:ns2="urn:sobject.partner.soap.sforce.com"
           xmlns:ns3="urn:fault.partner.soap.sforce.com">
           <sObjects>
               <ns2:Id
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance "
                   xsi:nil="true" />
               <ns2:type xmlns="urn:sobject.partner.soap.sforce.com">
                   Contact
               </ns2:type>
               <ns2:birthdate
                   xmlns="urn:sobject.partner.soap.sforce.com">
                   2008-05-142
               </ns2:birthdate>
               <ns2:firstName
                   xmlns="urn:sobject.partner.soap.sforce.com">
                   testConvert
               </ns2:firstName>
               <ns2:lastName
                   xmlns="urn:sobject.partner.soap.sforce.com">
                   testLastConvert
               </ns2:lastName>
           </sObjects>
       </create>
   </soap:Body>
</soap:Envelope>

The Salesforce.com server response :

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope
   xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
   xmlns="urn:partner.soap.sforce.com">
   <soapenv:Body>
       <createResponse>
           <result>
               <id>0037000000YgDckAAF</id>
               <success>true</success>
           </result>
       </createResponse>
   </soapenv:Body>
</soapenv:Envelope>

=> no problem, my Contact is create in Salesforce.com

But an IndexOutOfBoundsException is thrown (same stack as in je jira issue)
:

Interceptor has thrown exception, unwinding now
java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
   at java.util.ArrayList.RangeCheck(ArrayList.java:546)
   at java.util.ArrayList.get(ArrayList.java:321)
   at
org .apache.cxf.message.MessageContentsList.get(MessageContentsList.java: 79)
   at
org .apache .cxf .jaxws .interceptors .HolderInInterceptor.handleMessage(HolderInInterceptor.java:64)
   at
org .apache .cxf .phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java: 221) at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java: 429)
   at
org.apache.cxf.transport.http.HTTPConduit $WrappedOutputStream.handleResponse(HTTPConduit.java:1988)
   at
org.apache.cxf.transport.http.HTTPConduit $WrappedOutputStream.close(HTTPConduit.java:1824)
   at
org .apache .cxf .io .CacheAndWriteOutputStream.postClose(CacheAndWriteOutputStream.java: 47)
   at
org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java: 159)
   at
org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java: 66) at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:583)
   at
org.apache.cxf.interceptor.MessageSenderInterceptor $ MessageSenderEndingInterceptor .handleMessage(MessageSenderInterceptor.java:62)
   at
org .apache .cxf .phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java: 221)
   at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:276)
   at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:222)
at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
   at
org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java: 178)


TYIA  for your great work Daniel !

Gaël



2008/5/20, Daniel Kulp <[EMAIL PROTECTED]>:


This error is pretty different..... Does the message have headers in it?

I THINK I may have this fixed now. I'm going to deploy a new snapshot tonight. If you could retry with that snapshot tomorrow morning, that
would be great.


Dan




On May 18, 2008, at 1:51 PM, XeN0s wrote:


Hi,
I'm using cxf 2.1 and I have the same error although  I consume my
webservice well (I receive I soap message from the server that notify me
the
operation's success on the server side).

And the error I don't understand is :

18 mai 2008 19:49:45 org.apache.cxf.phase.PhaseInterceptorChain
doIntercept
INFO: Interceptor has thrown exception, unwinding now
java.lang.NullPointerException
      at

org .apache .cxf .jaxws .interceptors .HolderInInterceptor.handleMessage(HolderInInterceptor.java:64)
      at

org .apache .cxf .phase .PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221)
      at
org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:429)
      at

org.apache.cxf.transport.http.HTTPConduit $WrappedOutputStream.handleResponse(HTTPConduit.java:1988)
      at

org.apache.cxf.transport.http.HTTPConduit $WrappedOutputStream.close(HTTPConduit.java:1824)
      at

org .apache .cxf .io .CacheAndWriteOutputStream .postClose(CacheAndWriteOutputStream.java:47)
      at
org.apache.cxf.io.CachedOutputStream.close(CachedOutputStream.java: 159)
      at
org .apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:66)
      at
org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java: 583)
      at

org.apache.cxf.interceptor.MessageSenderInterceptor $ MessageSenderEndingInterceptor .handleMessage(MessageSenderInterceptor.java:62)
      at

org .apache .cxf .phase .PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:221) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java: 276) at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java: 222)
      at
org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:73)
      at
org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java: 177)
      at $Proxy42.create(Unknown Source)
at com.avs.sforce.connection.SFClient.create(SFClient.java: 165)
      at

com.avs.sforce.connection.SFClient$$FastClassByCGLIB$ $4e83e795.invoke(<generated>)
      at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:149)
      at

org.springframework.aop.framework.Cglib2AopProxy $CglibMethodInvocation.invokeJoinpoint(Cglib2AopProxy.java:694)
      at

org .springframework .aop .framework .ReflectiveMethodInvocation .proceed(ReflectiveMethodInvocation.java:149)
      at

org .springframework .aop .aspectj .MethodInvocationProceedingJoinPoint .proceed(MethodInvocationProceedingJoinPoint.java:77) at com.avs.sforce.connection.AspectRetry.retry(AspectRetry.java:40)
      at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      at

sun .reflect .NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
      at

sun .reflect .DelegatingMethodAccessorImpl .invoke(DelegatingMethodAccessorImpl.java:25)
      at java.lang.reflect.Method.invoke(Method.java:585)
      at

org .springframework .aop .aspectj .AbstractAspectJAdvice .invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:597)
      at

org .springframework .aop .aspectj .AbstractAspectJAdvice .invokeAdviceMethod(AbstractAspectJAdvice.java:583)
      at

org .springframework .aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:60)
      at

org .springframework .aop .framework .ReflectiveMethodInvocation .proceed(ReflectiveMethodInvocation.java:171)
      at

org .springframework .aop .interceptor .ExposeInvocationInterceptor .invoke(ExposeInvocationInterceptor.java:89)
      at

org .springframework .aop .framework .ReflectiveMethodInvocation .proceed(ReflectiveMethodInvocation.java:171)
      at

org.springframework.aop.framework.Cglib2AopProxy $DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:629)
      at

com.avs.sforce.connection.SFClient$$EnhancerByCGLIB$ $d81710b6.create(<generated>)
      at com.avs.test.TestConversion.main(TestConversion.java:32)
--
View this message in context:
http://www.nabble.com/Is-cxf-no-tcompatible-with-XML-beans-tp17271898p17305733.html
Sent from the cxf-user mailing list archive at Nabble.com.


---
Daniel Kulp
[EMAIL PROTECTED]
http://www.dankulp.com/blog






---
Daniel Kulp
[EMAIL PROTECTED]
http://www.dankulp.com/blog




Reply via email to