Ibm mobilefirst IBM Mobilefirst error MFP Conflict=使用方法getClientRegistrationData在AdapterSecurityContext中存储用户数据时并发故障

Ibm mobilefirst IBM Mobilefirst error MFP Conflict=使用方法getClientRegistrationData在AdapterSecurityContext中存储用户数据时并发故障,ibm-mobilefirst,mobilefirst-adapters,mobilefirst-server,Ibm Mobilefirst,Mobilefirst Adapters,Mobilefirst Server,我最近发现AdapterSecurityContext中存储的mobilefirst 8服务器数据存在问题。我们正在自定义安全检查下使用方法getClientRegistrationData将安全用户数据存储在AdapterSecurity Context中。 它在MobileFirstDevkit服务器中运行良好 ClientData clientData = adapterSecurityCheck.getClientRegistrationData(); clientData.getPu

我最近发现AdapterSecurityContext中存储的mobilefirst 8服务器数据存在问题。我们正在自定义安全检查下使用方法getClientRegistrationData将安全用户数据存储在AdapterSecurity Context中。 它在MobileFirstDevkit服务器中运行良好

ClientData clientData = adapterSecurityCheck.getClientRegistrationData();

clientData.getPublicAttributes().put(key, "hello");
adapterSecurityCheck.storeClientRegistrationData(clientData);
但当我在Liberty服务器或WASND服务器上运行同一个适配器时,它给出了以下错误

com.ibm.mfp.server.core.sha red.MFPRESTException:409;头文件=[MFP冲突=并发失败];正文={}

    at com.ibm.mfp.server.registration.internal.RegistrationServiceImpl.stor                                                                                        eClient(RegistrationServiceImpl.java:235)

    at sun.reflect.GeneratedMethodAccessor965.invoke(Unknown Source)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces                                                                                        sorImpl.java:55)

    at java.lang.reflect.Method.invoke(Method.java:618)

    at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflecti                                                                                        on(AopUtils.java:317)

    at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJo                                                                                        inpoint(ReflectiveMethodInvocation.java:190)

    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(                                                                                        ReflectiveMethodInvocation.java:157)

    at org.springframework.aop.support.DelegatingIntroductionInterceptor.doP                                                                                        roceed(DelegatingIntroductionInterceptor.java:133)

    at org.springframework.aop.support.DelegatingIntroductionInterceptor.inv                                                                                        oke(DelegatingIntroductionInterceptor.java:121)

    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(                                                                                        ReflectiveMethodInvocation.java:179)

    at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynami                                                                                        cAopProxy.java:207)

    at com.sun.proxy.$Proxy219.storeClient(Unknown Source)

    at com.ibm.mfp.server.security.internal.services.AdapterSecurityContextI                                                                                        mpl.storeClientRegistrationData(AdapterSecurityContextImpl.java:91)

    at com.pscu.ServiceAdapterResource.setSecureData(ServiceAdapterResource.                                                                                        java:2321)

    at com.pscu.ServiceAdapterResource.setAllCardsInToSecuredStore(ServiceAd                                                                                        apterResource.java:2332)

    at com.pscu.ServiceAdapterResource.getPostLoginData(ServiceAdapterResour                                                                                        ce.java:250)

    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.                                                                                        java:88)

    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces                                                                                        sorImpl.java:55)

    at java.lang.reflect.Method.invoke(Method.java:618)

    at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(Abst                                                                                        ractInvoker.java:181)

    at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker                                                                                        .java:97)

    at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:200)

    at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:99)

    at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInv                                                                                        okerInterceptor.java:59)
请参阅。必须通过AdapterSecurityContext.getClientRegistrationData()、AdapterSecurityContext.getClientRegistrationData(字符串)或AdapterSecurityContext.findClientRegistrationData(ClientSearchCriteria)获取ClientData实例。
如果注册数据在通过此请求获取后被并发请求修改,则此方法会引发运行时异常,该异常会自动报告给客户端,作为HTTP状态409(冲突)。

是否使用getClientRegistrationData()或storeClientRegistrationData()存储数据?使用storeClientRegistrationData。我已经用代码片段更新了这个问题。谢谢。在执行getClientRegistrationData()之后立即执行storeClientRegistrationData()时,似乎存在并发问题。仅当客户端id不为null时,才能尝试使用storeClientRegistrationData()调用吗?类似于调用storeClientRegistrationData()之前的验证,以确保在调用storeClientRegistrationData()之前完成getClientRegistrationData()调用。getClientRegistrationData()是同步方法,对吗?它还返回所有存储的数据。但当我试图使用storeClientRegistrationData修改时,它会给我错误。storeClientRegistrationData会引发此异常。MFP数据库是oracle。