Spring-Data-Gemfire - 无法联系定位器服务.操作超时或定位器不存在



我想连接到一个现有的定位器。
现在我没有客户端服务器。

我启动了一个定位器,端口是40001,server1端口是40411。

GFSH>列表成员  姓名 |编号 ------- |---------------------------------------------- 测试1 |192.168.1.106(test1:1880:定位器):1024 服务器1 |192.168.1.106(服务器1:7532):1025

配置为:

<?xml><util:properties>localhost[40001]0 <gfe:cache><gfe:cache-server><gfe:replicad-region>


错误是:

[info 2017/07/04 23:48:12.546 CST tid=0x1] 默认许可证工作目录为当前工作目录"C:\Users\IBM_ADMIN\Documents\Workspace - Shirley\Workspace_SpringBoot\demo"。 [信息 2017/07/04 23:48:12.547 CST tid=0x1]许可需要 2 毫秒。 [信息 2017/07/04 23:48:12.923 CST tid=0x1]GemFire P2P侦听器于 tcp:///192.168.1.106:53073 开始 [info 2017/07/04 23:48:13.094 CST tid=0x20] 无法连接到定位器本地主机(空):40001 2017-07-04 23:48:16.200 警告 10904 --- [ main] s.c.a.AnnotationConfigApplicationContext:上下文初始化期间遇到异常 - 取消刷新尝试:org.springframework.beans.factory.BeanCreation异常:创建名为"gemfireServer"的 bean 时出错:在设置 bean 属性"cache"时无法解析对 bean 'gemfireCache' 的引用;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为"gemfireCache"的 bean 时出错:FactoryBean 在创建对象时抛出异常;嵌套异常是 com.gemstone.gemfire.GemFireConfigException:无法联系定位器服务。 操作超时或定位器不存在。 配置的定位器列表为"[本地主机(空):40001]"。 2017-07-04 23:48:16.200 警告 10904 --- [ main] o.s.b.f.support.DisposableBeanAdapter : 在名为"gemfireCache"的 Bean 上调用销毁方法失败:com.gemstone.gemfire.cache.CacheClosed异常:尚未创建缓存。 2017-07-04 23:48:16.219 错误 10904 --- [主要] o.s.boot.Spring应用程序:应用程序启动失败 org.springframework.beans.factory.BeanCreationException:创建名为"gemfireServer"的 bean 时出错:设置 bean 属性 'cache' 时,无法解析对 bean 'gemfireCache' 的引用;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为"gemfireCache"的 bean 时出错:FactoryBean 在创建对象时抛出异常;嵌套异常是 com.gemstone.gemfire.GemFireConfigException:无法联系定位器服务。 操作超时或定位器不存在。 配置的定位器列表为"[本地主机(空):40001]"。 at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:359) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE] at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNeed(BeanDefinitionValueResolver.java:108) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1531) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE]at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1276) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:553) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE] at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE] at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE] at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:742) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE] at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:867) ~[spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:543) ~[spring-context-4.3.9.RELEASE.jar:4.3.9.RELEASE] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:693) ~[spring-boot-1.5.4.RELEASE.jar:1.5.4.RELEASE] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:360) ~[spring-boot-1.5.4.RELEASE.jar:1.5.4.RELEASE] at org.springframework.boot.SpringApplication.run(SpringApplication.java:303) ~[spring-boot-1.5.4.RELEASE.jar:1.5.4.RELEASE] at com.demo.server.ServerApplication.main(ServerApplication.java:32) [classes/:na] 由以下原因引起:org.springframework.beans.factory.BeanCreation异常:创建名为"gemfireCache"的 bean 时出错:FactoryBean 在创建对象时抛出异常;嵌套异常是 com.gemstone.gemfire.GemFireConfigException:无法联系定位器服务。 操作超时或定位器不存在。 配置的定位器列表为"[本地主机(空):40001]"。 at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:175) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE] at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:103) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1634) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:254) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE] at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE] at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351) ~[spring-beans-4.3.9.RELEASE.jar:4.3.9.RELEASE] ...省略 16 个常见帧 原因:com.gemstone.gemfire.GemFireConfigException:无法联系定位器服务。 操作超时或定位器不存在。 配置的定位器列表为"[本地主机(空):40001]"。 at com.gemstone.org.jgroups.protocols.TCPGOSSIP.sendGetMembersRequest(TCPGOSSIP.java:222) ~[gemfire-8.2.4.jar:na] at com.gemstone.org.jgroups.protocols.PingSender.run(PingSender.java:85) ~[gemfire-8.2.4.jar:na] 在java.lang.Thread.run(未知来源)~[na:1.8.0_111]

