我试图弄清楚如何创建一个无状态的spring bean,它包含一组对salesforce web服务API的调用。我的理解是,调用salesforce的过程是这样的:
要拥有无状态包装器,似乎正确的模式是让bean中的每个方法执行上述所有三个步骤。例如(伪代码)
binding.login();
binding.upsert(….);
binding.upsert(….);
binding.logout();
这是一个好习惯吗?似乎只是为了保持豆无状态是一种昂贵的方式。在这种情况下,最好是制作bean request scope
吗?
答案 0 :(得分:1)
我同意Anup,你应该看看sfdc wsc。
如果您想完全无状态,您需要了解有关salesforce连接的以下信息。
当您登录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库吗?它易于使用,适合您要完成的用例。