【问题标题】:How to see persisted data(persisted thru spring-data-gemfire) in gemfire commanline gfsh如何在 gemfire commanline gfsh 中查看持久化数据(通过 spring-data-gemfire 持久化)
【发布时间】:2016-06-07 16:02:56
【问题描述】:

我将被介绍给pivotal GemFire,所以我在 spring 中创建了一个入门项目,并在 spring 指南中复制了以下项目。

https://spring.io/guides/gs/accessing-data-gemfire/

这个项目正在工作,数据被持久化,我也可以检索数据。

另一方面,我已经下载了“GemFire 8.2.1”并安装在我的系统中并设置了所有环境变量,并且能够运行 GemFire 的命令行"gfsh" .

1) 现在我的问题是如何在这个命令行 gfsh 中查看持久化数据(通过 spring-data-gemfire 持久化)。所以,我真的可以看到它是如何存储的等等。

2) 另外,在上面的 spring 项目中,虽然它工作正常,但它的抛出异常为

[info 2016/06/07 20:24:55.559 IST <main> tid=0x1] Command Service could not be initialized. Could not find Spring Shell library which is needed for CLI/gfsh in classpath. Internal support for CLI & gfsh is not enabled. Note: For convenience, absolute path of "gfsh-dependencies.jar" from "lib" directory of GemFire product distribution can be included in CLASSPATH of an application.
com.gemstone.gemfire.management.DependenciesNotFoundException: Could not find Spring Shell library which is needed for CLI/gfsh in classpath. Internal support for CLI & gfsh is not enabled. Note: For convenience, absolute path of "gfsh-dependencies.jar" from "lib" directory of GemFire product distribution can be included in CLASSPATH of an application.
    at com.gemstone.gemfire.management.cli.CommandService.createLocalCommandService(CommandService.java:135)
    at com.gemstone.gemfire.management.internal.beans.MemberMBeanBridge.<init>(MemberMBeanBridge.java:352)
    at com.gemstone.gemfire.management.internal.beans.ManagementAdapter.handleCacheCreation(ManagementAdapter.java:152)
    at com.gemstone.gemfire.management.internal.beans.ManagementListener.handleEvent(ManagementListener.java:111)
    at com.gemstone.gemfire.distributed.internal.InternalDistributedSystem.notifyResourceEventListeners(InternalDistributedSystem.java:2243)
    at com.gemstone.gemfire.distributed.internal.InternalDistributedSystem.handleResourceEvent(InternalDistributedSystem.java:503)
    at com.gemstone.gemfire.internal.cache.GemFireCacheImpl.init(GemFireCacheImpl.java:1009)
    at com.gemstone.gemfire.internal.cache.GemFireCacheImpl.create(GemFireCacheImpl.java:682)
    at com.gemstone.gemfire.cache.CacheFactory.create(CacheFactory.java:182)
    at com.gemstone.gemfire.cache.CacheFactory.create(CacheFactory.java:229)
    at org.springframework.data.gemfire.CacheFactoryBean.createCache(CacheFactoryBean.java:398)
    at org.springframework.data.gemfire.CacheFactoryBean.resolveCache(CacheFactoryBean.java:303)
    at org.springframework.data.gemfire.CacheFactoryBean.init(CacheFactoryBean.java:244)
    at org.springframework.data.gemfire.CacheFactoryBean.getObject(CacheFactoryBean.java:871)
    at org.springframework.data.gemfire.CacheFactoryBean.getObject(CacheFactoryBean.java:86)
    at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:168)
    at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:103)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1590)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:317)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1192)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1116)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014)
    at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:813)
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741)
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:464)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1123)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1018)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:534)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.getBeansOfType(DefaultListableBeanFactory.java:523)
    at org.springframework.context.support.AbstractApplicationContext.getBeansOfType(AbstractApplicationContext.java:1162)
    at org.springframework.data.gemfire.repository.support.GemfireRepositoryFactoryBean.setApplicationContext(GemfireRepositoryFactoryBean.java:71)
    at org.springframework.context.support.ApplicationContextAwareProcessor.invokeAwareInterfaces(ApplicationContextAwareProcessor.java:119)
    at org.springframework.context.support.ApplicationContextAwareProcessor.postProcessBeforeInitialization(ApplicationContextAwareProcessor.java:94)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:408)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1570)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAutowireCandidates(DefaultListableBeanFactory.java:1192)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1116)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1014)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:545)
    at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:88)
    at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessPropertyValues(AutowiredAnnotationBeanPostProcessor.java:331)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1214)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:543)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538)
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:766)
    at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:361)
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:307)
    at com.wrd.mytrah.GemFireSubject03Application.main(GemFireSubject03Application.java:26)