哦,天哪,我对这个问题一无所知。
有人可以帮助我吗?
我只想构建一个客户端-服务器系统。
但是现在我什至无法设置服务器。


更新七月.09 - 2017

好约翰,我尝试过你的例子,但我仍然遇到错误。

首先,我使用 gfsh 启动定位器。

C:\Users\IBM_ADMIN>gfsh _________________________     __ /_____/______/______//____//// __//___ /_____ /_____ ///__//____/ _____///  ///______/_/    /______/_/  /_/   9.0.4 监控和管理关键宝石火 gfsh>start 定位器 --name=GemFireLocator --log-level=config 在 C:\Users\IBM_ADMIN\GemFireLocator... ...... ADMINIB-CI3Q48M[10334] 上的 C:\Users\IBM_ADMIN\GemFireLocator 中的定位器目前处于联机状态。进程 ID: 7256 正常运行时间:8秒 宝石火版本:9.0.4 Java 版本:1.8.0_101 日志文件: C:\Users\IBM_ADMIN\GemFireLocator\GemFireLocator.log JVM 参数: -Dgemfire.enable-cluster-configuration=true -dgemfire.load-cluster-configuration-from-dir=false -dgemfire .log-level=config -Dgemfire.launcher.registerSignalHandlers=true -Djava.awt.headless=true -Dsun.rmi.dgc.server.gcInterva l=9223372036854775806 类路径: C:\Program Files\Java\pivotal-gemfire-9.0.4\lib\geode-core-9.0.4.jar;C:\Program Files\Java\pivotal-gemfire-9 .0.4\lib\geode-dependencies.jar 已成功连接到:JMX 管理器 [主机=ADMINIB-CI3Q48M,端口=1099] GFSH>列表成员  姓名 |编号 -------------- |------------------------------------------------------- 宝石火定位器 |192.168.1.106(宝石火定位器:7256:定位器):1024 gfsh>describe member --name=GemFireLocator 名称 : 宝石火定位器 编号:192.168.1.106(宝石火定位器:7256:定位器):1024 主机 : 阿米尼布-CI3Q48M 地区: PID : 7256 组: 已用堆 : 90M 最大堆 : 1755M 工作目录 : C:\用户\IBM_ADMIN\宝石火定位器 日志文件:C:\Users\IBM_ADMIN\GemFireLocator\GemFireLocator.log 定位符 : 192.168.1.106[10334]

然后正如您在 spring-boot-gemfire-server-example 中提到的,我尝试运行bootRun$gradlew

但错误显示:原因:java.net.BindException:地址已在使用中:JVM_Bind

