【发布时间】:2011-04-17 21:38:23
【问题描述】:
我试图弄清楚如何创建一个无状态的 Spring bean,它包装了一组对 Salesforce Web 服务 API 的调用。我的理解是调用salesforce的流程是这样的:
- 调用登录服务登录salesforce
- 进行一系列服务调用
- 调用注销
要拥有一个无状态包装器,似乎正确的模式是让 bean 中的每个方法执行上述所有三个步骤。例如(伪代码)
binding.login();
binding.upsert(….);
binding.upsert(….);
binding.logout();
这是一个好习惯吗?保持 bean 无状态似乎是一种代价高昂的方法。在这种情况下,制作 bean request scope 会更好吗?
【问题讨论】:
-
你不想在每次调用时都调用登录/注销,你会不必要地烧掉 api 调用,并增加延迟。您不能使用您计划用来存储用户名/密码的任何状态来存储 sessionId 吗?
-
谢谢@superfell。是的,在 bean 内部保持状态很容易。我只是好奇我是否需要用请求范围实例化这个 spring bean。我认为答案是肯定的。那么问题是:请求范围是否会增加显着的可扩展性成本?我是 Spring 新手,所以我不知道请求范围的开销。
-
正如@superfell 所提到的,可伸缩性的担忧不仅仅在于您可以使用 Spring 做什么。您是否了解 Salesforce 调控器限制?在为 Salesforce 设计包装器时,您需要确保进行尽可能少的 api 调用以避免达到这些限制。阅读salesforce.com/us/developer/docs/apexcode/Content/…了解更多信息。
标签: java spring salesforce