Friday, March 21, 2014

ConnetionException is indication of Partner version mismatch


The following error showed up and it took a while to figure out the cause.  These notes are for anyone that happens on the same problem.



com.sforce.ws.ConnectionException: Unexpected element. Parser was expecting element 'urn:partner.soap.sforce.com:precision' but found 'urn:partner.soap.sforce.com:permissionable'
    at com.sforce.ws.bind.TypeMapper.verifyTag(TypeMapper.java:386)
    at com.sforce.ws.bind.TypeMapper.verifyElement(TypeMapper.java:415)
    at com.sforce.soap.partner.Field.loadFields(Field.java:1148)
    at com.sforce.soap.partner.Field.load(Field.java:1036)
    at com.sforce.ws.bind.TypeMapper.readSingle(TypeMapper.java:628)
    at com.sforce.ws.bind.TypeMapper.readArray(TypeMapper.java:528)
    at com.sforce.ws.bind.TypeMapper.readObject(TypeMapper.java:506)
    at com.sforce.soap.partner.DescribeSObjectResult.loadFields(DescribeSObjectResult.java:771)
    at com.sforce.soap.partner.DescribeSObjectResult.load(DescribeSObjectResult.java:730)
    at com.sforce.ws.bind.TypeMapper.readSingle(TypeMapper.java:628)
    at com.sforce.ws.bind.TypeMapper.readObject(TypeMapper.java:504)
    at com.sforce.soap.partner.DescribeSObjectResponse_element.loadFields(DescribeSObjectResponse_element.java:68)
    at com.sforce.soap.partner.DescribeSObjectResponse_element.load(DescribeSObjectResponse_element.java:59)
    at com.sforce.ws.bind.TypeMapper.readSingle(TypeMapper.java:628)
    at com.sforce.ws.bind.TypeMapper.readObject(TypeMapper.java:504)
    at com.sforce.ws.transport.SoapConnection.bind(SoapConnection.java:170)
    at com.sforce.ws.transport.SoapConnection.receive(SoapConnection.java:144)
    at com.sforce.ws.transport.SoapConnection.send(SoapConnection.java:98)
    at com.sforce.soap.partner.PartnerConnection.describeSObject(PartnerConnection.java:1003)
    at cmh.web.tools.sfdc.SalesforcePartnerConnector.describeObject(SalesforcePartnerConnector.java:183)



During the updates the error message changed to:

com.sforce.ws.ConnectionException: Unexpected element. Parser was expecting element 'urn:partner.soap.sforce.com:compactLayoutable' but found 'urn:partner.soap.sforce.com:createable'

In both cases the solution was to sync up the version of Java, WSC jar file and partner file. Plus be careful to update the connection string.

The first error happened when one of the jars was compiled with Java6 and the second happened while using the wrong connection string.

In brief, rebuild your partner.api jar file to the latest. Get the latest wsc.jar file.  Update your connection string with the correct end point.   See my other post about rebuilding the partner api.

PROD_END_POINT = "https://login.salesforce.com/services/Soap/u/29.0";