[info 2017/07/09 14:57:24.270 CST tid=0x1] 默认许可证工作目录到当前工作目录"C:\Users IBM_ADMIN\Documents\Workspace - Shirley\Workspace_SpringBoot\spring-boot-gemfire-server-example"。 [信息 2017/07/09 14:57:24.273 CST tid=0x1]许可需要 4 毫秒。 [信息 2017/07/09 14:57:24.324 CST tid=0x1]在本地主机/127.0.0 上启动分发定位器的对等位置。 [10334] [信息 2017/07/09 14:57:24.333 CST tid=0x1]在本地主机上启动分发定位器/127.0.0.1[10334] [信息 2017/07/09 14:57:24.347 CST tid=0x1]本地主机/127.0.0.1[10334] 上的分发定位器已停止 [主要]WARN org.springframework.context.annotation.AnnotationConfigApplicationContext - 在 co 期间遇到的异常 文本初始化 - 取消刷新尝试:org.springframework.beans.factory.UnsatisfiedDependencyException: Err r 创建名称为"gemfireCacheServer"的 bean 在 org.example.SpringBootGemFireServer 中定义: 未满足的依赖关系 e 按下方法"gemfireCacheServer"参数 0;嵌套异常是org.springframework.beans.factory.BeanCrea ionException:创建名为"gemfireCache"的 bean 时出错:FactoryBean 在创建对象时抛出异常;嵌套超出 tion is com.gemstone.gemfire.GemFireIOException:启动定位器服务时出现问题 [主要]WARN org.springframework.beans.factory.support.DisposableBeanAdapter - 销毁方法的调用在 be 上失败 n 名称为 'gemfireCache': com.gemstone.gemfire.cache.CacheClosedException: 尚未创建缓存。 [主要]INFO org.springframework.boot.autoconfigure.logging.AutoConfigurationReportLoggingInitializer - 启动应用程序上下文时出错。要显示自动配置报告,请在启用"调试"的情况下重新运行应用程序 . [主要]ERROR org.springframework.boot.SpringApplication - 应用程序启动失败 org.springframework.beans.factory.UnsatisfiedDependencyException: 创建名为 'gemfireCacheServer' 的 bean 时出错 ined in org.example.SpringBootGemFireServer: 通过方法 'gemfireCacheServer' 参数表达的未满足依赖关系 之三 0;嵌套异常是 org.springframework.beans.factory.BeanCreationException:创建名为 'gemf 的 bean 时出错 reCache':FactoryBean 在对象创建时抛出异常;嵌套的例外是com.gemstone.gemfire.GemFireIOException: 罗布莱姆启动定位器服务 at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:7 9) at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResol 呃.java:467) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(A stractAutowire有能力的豆厂.java:1128) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAuto 愤怒的豆子工厂.java:1022) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCa 豆厂.java:512) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapa 乐豆厂.java:482) at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) at org.springframework.beans.factory.suefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.ja 答: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(DefaultListabl 豆厂.java:735) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractAppli 上下文.java:866) at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761) at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:371) at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1186) at org.springframework.boot.SpringApplication.run(SpringApplication.java:1175) at org.example.SpringBootGemFireServer.main(SpringBootGemFireServer.java:52) 原因:org.springframework.beans.factory.BeanCreation异常:创建名为"gemfireCache"的 bean 时出错:Facto yBean 在对象创建时抛出异常;嵌套异常是com.gemstone.gemfire.GemFireIOException:启动时出现问题 定位器服务 at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanR gistry支持.java:175) at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanReg strySupport.java:103) at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.j VA:1606) at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:317) at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)  rg.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate (DependencyDescriptor.java:207) at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBean 演员.java:1131) at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFa 保守党.java:1059) at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.j 年纬:835) at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:7 1) ...还有 18 个 原因:com.gemstone.gemfire.GemFireIOException:启动定位器服务时出现问题 at com.gemstone.gemfire.distributed.internal.InternalDistributedSystem.startInitLocator(InternalDistributedSyst 米.java:847) at com.gemstone.gemfire.distributed.internal.InternalDistributedSystem.initialize(InternalDistributedSystem.jav :606) at com.gemstone.gemfire.distributed.internal.InternalDistributedSystem.newInstance(InternalDistributedSystem.ja 答:281) at com.gemstone.gemfire.distributed.DistributedSystem.connect(DistributedSystem.java:1651) at com.gemstone.gemfire.cache.CacheFactory.create(CacheFactory.java:227) at org.springframework.data.gemfire.CacheFactoryBean.createCache(CacheFactoryBean.java:356) at org.springframework.data.gemfire.CacheFactoryBean.resolveCache(CacheFactoryBean.java:250) at org.springframework.data.gemfire.CacheFactoryBean.init(CacheFactoryBean.java:191) at org.springframework.data.gemfire.CacheFactoryBean.getObject(CacheFactoryBean.java:178) at org.springframework.data.gemfire.CacheFactoryBean.getObject(CacheFactoryBean.java:88) at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanR 支持.java:168) ...还有 27 个 原因:java.net.BindException:无法在本地主机上创建服务器套接字/127.0.0.1[10,334] at com.gemstone.gemfire.internal.SocketCreator.createServerSocket(SocketCreator.java:829) at com.gemstone.gemfire.internal.SocketCreator.createServerSocket(SocketCreator.java:789) at com.gemstone.org.jgroups.stack.tcpserver.TcpServer.startServerThread(TcpServer.java:179) at com.gemstone.org.jgroups.stack.tcpserver.TcpServer.start(TcpServer.java:168) at com.gemstone.gemfire.distributed.internal.InternalLocator.startTcpServer(InternalLocator.java:629) at com.gemstone.gemfire.distributed.internal.InternalLocator.startPeerLocation(InternalLocator.java:698) at com.gemstone.gemfire.distributed.internal.InternalDistributedSystem.startInitLocator(InternalDistributedSyst 米.java:832) ...37 更多 原因:java.net.BindException:地址已在使用中:JVM_Bind at java.net.DualStackPlainSocketImpl.bind0(Native Method) at java.net.DualStackPlainSocketImpl.socketBind(DualStackPlainSocketImpl.java:106) at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:387) at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:190)at java.net.ServerSocket.bind(ServerSocket.java:375) at com.gemstone.gemfire.internal.SocketCreator.createServerSocket(SocketCreator.java:826) ...还有 43 项 :引导运行失败 失败:生成失败,出现异常。 * 出了什么问题: 任务":bootRun"的执行失败。> 进程"命令'C:\程序文件\Java\jdk1.8.0_101\bin\java.exe"以非零退出值 1 完成 *尝试: 使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获取更多日志输出。 构建失败 总时间:14.9秒

