【问题标题】:Unable to connect to Locator via GFSH无法通过 GFSH 连接到定位器
【发布时间】:2019-01-04 12:47:42
【问题描述】:

我已经通过 Spring Boot 启动了 GemFire 服务器和定位器,当我尝试从 GFSH 连接到定位器时,出现以下问题:

gfsh> connect
Connecting to Locator at [host=localhost, port=10334] ..
Connection refused: connect

下面是 Spring (Java) 配置:

@Configuration 
@ComponentScan 
@EnableGemfireRepositories(basePackages= "com.gemfire.demo") 
@CacheServerApplication(locators = "localhost[10334]") 
@EnableManager 
public class GemfireConfiguration {

    @Bean
    Properties gemfireProperties() {
        Properties gemfireProperties = new Properties();
        gemfireProperties.setProperty("name", "SpringDataGemFireApplication");
        gemfireProperties.setProperty("mcast-port", "0");
        gemfireProperties.setProperty("log-level", "info");
        return gemfireProperties;
    }

    @Bean
    @Autowired
    CacheFactoryBean gemfireCache() {
        CacheFactoryBean gemfireCache = new CacheFactoryBean();
        gemfireCache.setClose(true);
        gemfireCache.setProperties(gemfireProperties());
        return gemfireCache;
    }

    @Bean(name="employee")
    @Autowired
    LocalRegionFactoryBean<String, Employee> getEmployee(final GemFireCache cache) {
        LocalRegionFactoryBean<String, Employee> employeeRegion = new LocalRegionFactoryBean<String, Employee>();
        employeeRegion.setCache(cache);
        employeeRegion.setClose(false);
        employeeRegion.setName("employee");
        employeeRegion.setPersistent(false);
        employeeRegion.setDataPolicy(DataPolicy.PRELOADED);
        return employeeRegion;
    }
}

参考:Spring Data Gemfire locator 根据 John 的建议,我已启用 Manager,但仍无法连接。

【问题讨论】:

    标签: spring-boot gemfile spring-data-gemfire geode gfsh


    【解决方案1】:

    您无法连接到 Locator(使用 Gfsh),因为您没有 Locator(服务,无论是独立的或嵌入式)仅使用上面显示的 Spring (Java) 配置运行。

    请注意,@CacheServerApplication(locators = "localhost[10334]") 注释,特别是您在上面配置的 locators 属性,不会启动嵌入的 Locator。它只是允许这个 Spring Boot 配置和引导的 Apache Geode 或 Pivotal GemFire 对等点 Cache 节点加入现有的分布式系统(集群),并在其上运行“现有”Locator localhost,监听端口10334。

    例如,您可以使用 Gfsh(例如 start locator --name=X ...)启动 Locator,然后使用Spring (Java) 配置如上所示,您会看到 Spring Boot 应用程序是由 Gfsh 启动的 Locator 形成的集群的一部分.

    这只是配置和启动“嵌入式”定位器的快捷方式(方便),但要这样做,您需要使用@EnableLocator 注释。

    因此,在与 CacheServer(和 经理),您还必须包含@EnableLocator 注释,如下所示:

    @SpringBootApplicaton
    @CacheServerApplication
    @EnableLocator
    @EnableManager(start = true)
    public class GemFireServerApplication {
    
      ...
    }
    

    我有很多这个here的例子,比如here,一般说说这个here等

    附带说明一下,您的整个配置(类)很混乱,很明显您不太了解自己在做什么。例如,在 JavaConfig 中声明 gemfireProperties 和 gemfireCache bean 是多余且不必要的,因为您使用的是 @CacheServerApplication 注释。您的整个配置可以简化为:

    @CacheServerApplication( name = "SpringDataGemFireApplication", 定位器=“本地主机[10334]”, logLevel = "信息" ) @EnableLocator @EnableManager(开始 = 真) @EnableGemfireRepositories(basePackages="com.gemfire.demo") @ComponentScan 公共类 GemfireConfiguration {

    @Bean(name="employee")
    LocalRegionFactoryBean<String, Employee> getEmployee(GemFireCache cache) {
    
        LocalRegionFactoryBean<String, Employee> employeeRegion = 
            new LocalRegionFactoryBean<String, Employee>();
    
        employeeRegion.setCache(cache);
        employeeRegion.setClose(false);
        employeeRegion.setName("employee");
        employeeRegion.setPersistent(false);
        employeeRegion.setDataPolicy(DataPolicy.PRELOADED);
    
        return employeeRegion;
    }
    

    }

    两件事:

    1) 首先,我会非常小心地使用类路径组件扫描 (@ComponentScan)。我不喜欢这种配置方法,尤其是在需要明确的生产环境中。

    2) 我鼓励您考虑在 @EnableGemFireRepositorities 注释上使用类型安全的 basePackageClasses 属性,而不是 basePackages 属性。使用basePackageClasses,您只需要引用所需包中的单个接口/类(例如com.gemfire.demo),而不是每个接口/类。引用的接口/类用作标识要扫描的包的指针,包括所有子包。它是类型安全的,当您重新定位该包中的接口/类时,您的属性在重构后仍然有效。

    无论如何...

    希望这会有所帮助。

    -j

    【讨论】:

    • 即使我也尝试过@EnableLocator,但我无法做到
    • 那么您可能会发生另一个异常,并带有应该揭示问题的错误消息。您需要确保您使用的 Gfsh 版本与 SDG(或 SBDG)为您提供的 GemFire 版本相匹配。例如,请参见此处 (github.com/spring-projects/spring-data-gemfire/wiki/…)。不幸的是,这是 GemFire 的限制。
    • 现在我可以连接 gfsh 了,在我的 GFSH 版本降级到 9.5.2 之后。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-13
    • 2016-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多