• Curtis Paris
  • NEWBIE
  • 5 Points
  • Member since 2004

  • Chatter
    Feed
  • 0
    Best Answers
  • 0
    Likes Received
  • 0
    Likes Given
  • 6
    Questions
  • 2
    Replies

While trying to Query against Contact, I am getting an exception from within the Axis API.  Below is the SOAP that I'm sending and receiving back. 

The response looks incorrect because it is defining Contact as an Enterprise object and not giving it back as an SObject.   The deserializer tries to deserialize it using the Enterprise namespace/object which breaks things. 

 

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <soapenv:Header>
  <ns1:SessionHeader soapenv:actor="http://schemas.xmlsoap.org/soap/actor/next" soapenv:mustUnderstand="0" xmlns:ns1="SforceService">
   <ns2:sessionId xmlns:ns2="urn:partner.soap.sforce.com">DON'T PEEK AT THIS</ns2:sessionId>
  </ns1:SessionHeader>
 </soapenv:Header>
 <soapenv:Body>
  <query xmlns="urn:partner.soap.sforce.com">
   <queryString>select Id from Contact</queryString>
  </query>
 </soapenv:Body>
</soapenv:Envelope>

 

ERROR [SalesForce.com Sync, SALESFORCE_FOLDER.ID=83109, rnd=-2001560631] (Call.java:2383) - Exception:

org.xml.sax.SAXException: No deserializer for {urn:sobject.enterprise.soap.sforce.com}Contact

 at org.apache.axis.encoding.ser.BeanDeserializer.onStartChild(BeanDeserializer.java:257)

 at org.apache.axis.encoding.DeserializationContextImpl.startElement(DeserializationContextImpl.java:1001)

 at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:159)

 at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1050)

 at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:196)

 at org.apache.axis.message.RPCElement.getParams(RPCElement.java:310)

 at org.apache.axis.client.Call.invoke(Call.java:2381)

 at org.apache.axis.client.Call.invoke(Call.java:2280)

 at org.apache.axis.client.Call.invoke(Call.java:1741)

 at com.sforce.soap.partner.SoapBindingStub.query(SoapBindingStub.java:1211)

 at com.metro1.metrodex.salesforce.SFCSynchronizer.sfcGetUpdated(SFCSynchronizer.java:819)

 at com.metro1.metrodex.salesforce.SFCSynchronizer.run(SFCSynchronizer.java:323)

 at com.metro1.util.ThreadPool$Worker.run(ThreadPool.java:102)

 

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 <soapenv:Body>
  <queryResponse xmlns="urn:partner.soap.sforce.com">
   <result>
    <done>true</done>
    <queryLocator xsi:nil="true"/>
    <records xsi:type="sf:Contact" xmlns:sf="urn:sobject.enterprise.soap.sforce.com">
     <sf:Id>0033000000303JtAAI</sf:Id>
    </records>
    <records xsi:type="sf:Contact" xmlns:sf="urn:sobject.enterprise.soap.sforce.com">
     <sf:Id>0033000000303JuAAI</sf:Id>
    </records>
    <records xsi:type="sf:Contact" xmlns:sf="urn:sobject.enterprise.soap.sforce.com">
     <sf:Id>0033000000303JvAAI</sf:Id>
    </records>

The LoginResult object currently gives back a Session ID (getSessionId) and a server (getServerUrl).  The documentation mentions that for recurring access, you should cache the session ID and simply place that back onto the SOAP header.  But, it fails to mention the Server URL.

How constant is the Server URL?  Since it's possible to not be on the same server do I need to cache that as well?  And how safe is it to cache?

Once I have both the Session and the Server cached, is there a call I can make, prior to doing my other work, to verify that it is correct?  For example, will calling the getServerTimeStamp function validate my session?

 

I'm getting an exception when I try to delete an event on the Sforce side. 

DELETE SOAP ERROR: UNKNOWN_EXCEPTION, java.sql.SQLException: ORA-20008:
ORA-06512: at "BUILD134R4A.CACCESS", line 302
ORA-06512: at "BUILD134R4A.CACCESS", line 592
ORA-06512: at "BUILD134R4A.CACCESS", line 691
ORA-06512: at "BUILD134R4A.CEVENT", line 604
ORA-06512: at line 1

The current logic in our application (which does Synchronization) is that when there is an error, to not commit the record on our side (in this case, a delete) and rollback the transaction.  This way we can try to stay "in sync" with the SalesForce server. 