然后,我使用 gfsh 停止定位器。

我尝试直接运行您的示例(没有先启动定位器)。

难以置信,它成功了。

似乎您的示例是启动新的 Gemfire 定位器和服务器,而不是连接到现有的定位器。

[info 2017/07/09 15:19:16.930 CST tid=0x1] 默认许可证工作目录到当前工作目录"C:\Users\ IBM_ADMIN\Documents\Workspace - Shirley\Workspace_SpringBoot\spring-boot-gemfire-server-example"。 [信息 2017/07/09 15:19:16.935 CST tid=0x1]许可需要 7 毫秒。 [信息 2017/07/09 15:19:17.000 CST tid=0x1]本地主机上分发定位器的起始对等位置/127.0.0.1 [10334] [信息 2017/07/09 15:19:17.016 CST tid=0x1]在本地主机上启动分发定位器/127.0.0.1[10334] [info 2017/07/09 15:19:18.376 CST tid=0x1]GemFire P2P侦听器于 tcp:///192.168.1.106:45643 启动 [info 2017/07/09 15:19:18.624 CST tid=0x22] 定位器本地主机(空):10334 成员地址为 ADMINIB-CI3 Q48M(弹簧启动宝石火服务器):37651 [info 2017/07/09 15:19:25.674 CST tid=0x25] 定位器本地主机(空):10334 成员地址为 ADMINIB-CI3 Q48M(弹簧启动宝石火服务器):37651 [info 2017/07/09 15:19:30.686 CST tid=0x1]成员:主要成员现在是ADMINIB-CI3Q48M(SpringBootGemFireServer ):37651 [信息 2017/07/09 15:19:30.701 CST tid=0x1]这个成员,ADMINIB-CI3Q48M(SpringBootGemFireServer):37651,是成为 吴氏集团协调员。 [信息 2017/07/09 15:19:30.710 CST tid=0x1]以 ID ADMINIB-CI3Q48M(SpringBootGemFireServe )成为会员 r):37651。 [信息 2017/07/09 15:19:30.712 CST tid=0x1]启动分发管理器 ADMINIB-CI3Q48M(SpringBootGemFireServer):37651. (取 12629/毫秒) [信息 2017/07/09 15:19:30.715 CST tid=0x1]初始(成员管理器)视图 = [ADMINIB-CI3Q48M(SpringBootGemFire 服务器:37651{铅}] [信息 2017/07/09 15:19:30.715 CST tid=0x1]接纳会员:37651>。  现在有 1 个非管理员成员。 [info 2017/07/09 15:19:30.716 CST tid=0x1]ADMINIB-CI3Q48M(SpringBootGemFireServer):37651是长老和 e 唯一成员。 [信息 2017/07/09 15:19:31.081 CST tid=0x1]没有收到任何其他系统的回复。我是第一个。 [信息 2017/07/09 15:19:31.086 CST tid=0x1]本地主机上分发定位器的起始服务器位置/127.0.0 .1[10334] [info 2017/07/09 15:19:31.358 CST tid=0x1]初始化区域 _monitoringRegion_192.168.1.10637651 [信息 2017/07/09 15:19:31.364 CST tid=0x1]初始化区域 _monitoringRegion_192.168.1.10637651 comp 莱特 [信息 2017/07/09 15:19:32.857 CST tid=0x1]初始化区域 Pdx类型 [信息 2017/07/09 15:19:32.857 CST tid=0x1]区域 PdxType 的初始化完成 [主要]INFO org.springframework.data.gemfire.CacheFactoryBean - 连接到分布式系统 [SpringBootGemFireServer ] 作为成员 [ADMINIB-CI3Q48M(SpringBootGemFireServer):37651]在主机 [ADMINIB-CI3Q] 上具有角色 [[]] 的组中 [[]] 48M]具有PID [0]。 [主要]INFO org.springframework.data.gemfire.CacheFactoryBean - 新建的 GemFire v.8.2.0 Cache [SpringBootGemFireServ 呃]。 [信息 2017/07/09 15:19:32.935 CST tid=0x1]初始化区域__PR [信息 2017/07/09 15:19:32.935 CST tid=0x1]区域初始化__PR完成 [信息 2017/07/09 15:19:32.986 CST tid=0x1]分区区域/阶乘出生时 prId=1 标识:#Factorials [主要]INFO org.springframework.data.gemfire.PartitionedRegionFactoryBean - 创建新的缓存区域[阶乘]。 [主要]INFO org.springframework.jmx.export.annotation.AnnotationMBeanExporter - 在 st 上注册 bean for JMX 暴露 阿图普 [主要]INFO org.springframework.context.support.DefaultLifecycleProcessor - 在第 2147483647 阶段启动 bean [信息 2017/07/09 15:19:33.379 CST tid=0x1]绑定到地址 localhost/127.0.0.1 的网桥服务器连接侦听器 :40404,积压1,000。 [info 2017/07/09 15:19:33.396 CST tid=0x1]客户端运行状况监视器线程 ping 之间的最大允许时间:15,000 [信息 2017/07/09 15:19:33.425 CST tid=0x1]缓存服务器配置:端口 = 40404 最大连接数 = 800 最大线程数 S=0 按订阅通知=真 套接字缓冲区大小=32768 ping 之间的最大时间 = 15000 最大消息计数=230000 M essage-time-to-生存=180 逐出策略=无 容量=1 溢出目录=。groups=[] loadProbe=ConnectionCountProbe lo adPollInterval=5000 tcpNoDelay=true[主要]INFO org.example.SpringBootGemFireServer - 在 20.399 秒内启动了 SpringBootGemFireServer(JVM 运行 20. 823) [信息 2017/07/09 15:21:15.585 CST tid=0x3e](tid=62 msgId=0)正在执行的列表成员 s [信息 2017/07/09 15:22:26.546 CST tid=0x3e](tid=62 msgId=1)执行描述我 mber --名称 宝石火定位器> 建筑 80%> :bootRun