```

那么怎么解决呢,和上面的问题(问题1)有什么关系

请帮助这个新手..谢谢

【问题讨论】:

    标签: spring-data gemfire spring-data-gemfire


    【解决方案1】:

    1) 您有几个选项可以使用 Gfsh 查看从基于 Spring Data GemFire 的应用程序中持久保存到 GemFire 的数据。

    1.a) 您可以像这样从 gfsh 命令行执行 OQL...

    gfsh&gt;query --query="SELECT * FROM /&lt;your region name here&gt; WHERE &lt;predicates here&gt;"

    例如...

    SELECT c.name FROM /Customers c WHERE c.age &gt; 21

    有关详细信息,请参阅 GemFire 文档...

    1.b) 您还可以选择使用 GemFire 的数据浏览器工具,它是 GemFire 脉冲管理/监控工具的一个组件。

    以下文档解释了如何从 Gfsh...

    启动/启动 Pulse

    基本上...

    gfsh&gt;start pulse

    定位器/管理器启动后。

    2) 至于异常,GemFire 目前有一个错误,即使 GemFire 服务器节点不是“管理器”,它也会尝试加载管理命令类。此异常是良性的,但您可以通过在类路径中包含 Spring Shell 依赖项来消除它。例如,使用 Maven,您将声明以下依赖项...

    <dependency>
      <groupId>org.springframework.shell</groupId>
      <artifactId>spring-shell</artifactId>
      <version>1.0.0.RELEASE</version>
      <scope>runtime</scope>
      <exclusions>
        <exclusion>
          <groupId>org.springframework</groupId>
          <artifactId>spring-core</artifactId>
        </exclusion>
        <exclusion>
          <groupId>org.springframework</groupId>
          <artifactId>spring-context-support</artifactId>
        </exclusion>
      </exclusions>
    </dependency>
    

    如果您没有使用 Maven 或 Gradle,那么您可以按照异常消息状态执行操作,并将 $GEMFIRE_HOME/lib/gfsh-dependencies 放在您的应用程序类路径中(可能在您的 IDE 中)。

    但是,如果您遵循 Spring 指南,那么您使用的是 Maven 或 Gradle。

    希望这会有所帮助!

    干杯, 约翰

    【讨论】:

    • 感谢@John Blum,添加该依赖项有效。但我的第一个问题它不起作用。我的意思是在上面的例子中,link。区域名称是“hello”,所以我尝试查询为 gfsh> query --query=“select * from /hello”。还尝试了 gfsh>list region 它说没有可用的区域。我观察到的一件事是 spring 正在创建自己的 gemfire 服务器。所以,也许 gfsh 不知道那台服务器,或者我不知道到底发生了什么。谢谢
    • 最可能的原因是 Spring GemFire Server 没有连接到您在 Gfsh 中形成的集群。在指南中的示例中添加一个额外的 GemFire "locators" 属性以将其连接到集群是一件简单的事情...github.com/spring-guides/gs-accessing-data-gemfire/blob/master/…。只需添加gemfireProperties.setProperty("locators", "host[port]"),根据您在启动Locator时在Gfsh中使用的参数适当地设置主机和端口。
    • 我还要补充一点,指南中的示例将直接通过 (github.com/spring-guides/gs-accessing-data-gemfire/blob/master/…; 还有这个...github.com/spring-guides/gs-accessing-data-gemfire/blob/master/…) 并退出,然后您可以使用检查任何“你好”区域内容Gfsh。这是因为 GemFire 不会阻止 GemFire 服务器/数据节点关闭(即默认情况下 GemFire 中没有非守护线程)。所以...
    • 您必须阻止示例应用程序(是的,GemFire 服务器对等节点)退出。通常,如果您使用 GemFire 的客户端/服务器拓扑并在 GemFire 服务器/数据节点内启动“缓存服务器”(ServerSocket),非守护线程将阻塞等待客户端连接,从而防止服务器崩溃通过。您也可以简单地等待来自标准输入的输入以指示应用程序停止。希望这会有所帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多