微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MULE 4:Salesforce组件:无效的会话ID问题

如何解决MULE 4:Salesforce组件:无效的会话ID问题

我正在使用MULE 4和Salesforce组件9.7.10。 在我的应用中,我正在使用APEX REST METHOD CALL向Salesforce请求一些数据。一旦您部署/重新启动了几个小时,该应用程序就可以正常工作,但是此后它会引发INVALID_SESSION_ID错误

所以我更新到了Salesforce的9.11.0版本,现在出现以下错误

org.mule.runtime.core.internal.message.ErrorBuilder$ErrorImplementation
{
  description=Could not determine the http request method!
  detailedDescription=Could not determine the http request method!
  errorType=SALESFORCE:UNKNowN
  cause=java.lang.IllegalArgumentException
  errorMessage=-
  childErrors=[]
}

解决以上两个问题中的任何一个都会有所帮助。

我使用的Salesforce配置如下:

<salesforce:sfdc-config 
name="Salesforce_Config" 
doc:name="Salesforce Config" 
doc:id="31efbe68-bae3-48ee-92e7-a1d9f2ef0a49" 
fetchAllApexRestMetadata="true" >
<salesforce:cached-basic-connection 
proxyHost="${secure::proxyHost}" 
proxyPort="${secure::proxyPort}" 
username="${secure::username}" 
password="${secure::pssword}" 
securityToken="${secure::token}" 
url="${secure::url}" 
disableSessionInvalidation="true" />
</salesforce:sfdc-config>

升级到Salesforce组件10.4.2,n =并且测试连接成功。现在,当尝试获取类名时出现以下错误

org.mule.runtime.extension.api.exception.ModuleException: INVALID_TYPE: Cannot use: PlatformEventChannelMember in this version ErrorCode {http://soap.sforce.com/2006/04/Metadata}INVALID_TYPE
  org.mule.runtime.extension.api.exception.ModuleException: INVALID_TYPE: Cannot use: PlatformEventChannelMember in this version ErrorCode {http://soap.sforce.com/2006/04/Metadata}INVALID_TYPE
  Caused by: com.sforce.ws.soapFaultException: INVALID_TYPE: Cannot use: PlatformEventChannelMember in this version
    at com.sforce.ws.transport.soapConnection.createException(SoapConnection.java:226)
    at com.sforce.ws.transport.soapConnection.receive(SoapConnection.java:163)
    at com.sforce.ws.transport.soapConnection.send(SoapConnection.java:108)
    at com.sforce.soap.Metadata.MetadataConnection.listMetadata(MetadataConnection.java:404)
    at org.mule.extension.salesforce.internal.service.MetadataServiceImpl.lambda$listMetadata$10(MetadataServiceImpl.java:302)
    at org.mule.extension.salesforce.internal.connection.ForceWSCConnection.executeOverMetadataClient(ForceWSCConnection.java:466)
    at org.mule.extension.salesforce.internal.service.ForceWSCService.executeOverMetadataClient(ForceWSCService.java:40)
    at org.mule.extension.salesforce.internal.service.MetadataServiceImpl.listMetadata(MetadataServiceImpl.java:302)
    at org.mule.extension.salesforce.internal.Metadata.StreamingChannelMetadataResolver.getMetadataKeysForChangeDataCaptureEvents(StreamingChannelMetadataResolver.java:123)
    at org.mule.extension.salesforce.internal.Metadata.StreamingChannelMetadataResolver.getKeys(StreamingChannelMetadataResolver.java:79)
    at org.mule.runtime.module.extension.internal.runtime.config.ConfigurationProviderToolingAdapter.addComponentKeys(ConfigurationProviderToolingAdapter.java:121)
    at org.mule.runtime.module.extension.internal.runtime.config.ConfigurationProviderToolingAdapter.getMetadataKeys(ConfigurationProviderToolingAdapter.java:105)
    at org.mule.runtime.core.internal.Metadata.MuleMetadataService.lambda$getMetadataKeys$0(MuleMetadataService.java:69)
    at org.mule.runtime.core.internal.Metadata.MuleMetadataService.exceptionHandledMetadataFetch(MuleMetadataService.java:145)
    at org.mule.runtime.core.internal.Metadata.MuleMetadataService.getMetadataKeys(MuleMetadataService.java:69)
    at org.mule.runtime.config.internal.LazyMetadataService.lambda$getMetadataKeys$0(LazyMetadataService.java:58)
    at java.util.Optional.orElseGet(Optional.java:267)
    at org.mule.runtime.config.internal.LazyMetadataService.getMetadataKeys(LazyMetadataService.java:58)
    at com.mulesoft.agent.services.Metadata.MuleAgentMetadataService.lambda$getMetadataKeysApplication$0(MuleAgentMetadataService.java:56)
    at com.mulesoft.agent.services.Metadata.MuleAgentMetadataService.withMetadataService(MuleAgentMetadataService.java:145)
    at com.mulesoft.agent.services.Metadata.MuleAgentMetadataService.getMetadataKeysApplication(MuleAgentMetadataService.java:56)
    at com.mulesoft.agent.external.handlers.Metadata.MetadataRequestHandler.lambda$getMetadataKeysApplication$0(MetadataRequestHandler.java:137)
    at com.mulesoft.agent.util.ResponseHelper.response(ResponseHelper.java:88)
    at com.mulesoft.agent.external.handlers.Metadata.MetadataRequestHandler.getMetadataKeysApplication(MetadataRequestHandler.java:135)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethoddispatcher$1.run(AbstractJavaResourceMethoddispatcher.java:151)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethoddispatcher.invoke(AbstractJavaResourceMethoddispatcher.java:171)
    at org.glassfish.jersey.server.model.internal.JavaResourceMethoddispatcherProvider$ResponSEOutInvoker.dodispatch(JavaResourceMethoddispatcherProvider.java:152)
    at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethoddispatcher.dispatch(AbstractJavaResourceMethoddispatcher.java:104)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:387)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:331)
    at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:103)
    at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:271)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:271)
    at org.glassfish.jersey.internal.Errors$1.call(Errors.java:267)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:267)
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:297)
    at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:254)
    at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:1028)
    at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:372)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:381)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:344)
    at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:221)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:876)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1623)
    at com.mulesoft.agent.rest.RequestLoggingFilter.doFilter(RequestLoggingFilter.java:95)
    at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1610)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:540)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:146)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:548)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
    at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:257)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1711)
    at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:255)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1347)
    at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:203)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:480)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1678)
    at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:201)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1249)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:144)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:132)
    at org.eclipse.jetty.server.Server.handle(Server.java:505)
    at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:370)
    at org.eclipse.jetty.server.httpconnection.onFillable(httpconnection.java:267)
    at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:305)
    at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:103)
    at org.eclipse.jetty.io.ChannelEndPoint$2.run(ChannelEndPoint.java:117)
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:333)
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:310)
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:168)
    at org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:126)
    at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:366)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:781)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:917)
    at java.lang.Thread.run(Thread.java:748)


解决方法

对于9.x版,我已按以下步骤解决了该问题:

  1. 使用获取会话ID组件获取会话ID
  2. 使用会话ID和HTTP请求组件将SALESFORCE API用作REST服务调用

对于10.x版,解决方案是使用以下步骤替换9.x的upsert批量组件:

  1. 使用“创建作业”组件创建SALESFORCE作业
  2. 使用第1步中收到的“创建批次”中的JOB ID创建一个BATCH并将其添加到Salesforce
  3. 使用“关闭作业”组件关闭作业

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。