我可以使用 gfsh 将您的示例代码创建的定位器连接到定位器。

gfsh>gfsh>停止定位器 --name GemFireLocator 停止在 ADMINIB-CI3Q48M[10334] 上的 C:\Users\IBM_ADMIN\GemFireLocator 中作为 GemFireLocator 运行的定位器... 进程 ID: 7256 日志文件: C:\Users\IBM_ADMIN\GemFireLocator\GemFireLocator.log .... 不再连接到ADMINIB-CI3Q48M[1099]。 GFSH>GFSH>List 成员 "列出成员"不可用。原因:需要连接。 GFSH>连接到 loaclhost[10334] 连接到定位器 [主机=本地主机,端口=10334] .. 连接到管理器 [主机=ADMINIB-CI3Q48M,端口=1199] .. 已成功连接到:[主机=ADMINIB-CI3Q48M,端口=1199] GFSH>列表成员 会员数 : 1 協調員:SpringBootGemFireServer (ADMINIB-CI3Q48M(SpringBootGemFireServer):37651)  姓名 |编号 ----------------------- |-------------------------------------------------- 春季引导宝石消防服务器 |ADMINIB-CI3Q48M(SpringBootGemFireServer):37651 gfsh>describe member --name=SpringBootGemFireServer 名称 : SpringBootGemFireServer 编号 : ADMINIB-CI3Q48M(SpringBootGemFireServer):37651 主机 : 阿米尼布-CI3Q48M 地区 : 阶乘 PID : 0 组: 已用堆 : 117M 最大堆 : 1755M 工作目录 : C:\用户\IBM_ADMIN\文档\工作区 - 雪莉\Workspace_SpringBoot\弹簧-引导-宝石火-服务器-示例 日志文件:C:\用户\IBM_ADMIN\文档\工作区 - 雪莉\Workspace_SpringBoot\弹簧引导宝石火服务器示例 定位器 : 本地主机[10334] 缓存服务器信息 服务器绑定:本地主机 服务器端口 : 40404 运行 : 真 客户端连接 : 0 GFSH>列出区域 地区列表 --------------- 阶乘 gfsh>描述区域 --name=/阶乘 .......................................................... 名称 : 阶乘 数据策略:分区 主办会员 : SpringBootGemFireServer 托管成员共享的非默认属性  类型 |姓名 |价值 ------ |---- |----- 地区 |尺寸 |0

你能帮忙检查一下吗?

好吧,在这种情况下,堆栈跟踪非常有启发性。

从本质上讲,Spring容器无法创建 GemFire"对等"cache(基于SpringXML 配置中的<gfe:cache>元素)的实例,因为 GemFire 无法找到您从Gfsh启动的定位器......

Caused by: com.gemstone.gemfire.GemFireConfigException: Unable to contact a Locator service.  Operation either timed out or Locator does not exist.  Configured list of locators is "[localhost(null):40001]".
at com.gemstone.org.jgroups.protocols.TCPGOSSIP.sendGetMembersRequest(TCPGOSSIP.java:222) ~[gemfire-8.2.4.jar:na]
at com.gemstone.org.jgroups.protocols.PingSender.run(PingSender.java:85) ~[gemfire-8.2.4.jar:na]
at java.lang.Thread.run(Unknown Source) ~[na:1.8.0_111]

