运用单例模式思想解决RuntimeException超时问题

今天,排查了一个RuntimeException超时问题,简单记录分享下。
分析关键日志排查如下
在这里插入图片描述
查看关键代码

    private static Client createClient(String wsdlUrl) {
        JaxWsDynamicClientFactory jaxWsDynamicClientFactory = JaxWsDynamicClientFactory.newInstance();
        return jaxWsDynamicClientFactory.createClient(wsdlUrl);
    }

发现,原来这是同事比较久,之前的代码,这相当于来一次就newInstance一次,于是改造下

    private static final Map<String, Client> CLIENT_MAP = new ConcurrentHashMap<>();

    /**
     * 创建ws客户端
     *
     * @param wsdlUrl
     * @return
     */
    public static Client createClient(String wsdlUrl) {
        Client client;
        if (!CLIENT_MAP.containsKey(wsdlUrl)) {
            synchronized (CLIENT_MAP) {
                if (!CLIENT_MAP.containsKey(wsdlUrl)) {
                    JaxWsDynamicClientFactory jaxWsDynamicClientFactory = JaxWsDynamicClientFactory.newInstance();
                    client = jaxWsDynamicClientFactory.createClient(wsdlUrl);
                    CLIENT_MAP.put(wsdlUrl, client);
                } else {
                    client = CLIENT_MAP.get(wsdlUrl);
                }
            }
        } else {
            client = CLIENT_MAP.get(wsdlUrl);
        }
        return client;
    }

用ConcurrentHashMap存储一下,每次都先从map里面拿,不难看出,其实这里和单例思想是一样的。

相关推荐

  1. 模式场景模拟问题解决

    2024-04-13 05:04:02       26 阅读
  2. 深度解析模式

    2024-04-13 05:04:02       40 阅读
  3. 模式模板

    2024-04-13 05:04:02       43 阅读
  4. 模式——懒汉模式的双重检测锁问题

    2024-04-13 05:04:02       55 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-13 05:04:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-13 05:04:02       106 阅读
  3. 在Django里面运行非项目文件

    2024-04-13 05:04:02       87 阅读
  4. Python语言-面向对象

    2024-04-13 05:04:02       96 阅读

热门阅读

  1. Kafka

    Kafka

    2024-04-13 05:04:02      25 阅读
  2. props组件传值(子串子)

    2024-04-13 05:04:02       32 阅读
  3. postgresql命令

    2024-04-13 05:04:02       32 阅读
  4. SQL Server详细使用教程

    2024-04-13 05:04:02       41 阅读
  5. 干货分享|TensorFlow构建神经网络

    2024-04-13 05:04:02       39 阅读
  6. hive sql一直跑到reduce=100%,然后挂掉重新跑

    2024-04-13 05:04:02       96 阅读
  7. 【CMake】CMake打包Dll

    2024-04-13 05:04:02       34 阅读
  8. python内置函数compile(),complex()详解

    2024-04-13 05:04:02       34 阅读
  9. AWS被误扣费了,怎么解决?

    2024-04-13 05:04:02       39 阅读
  10. python字符切片的规则

    2024-04-13 05:04:02       43 阅读