Is this an exception that I should be expecting normally?  Or is there a differnet error that will be returned in the future?

Is there any way to simulate error conditions such as:

  • Session invalidating itself before the normal 2 hours
  • Throttling
  • Random Exceptions (unexpected/uncaught Sforce system errors)

I have yet to run into any of these during development, but, once real users get ahold of the product I would like to have this tested.  Our QA department has also been asking about this.

Message Edited by Curtis Paris on 05-24-2004 11:19 AM

I have completed the majority of my work on working with Event's.  My last question came in the form of Recurring Event's.

It does not appear that the Event SObject has any ability to have a recurring/repeating pattern to it.  IE, a Weekly Event, or Every Tuesday and Thursday Event.  I just wanted to make sure that I don't have to worry about these right now.

I'm going out on a limb here, but, I'm assuming that the PUMA Connector currently fan's appointments when importing into the sForce objects.  If this is the case, is there any indication (isChild?) that it was a fanned appointment?

 

 

I was experiencing an odd failure today that drove me crazy for about an hour.  The error message I was getting back was not in line with the actual behavior.

I was sending a getUpdated() and getDeleted() for "Contact" that was over 30 days old.  Since this is not documented that there is a limitation, I was getting back the following exception message:

AxisFault
 faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
 faultSubcode: 
 faultString: java.lang.IllegalStateException
 faultActor: 
 faultNode: 
 faultDetail: 
 {http://xml.apache.org/axis/}stackTrace: java.lang.IllegalStateException

While I'm use to seeing the exceptions, this wasn't being returned as a normal SOAP message.  Possibly a bug in Axis.  But, looking at the HTTP Response, I noticed that it was coming back as an HTTP 500 Result.  Is this what's causing the issue and not giving back the correct exception?

 

POST /services/Soap/c/3.0 HTTP/1.0
Content-Type: text/xml; charset=utf-8
Accept: application/soap+xml, application/dime, multipart/related, text/*
User-Agent: Axis/1.1
Host: na1-api.salesforce.com
Cache-Control: no-cache
Pragma: no-cache
SOAPAction: ""
Content-Length: 1006





25


2b4PAnqmlEHaBb3Emud3ANiadvr8JBCwJaUfVNCdGEL7jlN7963X_Y2ZjzJ5k94fWSpw2lom2G3UoQSUdfxOTPbtzKggVlhL




Contact
2002-04-01T08:00:00.000Z
2004-05-11T21:47:37.359Z


HTTP/1.0 500 Internal Server Error
Server: sfdc
Server: sfdc
Content-Type: text/xml; charset=utf-8
Date: Tue, 11 May 2004 21:47:47 GMT





soapenv:Server
INVALID_REPLICATION_DATE: startDate cannot be more than 30 days ago


INVALID_REPLICATION_DATE
startDate cannot be more than 30 days ago




 

What is the maximum size for an Id array when making a retrieve call?

I found out that if you send in an array with 2207 Account Id's you get the soap error:

"EXCEEDED_ID_LIMIT_ON_RETRIEVE: retrieve id limit reached"

Cheers;
GlennW

Newbie here again. I�ve managed to get my program to update to the DEV site, however, my production level code does not seem to update on Salesforce�s side. I do not get any errors when I run, and even get the final message I have built in saying X files written. I have generated a wsdl for our enterprise and have each of the needed fields referenced properly (I think). Any suggestions? Thanks in advance

 

Code:

 

SQL statements and login statements above this section

 

Try

Dim account1 As Enterprise.Assets__c

Dim account As Enterprise.Account

Dim accs(1) As Enterprise.sObject

account1 = New Enterprise.Assets__c

account = New Enterprise.Account

If accounts Is Nothing Then

account.AccountNumber = "0000000"

Else

account.AccountNumber = "000000" & (accounts.Length & 1)

End If

account1.Name = "test" 'r1("model")

account1.Type__c = "copier"

account1.Customer_Number__c = R1("CUSTOMER_NUMBER")

account1.Make__c = "sharp"

account1.Vendor__c = "ABS"

account1.Contract__c = "1ch"

account1.Model__c = "DR5020"

account1.OwnerId = "BBSJAX"

accs(0) = account1

binding.create(accs)

Catch ex As Exception

Console.WriteLine(vbCrLf & "Failed to create account, error message was: " & vbCrLf & ex.Message)

End Try

End If

 

Catch statements for me below here