因此。。。

c.g.g.GemFireConfigException:无法联系定位器服务。操作超时或定位器不存在。

它继续指出...

配置的定位器列表为"[本地主机(空):40001]"。

gemfirePropertiesBean 定义(定义"GemFire 属性")中的locators属性是希望加入集群的待处理 GemFire 对等方用来查找 GemFire 定位器(以及要加入的集群)的属性。 实际上,1 个或多个定位器端点(例如host1[port1],host2[port2],...,hostN[portN]) 定义挂起的对等成员将加入的集群。

SpringXML 配置中gemfirePropertiesBean 定义的格式错误的 XML 之外,locators属性的值似乎是正确的。 您有一个在本地运行的"定位器",至少根据您的陈述侦听端口 40001。 不过,这在list members命令中并不明显。

所以。。。

  1. 拳头,我假设"test1"是你的定位器?

  2. 而且,您使用...gfsh> start locator --name=tests1 --port=40001 ...(我还建议用--log-level=config调高日志级别)

  3. 最后,我假设"server1"确实是"宝石火服务器"?

例如,如果"'test1" is indeed your Locator, then you can get the runtime information for the Locator using状态定位器'...

gfsh>status locator --name=test1
Locator in /Users/jblum/pivdev/lab/test1 on 10.99.199.10[40001] as test1 is currently online.
Process ID: 89632
Uptime: 1 minute 15 seconds
GemFire Version: 9.0.4
Java Version: 1.8.0_121
Log File: /Users/jblum/pivdev/lab/test1/test1.log
JVM Arguments: -Dgemfire.enable-cluster-configuration=true -Dgemfire.load-cluster-configuration-from-dir=false -Dgemfire.log-level=config -Dgemfire.launcher.registerSignalHandlers=true -Djava.awt.headless=true -Dsun.rmi.dgc.server.gcInterval=9223372036854775806
Class-Path: /Users/jblum/Downloads/Pivotal/GemStone/Products/PivotalGemFire/pivotal-gemfire-9.0.4/lib/geode-core-9.0.4.jar:/Users/jblum/Downloads/Pivotal/GemStone/Products/PivotalGemFire/pivotal-gemfire-9.0.4/lib/geode-dependencies.jar
Cluster configuration service is up and running.

现在,我有一个项目,包括文档/说明,您可以使用连接 GemFireCacheServer,配置了 Spring 的对等缓存应用程序(Data GemFire),并使用Spring Boot引导,可在此处获得。

我的"tests1"定位器已经在运行,如上所示的status locator --name=test1Gfsh命令。 如果我在启动我的 Spring BootGemFire 对等缓存CacheServer应用程序之前列出成员,您会看到这个...

gfsh>list members
Name  | Id
----- | ----------------------------------------------
test1 | 10.99.199.10(test1:89632:locator)<ec><v0>:1024

然后,当我启动我的嵌入式服务器时,你会看到这个...

gfsh>list members
Name           | Id
----------------------- | --------------------------------------------------------
test1                   | 10.99.199.10(test1:89632:locator)<ec><v0>:1024
SpringBootGemFireServer | 10.99.199.10(SpringBootGemFireServer:89790)<ec><v1>:1025

注意:我从IDE(IntelliJ IDEA)内部运行服务器。 当然,它也可以从命令行工作。

注意:由于定位器在默认端口(即 10334)上运行,因此需要在运行服务器之前将自定义应用程序spring.gemfire.locatorsJVM系统属性设置为"localhost[40001]"。 此属性转化为 GemFire 在这里和这里locators属性。

由于list members显示了两个 GemFire 进程(定位器 + 服务器),因此您知道服务器已根据定位器加入集群。

同样,请随意参考我的例子。

希望这有帮助!

-John

好的,首先,当您启动 GemFire 定位器(即使用 Gfsh 的">GemFireLocator")时,您使用了以下Gfsh命令...

gfsh> 起始定位器 --name=GemFireLocator --log-level=config

这导致在默认端口10334(不是您之前所述的端口 40001)上启动定位器,但这很好;以这种方式运行示例更容易。

这从describe member命令中也很明显......

gfsh>描述成员 --name=GemFireLocator

这导致...

Name        : GemFireLocator
Id          : 192.168.1.106(GemFireLocator:7256:locator):1024
Host        : ADMINIB-CI3Q48M
Regions     :
PID         : 7256
Groups      :
Used Heap   : 90M
Max Heap    : 1755M
Working Dir : C:UsersIBM_ADMINGemFireLocator
Log file    : C:UsersIBM_ADMINGemFireLocatorGemFireLocator.log
Locators    : 192.168.1.106[10334]

