java - 如何修复 : className ='com.hazelcast.aws.AwsDiscoveryStrategy' , discoveryStrategyFactory=null 是策略类名中的拼写错误吗?

标签 java amazon-web-services hazelcast

我试图在两个单独的 aws ec2 实例中设置两个 jvm 实例,并在这些 jvm 之间配置 hazelcast 缓存机制,这是 hazelcast.xml

    <properties>
        <property name="hazelcast.discovery.enabled">true</property>
    </properties>

    <network>
        <join>
            <multicast enabled="false"/>
            <tcp-ip enabled="false"/>
            <aws enabled="true">
                <region>us-east-2</region>
                <iam-role>my-ec2-role</iam-role>
<!--                <tag-key>aws:cloudformation:stack-name</tag-key>-->
<!--                <tag-value>EC2ContainerService-test-cluster</tag-value>-->
           </aws>
        </join>
    </network>

pom文件

    <dependencies>
        <dependency>
            <groupId>com.hazelcast</groupId>
            <artifactId>hazelcast-client</artifactId>
            <version>3.12</version>
        </dependency>
        <dependency>
            <groupId>com.hazelcast</groupId>
            <artifactId>hazelcast-aws</artifactId>
            <version>2.4</version>
        </dependency>
    </dependencies>

但是,当我在 aws 实例中运行可运行 jar 时,出现以下异常:

Exception in thread "main" com.hazelcast.config.InvalidConfigurationException: Invalid configuration at com.hazelcast.spi.discovery.impl.DefaultDiscoveryService.loadDiscoveryStrategies(DefaultDiscoveryService.java:147) at com.hazelcast.spi.discovery.impl.DefaultDiscoveryService.(DefaultDiscoveryService.java:57) at com.hazelcast.spi.discovery.impl.DefaultDiscoveryServiceProvider.newDiscoveryService(DefaultDiscoveryServiceProvider.java:29) at com.hazelcast.instance.Node.createDiscoveryService(Node.java:318) at com.hazelcast.instance.Node.(Node.java:255) at com.hazelcast.instance.HazelcastInstanceImpl.createNode(HazelcastInstanceImpl.java:161) at com.hazelcast.instance.HazelcastInstanceImpl.(HazelcastInstanceImpl.java:131) at com.hazelcast.instance.HazelcastInstanceFactory.constructHazelcastInstance(HazelcastInstanceFactory.java:228) at com.hazelcast.instance.HazelcastInstanceFactory.newHazelcastInstance(HazelcastInstanceFactory.java:207) at com.hazelcast.instance.HazelcastInstanceFactory.newHazelcastInstance(HazelcastInstanceFactory.java:157) at com.hazelcast.core.Hazelcast.newHazelcastInstance(Hazelcast.java:91) at hazelMain.main(hazelMain.java:10) Caused by: com.hazelcast.config.properties.ValidationException: There is no discovery strategy factory to create 'DiscoveryStrategyConfig{properties={region=us-east-2, iam-role=my-ec2-role}, className='com.hazelcast.aws.AwsDiscoveryStrategy', discoveryStrategyFactory=null}' Is it a typo in a strategy classname? Perhaps you forgot to include implementation on a classpath? at com.hazelcast.spi.discovery.impl.DefaultDiscoveryService.buildDiscoveryStrategy(DefaultDiscoveryService.java:186) at com.hazelcast.spi.discovery.impl.DefaultDiscoveryService.loadDiscoveryStrategies(DefaultDiscoveryService.java:141)

根据我的理解,当我们使用<aws enabled = true>时。它应该自动检测要使用哪个策略工厂?

最佳答案

您很可能会看到此消息,因为您的类路径上没有 hazelcast-aws.jar (或 hazelcast-all.jar)。您需要将应用程序与所有依赖项打包在一起,或者将上述 JAR 之一复制到您的 EC2 实例中并从 java -cp hazelcast-aws.jar (或 java -cp hazelcast- all.jar)。

关于java - 如何修复 : className ='com.hazelcast.aws.AwsDiscoveryStrategy' , discoveryStrategyFactory=null 是策略类名中的拼写错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57390071/

相关文章:

java - ArrayList<Object> 发送槽套接字

amazon-web-services - 登录后使用 cognito 返回 401 的亚马逊负载均衡器

mysql - 如何找到 Amazon RDS 生成的自动 S3 备份的位置?

caching - 需要通过多键查找持久保存在内存缓存中

java - Spring session 惰性反序列化

java - Eclipse 2019-09 连接到 Team Foundation Server 无限循环

java - 需要帮助用java从服务器读取数据

java - 错误 "Unable to instantiate activity ... Didn' t 在路径 : DexPathList"上找到类

php - aws php sdk - 函数可以在本地主机和控制台中运行,但在服务器上时不能在浏览器上运行

caching - Redis 或 Hazelcast,或其他?