一个spring bean来包装salesforce Web服务调用

时间:2010-09-27 17:26:31

标签: java spring salesforce

我试图弄清楚如何创建一个无状态的spring bean,它包含一组对salesforce web服务API的调用。我的理解是,调用salesforce的过程是这样的:

  1. 致电登录服务以登录salesforce
  2. 进行一系列服务电话
  3. 致电退出
  4. 要拥有无状态包装器,似乎正确的模式是让bean中的每个方法执行上述所有三个步骤。例如(伪代码)

    binding.login();
    binding.upsert(….);
    binding.upsert(….);
    binding.logout();
    

    这是一个好习惯吗?似乎只是为了保持豆无状态是一种昂贵的方式。在这种情况下,最好是制作bean request scope吗?

2 个答案:

答案 0 :(得分:1)

我同意Anup,你应该看看sfdc wsc。

如果您想完全无状态,您需要了解有关salesforce连接的以下信息。

  1. 每个操作都必须有一个端点网址,例如na6.salesforce.com或na7.salesforce.com
  2. 每个操作都必须具有有效的SID(会话ID)才能完成操作。
  3. 当您登录salesforce时,原始端点是login.salesforce.com,如果您已成功,则会返回一个有效的端点(na6.salesforce.com)和一个SID。

    然后,您可以将该端点/ sid放入单例中,并根据需要与尽可能多的spring bean共享它。在每个bean中,您需要创建一个新的SoapBindingStub并在执行insert / upsert / update / etc之前设置端点和sid。动作。

    sid将在一段时间不活动后过期(根据设置,在30-120分钟之间),因此您应该捕获任何异常并使用单例对象重新登录。

    不要担心两个bean会同时进入单例重新登录,因为salesforce会将相同的sid返回给两者。

答案 1 :(得分:0)

你试过SFDC WSC库吗?它易于使用,适合您要完成的用例。