最后一行...

Locators    : 192.168.1.106[10334]

。显示定位器正在侦听绑定到地址192.168.1.106的端口10334

然后,您继续使用我的示例启动GemFire 服务器。 我怀疑您不仅从命令行运行了$ gradlew bootRun,而且还按照说明得出结论,包括"使用嵌入式 GemFire/Geode 定位器运行"......是的?

实际上,从您发布的新堆栈跟踪中可以明显看出...

...
...
Caused by: java.net.BindException: Failed to create server socket on  localhost/127.0.0.1[10,334]
at com.gemstone.gemfire.internal.SocketCreator.createServerSocket(SocketCreator.java:829)
at com.gemstone.gemfire.internal.SocketCreator.createServerSocket(SocketCreator.java:789)
at com.gemstone.org.jgroups.stack.tcpserver.TcpServer.startServerThread(TcpServer.java:179)
at com.gemstone.org.jgroups.stack.tcpserver.TcpServer.start(TcpServer.java:168)
at com.gemstone.gemfire.distributed.internal.InternalLocator.startTcpServer(InternalLocator.java:629)
at com.gemstone.gemfire.distributed.internal.InternalLocator.startPeerLocation(InternalLocator.java:698)
at com.gemstone.gemfire.distributed.internal.InternalDistributedSystem.startInitLocator(InternalDistributedSyst
m.java:832)
... 37 more
Caused by: java.net.BindException: Address already in use: JVM_Bind
at java.net.DualStackPlainSocketImpl.bind0(Native Method)
at java.net.DualStackPlainSocketImpl.socketBind(DualStackPlainSocketImpl.java:106)
at java.net.AbstractPlainSocketImpl.bind(AbstractPlainSocketImpl.java:387)
at java.net.PlainSocketImpl.bind(PlainSocketImpl.java:190)
at java.net.ServerSocket.bind(ServerSocket.java:375)
at com.gemstone.gemfire.internal.SocketCreator.createServerSocket(SocketCreator.java:826)
... 43 more

因此。。。

Caused by: java.net.BindException: Failed to create server socket on  localhost/127.0.0.1[10,334]

和。。。

Caused by: java.net.BindException: Address already in use: JVM_Bind

不要将"创建服务器套接字"与启动 GemFire 服务器混淆。 在Java中(您可能已经知道),每当绑定"客户端"应用程序的地址/端口以进行连接时,都会使用java.net.ServerSocket。

在这种情况下,定位器是一个"服务器",为想要连接到定位器定义的 GemFire "集群"的任何客户端(例如Gfsh或其他对等成员,如 GemFire(缓存)服务器)创建一个java.net.ServerSocket

而且,正如您所看到的,当您停止第一个定位器("GemFireLocator")时,您最初在Gfsh中启动,然后自行运行示例(并且它成功启动!),当您"描述"成员时,使用...

gfsh> describe member --name=SpringBootGemFireServer

Name           | Id
----------------------- | --------------------------------------------------
SpringBootGemFireServer | ADMINIB-CI3Q48M(SpringBootGemFireServer):37651
gfsh>describe member --name=SpringBootGemFireServer
Name        : SpringBootGemFireServer
Id          : ADMINIB-CI3Q48M(SpringBootGemFireServer):37651
Host        : ADMINIB-CI3Q48M
Regions     : Factorials
PID         : 0
Groups      :
Used Heap   : 117M
Max Heap    : 1755M
Working Dir : C:UsersIBM_ADMINDocumentsWorkspace - ShirleyWorkspace_SpringBootspring-boot-gemfire-server-example
Log file    : C:UsersIBM_ADMINDocumentsWorkspace - ShirleyWorkspace_SpringBootspring-boot-gemfire-server-example
Locators    : localhost[10334]
Cache Server Information
Server Bind              : localhost
Server Port              : 40404
Running                  : true
Client Connections       : 0

您可以从describe member命令中看到一些有趣的信息。

  1. 首先,也是最重要的,你会看到...

    Locators    : localhost[10334]
    

这是"嵌入式"定位器。 它正在侦听端口10334,这就是为什么您在"GemFireLocator"首次运行时遇到j.n.BindException的原因。

这意味着设置了spring.gemfire.start-locator应用程序属性,默认情况下,我看到它是。 这反过来会设置 GemFire 属性,start-locator(从应用程序属性),然后导致 GemFire 启动"嵌入式"定位器。

因此,当您在默认端口10334上启动"GemFireLocator"以来,这会导致"GemFireLocator"运行时出现端口冲突。

如果您在其他端口上启动了"GemFireLocator"或"嵌入式"定位器,则不会遇到此问题。

您可以使用Gfsh在不同的端口上启动定位器...

gfsh> 启动定位器 --name=GemFireLocator --port=11235 --log-level=config

但是,如果您想将"SpringBootGemFireServer"连接到"现有"定位器(即在Gfsh中启动的"GemFireLocator"),则必须更改spring.gemfire.locators应用程序属性以匹配(例如localhost[11235])。 这反过来又被捕获并设置在这里。

或者,您可以将spring.gemfire.start-locator应用程序属性的值更改为...localhost[12480],或者干脆把它注释掉。 这也将避免j.n.BindException,因为外部定位器("GemFireLocator")和"嵌入式"定位器不会在端口上发生冲突。

从技术上讲,在我的示例中,默认情况下应该注释掉spring.gemfire.start-locator。 我道歉。

  1. 关于"SpringBootGemFireServer"的其他有趣的花絮...您有一个可用于缓存客户端的CacheSever(即ClientCache)要连接的应用程序,因此...

    Cache Server Information
    Server Bind              : localhost
    Server Port              : 40404
    Running                  : true
    Client Connections       : 0
    

这来自这里。

  1. 当然,你会看到"阶乘"区域...

    Regions     : Factorials
    

所以,关于(现在可能很明显)...

难以置信,它成功了。

似乎您的示例是启动新的 Gemfire 定位器和服务器,而不是连接到现有的定位器。

SpringBootGemFireServer成功启动是因为您 1) 停止了您的"GemFireLocator"和 2)SpringBootGemFireServer正在运行"嵌入式"定位器,从这一点可以明显看出。

如果 SpringBootGemFireServer没有运行"嵌入式"定位器(服务),那么您将无法连接(在您停止"GemFireLocator"之后),但您确实...

gfsh>stop locator --name GemFireLocator
Stopping Locator running in C:UsersIBM_ADMINGemFireLocator on ADMINIB-CI3Q48M[10334] as GemFireLocator...
Process ID: 7256
Log File: C:UsersIBM_ADMINGemFireLocatorGemFireLocator.log
....
No longer connected to ADMINIB-CI3Q48M[1099].
gfsh>gfsh>list members
"list members" is not available. Reason: Requires connection.
gfsh>connect
Connecting to Locator at [host=localhost, port=10334] ..
Connecting to Manager at [host=ADMINIB-CI3Q48M, port=1199] ..
Successfully connected to: [host=ADMINIB-CI3Q48M, port=1199]

"SpringBootGemFireServer"也是一个"管理器",这实际上是你可以在Gfsh中连接的原因。

当您在没有选项的情况下使用Gfshconnect时,默认情况下,connect 会尝试在侦听端口10334的"本地主机"上查找定位器,因此...

Connecting to Locator at [host=localhost, port=10334]

但是,定位器的职责是在集群中查找现有管理器,并告诉客户端(即Gfsh)在哪里可以找到它(即 IP 地址/端口)。 这就是为什么你会看到后续的连接...

Connecting to Manager at [host=ADMINIB-CI3Q48M, port=1199] ..

所有这一切都是由此实现的。 如果集群中还没有现有的"管理器",则定位器将被编程/配置为成为"管理器"。jmx-managerGemFire 属性使集群中的任何成员都能"成为"管理器。 但是,这并不意味着默认情况下它将作为管理器启动。 要强制成员在启动时成为管理器,您还必须设置jmx-manager-startGemFire 属性,就像我对 SpringBootGemFireServer 所做的那样(当然,默认情况下,我将值默认为false,因此它不会在启动时作为管理器启动)。 无论如何。。。

如果您想连接到以Gfsh开头的外部"现有"定位器(例如"GemFireLocator"),那么......

  1. 跑。。。

gfsh> start locator --name=GemFireLocator --log-level=config。

注意:请记住,除非您为start locator命令指定 --port 选项,否则 GemFireLocator 将侦听默认端口 (10334)。

  1. 确保在"SpringBootGemFireServer"应用程序选取的application.properties文件中注释掉第 8 行。 或者,您可以通过将spring.gemfire.start-locator应用程序属性设置为(例如...localhost[11235].

  2. (
  3. 可选)如果您为"外部"/"现有"定位器设置了端口(即"GemFireLocator"从Gfsh启动),请确保将spring.gemfire.locators应用程序属性设置为匹配。

希望这有帮助!

问候 -John

最新更新