Spring-Data-Gemfire-无法联系定位器服务.操作超时或定位器不存在 [英] Spring-Data-Gemfire - Unable to contact a Locator service. Operation either timed out or Locator does not exist
问题描述
我想连接到现有的定位器.
现在我没有客户端服务器.
I want to connect to a exist locator.
Now I don't have client-server.
我启动了一个定位器,端口为40001,server1端口为40411.
I started a locator,port is 40001, server1 port is 40411.
gfsh>list members
Name | Id
------- | ----------------------------------------------
test1 | 192.168.1.106(test1:1880:locator):1024
server1 | 192.168.1.106(server1:7532):1025
配置为:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:gfe-data="http://www.springframework.org/schema/data/gemfire"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:gfe="http://www.springframework.org/schema/gemfire"
xmlns:repository="http://www.springframework.org/schema/data/repository"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/gemfire http://www.springframework.org/schema/gemfire/spring-gemfire.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/data/gemfire http://www.springframework.org/schema/data/gemfire/spring-data-gemfire.xsd
http://www.springframework.org/schema/gemfire http://www.springframework.org/schema/data/repository/spring-repository.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd">
<util:properties id="gemfireProperties">
<prop key="locators">localhost[40001]
<prop key="mcast-port">0
</util:properties>
<gfe:cache properties-ref="gemfireProperties"/>
<gfe:cache-server port="40411" />
<bean id="portGenerator" class="com.demo.server.ServerPortGenerator" />
<gfe:replicated-region id="Person"/>
</beans>
错误是:
[info 2017/07/04 23:48:12.546 CST tid=0x1] Defaulting license-working-dir to current working directory "C:\Users\IBM_ADMIN\Documents\Workspace - Shirley\Workspace_SpringBoot\demo".
[info 2017/07/04 23:48:12.547 CST tid=0x1] Licensing required 2 milliseconds.
[info 2017/07/04 23:48:12.923 CST tid=0x1] GemFire P2P Listener started on tcp:///192.168.1.106:53073
[info 2017/07/04 23:48:13.094 CST tid=0x20] unable to connect to locator localhost(null):40001
2017-07-04 23:48:16.200 WARN 10904 --- [ main] s.c.a.AnnotationConfigApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'gemfireServer': Cannot resolve reference to bean 'gemfireCache' while setting bean property 'cache'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'gemfireCache': FactoryBean threw exception on object creation; nested exception is 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]".
2017-07-04 23:48:16.200 WARN 10904 --- [ main] o.s.b.f.support.DisposableBeanAdapter : Invocation of destroy method failed on bean with name 'gemfireCache': com.gemstone.gemfire.cache.CacheClosedException: A cache has not yet been created.
2017-07-04 23:48:16.219 ERROR 10904 --- [ main] o.s.boot.SpringApplication : Application startup failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'gemfireServer': Cannot resolve reference to bean 'gemfireCache' while setting bean property 'cache'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'gemfireCache': FactoryBean threw exception on object creation; nested exception is 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 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.resolveValueIfNecessary(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]
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'gemfireCache': FactoryBean threw exception on object creation; nested exception is 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 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 common frames omitted
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]
我的天哪,我对这个问题一无所知.
有人可以帮助我吗?
我只想构建一个客户端-服务器系统.
但是现在我什至无法设置服务器.
Oh my god, I have no idea for this problem.
Anyone who can help me ?
I just want to build a client-server system.
But now I even couldn't to set-up the server.
约翰,您好,我尝试过您的示例,但仍然遇到错误.
首先,我使用gfsh启动定位器.
First, I use gfsh to start a locator.
C:\Users\IBM_ADMIN>gfsh
_________________________ __
/ _____/ ______/ ______/ /____/ /
/ / __/ /___ /_____ / _____ /
/ /__/ / ____/ _____/ / / / /
/______/_/ /______/_/ /_/ 9.0.4
Monitor and Manage Pivotal GemFire
gfsh>start locator --name=GemFireLocator --log-level=config
Starting a Geode Locator in C:\Users\IBM_ADMIN\GemFireLocator...
......
Locator in C:\Users\IBM_ADMIN\GemFireLocator on ADMINIB-CI3Q48M[10334] as GemFireLocator is currently online.
Process ID: 7256
Uptime: 8 seconds
GemFire Version: 9.0.4
Java Version: 1.8.0_101
Log File: C:\Users\IBM_ADMIN\GemFireLocator\GemFireLocator.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.gcInterva
l=9223372036854775806
Class-Path: 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
Successfully connected to: JMX Manager [host=ADMINIB-CI3Q48M, port=1099]
gfsh>list members
Name | Id
-------------- | -------------------------------------------------------
GemFireLocator | 192.168.1.106(GemFireLocator:7256:locator):1024
gfsh>describe member --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:\Users\IBM_ADMIN\GemFireLocator
Log file : C:\Users\IBM_ADMIN\GemFireLocator\GemFireLocator.log
Locators : 192.168.1.106[10334]
然后如您在 spring-boot-gemfire-server-例如,我尝试运行 $ gradlew bootRun .
And then as you mentioned in the spring-boot-gemfire-server-example, I tried to run $gradlew bootRun.
但是错误显示: 原因:java.net.BindException:已使用的地址:JVM_Bind
[info 2017/07/09 14:57:24.270 CST tid=0x1] Defaulting license-working-dir to current working directory "C:\Users
IBM_ADMIN\Documents\Workspace - Shirley\Workspace_SpringBoot\spring-boot-gemfire-server-example".
[info 2017/07/09 14:57:24.273 CST tid=0x1] Licensing required 4 milliseconds.
[info 2017/07/09 14:57:24.324 CST tid=0x1] Starting peer location for Distribution Locator on localhost/127.0.0.
[10334]
[info 2017/07/09 14:57:24.333 CST tid=0x1] Starting Distribution Locator on localhost/127.0.0.1[10334]
[info 2017/07/09 14:57:24.347 CST tid=0x1] Distribution Locator on localhost/127.0.0.1[10334] is stopped
[main] WARN org.springframework.context.annotation.AnnotationConfigApplicationContext - Exception encountered during co
text initialization - cancelling refresh attempt: org.springframework.beans.factory.UnsatisfiedDependencyException: Err
r creating bean with name 'gemfireCacheServer' defined in org.example.SpringBootGemFireServer: Unsatisfied dependency e
pressed through method 'gemfireCacheServer' parameter 0; nested exception is org.springframework.beans.factory.BeanCrea
ionException: Error creating bean with name 'gemfireCache': FactoryBean threw exception on object creation; nested exce
tion is com.gemstone.gemfire.GemFireIOException: Problem starting a locator service
[main] WARN org.springframework.beans.factory.support.DisposableBeanAdapter - Invocation of destroy method failed on be
n with name 'gemfireCache': com.gemstone.gemfire.cache.CacheClosedException: A cache has not yet been created.
[main] INFO org.springframework.boot.autoconfigure.logging.AutoConfigurationReportLoggingInitializer -
Error starting ApplicationContext. To display the auto-configuration report re-run your application with 'debug' enable
.
[main] ERROR org.springframework.boot.SpringApplication - Application startup failed
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'gemfireCacheServer' de
ined in org.example.SpringBootGemFireServer: Unsatisfied dependency expressed through method 'gemfireCacheServer' param
ter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'gemf
reCache': FactoryBean threw exception on object creation; nested exception is com.gemstone.gemfire.GemFireIOException:
roblem starting a locator service
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:7
9)
at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResol
er.java:467)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(A
stractAutowireCapableBeanFactory.java:1128)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAuto
ireCapableBeanFactory.java:1022)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCa
ableBeanFactory.java:512)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapa
leBeanFactory.java:482)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.suefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.ja
a: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
BeanFactory.java:735)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractAppli
ationContext.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)
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'gemfireCache': Facto
yBean threw exception on object creation; nested exception is com.gemstone.gemfire.GemFireIOException: Problem starting
a locator service
at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanR
gistrySupport.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
actory.java:1131)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFa
tory.java:1059)
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.j
va:835)
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:7
1)
... 18 more
Caused by: com.gemstone.gemfire.GemFireIOException: Problem starting a locator service
at com.gemstone.gemfire.distributed.internal.InternalDistributedSystem.startInitLocator(InternalDistributedSyst
m.java:847)
at com.gemstone.gemfire.distributed.internal.InternalDistributedSystem.initialize(InternalDistributedSystem.jav
:606)
at com.gemstone.gemfire.distributed.internal.InternalDistributedSystem.newInstance(InternalDistributedSystem.ja
a: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
gistrySupport.java:168)
... 27 more
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
:bootRun FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':bootRun'.
> Process 'command 'C:\Program Files\Java\jdk1.8.0_101\bin\java.exe'' finished with non-zero exit value 1
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 14.9 secs
然后,我使用gfsh 停止了定位器.
And then, I used gfsh to stopped the locator.
我试图直接运行您的示例(首先不启动定位器).
I tried to run your example directly ( without start a locator first ).
令人难以置信,它成功了.
Unbelievable, it succeed.
您的示例似乎是启动新的Gemfire定位器和服务器,而不是连接到现有的定位器.
[info 2017/07/09 15:19:16.930 CST tid=0x1] Defaulting license-working-dir to current working directory "C:\Users\
IBM_ADMIN\Documents\Workspace - Shirley\Workspace_SpringBoot\spring-boot-gemfire-server-example".
[info 2017/07/09 15:19:16.935 CST tid=0x1] Licensing required 7 milliseconds.
[info 2017/07/09 15:19:17.000 CST tid=0x1] Starting peer location for Distribution Locator on localhost/127.0.0.1
[10334]
[info 2017/07/09 15:19:17.016 CST tid=0x1] Starting Distribution Locator on localhost/127.0.0.1[10334]
[info 2017/07/09 15:19:18.376 CST tid=0x1] GemFire P2P Listener started on tcp:///192.168.1.106:45643
[info 2017/07/09 15:19:18.624 CST tid=0x22] locator localhost(null):10334 member address is ADMINIB-CI3
Q48M(SpringBootGemFireServer):37651
[info 2017/07/09 15:19:25.674 CST tid=0x25] locator localhost(null):10334 member address is ADMINIB-CI3
Q48M(SpringBootGemFireServer):37651
[info 2017/07/09 15:19:30.686 CST tid=0x1] Membership: lead member is now ADMINIB-CI3Q48M(SpringBootGemFireServer
):37651
[info 2017/07/09 15:19:30.701 CST tid=0x1] This member, ADMINIB-CI3Q48M(SpringBootGemFireServer):37651, is becomi
ng group coordinator.
[info 2017/07/09 15:19:30.710 CST tid=0x1] Entered into membership with ID ADMINIB-CI3Q48M(SpringBootGemFireServe
r):37651.
[info 2017/07/09 15:19:30.712 CST tid=0x1] Starting DistributionManager ADMINIB-CI3Q48M(SpringBootGemFireServer):37651. (took 12629/ ms)
[info 2017/07/09 15:19:30.715 CST tid=0x1] Initial (membershipManager) view = [ADMINIB-CI3Q48M(SpringBootGemFire
Server):37651{lead}]
[info 2017/07/09 15:19:30.715 CST tid=0x1] Admitting member :37651>.
Now there are 1 non-admin member(s).
[info 2017/07/09 15:19:30.716 CST tid=0x1] ADMINIB-CI3Q48M(SpringBootGemFireServer):37651 is the elder and th
e only member.
[info 2017/07/09 15:19:31.081 CST tid=0x1] Did not hear back from any other system. I am the first one.
[info 2017/07/09 15:19:31.086 CST tid=0x1] Starting server location for Distribution Locator on localhost/127.0.0
.1[10334]
[info 2017/07/09 15:19:31.358 CST tid=0x1] Initializing region _monitoringRegion_192.168.1.10637651
[info 2017/07/09 15:19:31.364 CST tid=0x1] Initialization of region _monitoringRegion_192.168.1.10637651 comp
leted
[info 2017/07/09 15:19:32.857 CST tid=0x1] Initializing region PdxTypes
[info 2017/07/09 15:19:32.857 CST tid=0x1] Initialization of region PdxTypes completed
[main] INFO org.springframework.data.gemfire.CacheFactoryBean - Connected to Distributed System [SpringBootGemFireServer
] as Member [ADMINIB-CI3Q48M(SpringBootGemFireServer):37651]in Group(s) [[]] with Role(s) [[]] on Host [ADMINIB-CI3Q
48M] having PID [0].
[main] INFO org.springframework.data.gemfire.CacheFactoryBean - Created new GemFire v.8.2.0 Cache [SpringBootGemFireServ
er].
[info 2017/07/09 15:19:32.935 CST tid=0x1] Initializing region __PR
[info 2017/07/09 15:19:32.935 CST tid=0x1] Initialization of region __PR completed
[info 2017/07/09 15:19:32.986 CST tid=0x1] Partitioned Region /Factorials is born with prId=1 ident:#Factorials
[main] INFO org.springframework.data.gemfire.PartitionedRegionFactoryBean - Created new Cache Region [Factorials].
[main] INFO org.springframework.jmx.export.annotation.AnnotationMBeanExporter - Registering beans for JMX exposure on st
artup
[main] INFO org.springframework.context.support.DefaultLifecycleProcessor - Starting beans in phase 2147483647
[info 2017/07/09 15:19:33.379 CST tid=0x1] Bridge server connection listener bound to address localhost/127.0.0.1
:40404 with backlog 1,000.
[info 2017/07/09 15:19:33.396 CST tid=0x1] ClientHealthMonitorThread maximum allowed time between pings: 15,000
[info 2017/07/09 15:19:33.425 CST tid=0x1] CacheServer Configuration: port=40404 max-connections=800 max-thread
s=0 notify-by-subscription=true socket-buffer-size=32768 maximum-time-between-pings=15000 maximum-message-count=230000 m
essage-time-to-live=180 eviction-policy=none capacity=1 overflow directory=. groups=[] loadProbe=ConnectionCountProbe lo
adPollInterval=5000 tcpNoDelay=true
[main] INFO org.example.SpringBootGemFireServer - Started SpringBootGemFireServer in 20.399 seconds (JVM running for 20.
823)
[info 2017/07/09 15:21:15.585 CST tid=0x3e] (tid=62 msgId=0) Executing list member
s
[info 2017/07/09 15:22:26.546 CST tid=0x3e] (tid=62 msgId=1) Executing describe me
mber --name GemFireLocator
> Building 80% > :bootRun
然后我可以使用gfsh将您的示例代码创建的内容连接到定位器.
And I can use gfsh to connect to the locator what your example code created.
gfsh>
gfsh>stop locator --name GemFireLocator
Stopping Locator running in C:\Users\IBM_ADMIN\GemFireLocator on ADMINIB-CI3Q48M[10334] as GemFireLocator...
Process ID: 7256
Log File: C:\Users\IBM_ADMIN\GemFireLocator\GemFireLocator.log
....
No longer connected to ADMINIB-CI3Q48M[1099].
gfsh>gfsh>list members
"list members" is not available. Reason: Requires connection.
gfsh>connect to loaclhost[10334]
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]
gfsh>list members
Member Count : 1
Coordinator : SpringBootGemFireServer (ADMINIB-CI3Q48M(SpringBootGemFireServer):37651)
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:\Users\IBM_ADMIN\Documents\Workspace - Shirley\Workspace_SpringBoot\spring-boot-gemfire-server-example
Log file : C:\Users\IBM_ADMIN\Documents\Workspace - Shirley\Workspace_SpringBoot\spring-boot-gemfire-server-example
Locators : localhost[10334]
Cache Server Information
Server Bind : localhost
Server Port : 40404
Running : true
Client Connections : 0
gfsh>list regions
List of regions
---------------
Factorials
gfsh>describe region --name=/Factorials
..........................................................
Name : Factorials
Data Policy : partition
Hosting Members : SpringBootGemFireServer
Non-Default Attributes Shared By Hosting Members
Type | Name | Value
------ | ---- | -----
Region | size | 0
您能帮忙检查一下吗?
推荐答案
好吧,首先,当您启动 GemFire Locator (即使用 Gfsh 的"GemFireLocator")时,您使用了以下 Gfsh 命令...
Ok, first, when you started the GemFire Locator (i.e. "GemFireLocator" using Gfsh), you used the following Gfsh command...
gfsh>启动定位器--name = GemFireLocator --log-level = config
gfsh> start locator --name=GemFireLocator --log-level=config
这将导致在默认端口 10334 上启动定位器,该端口不是您先前指定的端口40001,但是还可以.这样可以更轻松地运行示例.
This resulted in starting the Locator on the default port, 10334, which is not the port you stated previously, 40001, but that is fine; it is easier to run the sample this way.
这在describe member
命令中也很明显...
This is also apparent from the describe member
command...
gfsh>描述成员--name = GemFireLocator
gfsh>describe member --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:\Users\IBM_ADMIN\GemFireLocator
Log file : C:\Users\IBM_ADMIN\GemFireLocator\GemFireLocator.log
Locators : 192.168.1.106[10334]
最后一行...
Locators : 192.168.1.106[10334]
...显示定位器正在监听绑定到地址 192.168.1.106 的端口 10334 .
... reveals that the Locator is listening on port 10334 bound to address 192.168.1.106.
Then, you proceed in starting the GemFire Server using my sample. I suspect not only did you run $ gradlew bootRun
from the command-line, but that you followed the instructions to conclusion, including "Running with an Embedded GemFire/Geode Locator"... yes?
从您发布的新 堆栈跟踪中可以明显看出...
It is actually apparent from the new Stack Trace you posted...
...
...
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中(您可能已经知道),每当为客户端"应用程序绑定地址/端口以进行连接时,就可以使用
Do not confuse "creating a server socket" with starting a GemFire Server. In Java (as you may already know), whenever you bind an address/port for a "client" application to connect, you use a java.net.ServerSocket.
在这种情况下,定位器是服务器",并为要连接到的任何客户端(例如 Gfsh 或其他对等成员,例如GemFire(缓存)服务器)创建java.net.ServerSocket
定位器定义的GemFire群集".
In this case, a Locator is a "server" and creates a java.net.ServerSocket
for any clients (e.g. Gfsh, or other peer members like GemFire (Cache) Servers) that want to connect to the GemFire "cluster" defined by the Locator.
而且,如您所见,当您停止第一个定位器("GemFireLocator")时,您最初是在 Gfsh 中启动的,然后当您自己运行示例时(它成功启动了!).使用...描述"成员.
And, as you can see when you stopped the first Locator ("GemFireLocator") you started in Gfsh initially, and then ran the sample by itself (and it started successfully!), when you "described" the member, using...
gfsh>描述成员--name = SpringBootGemFireServer
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:\Users\IBM_ADMIN\Documents\Workspace - Shirley\Workspace_SpringBoot\spring-boot-gemfire-server-example
Log file : C:\Users\IBM_ADMIN\Documents\Workspace - Shirley\Workspace_SpringBoot\spring-boot-gemfire-server-example
Locators : localhost[10334]
Cache Server Information
Server Bind : localhost
Server Port : 40404
Running : true
Client Connections : 0
您可以从describe member
命令中看到一些有趣的信息.
You can see several bits of interesting information from the describe member
command.
-
首先,最重要的是,您看到...
First, and most importantly, you see...
Locators : localhost[10334]
这是嵌入式"定位器.它正在监听端口 10334 ,这就是为什么在您的"GemFireLocator"首次运行时遇到j.n.BindException
的原因.
This is the "embedded" Locator. It is listening on port 10334, which is why you encountered the j.n.BindException
when your "GemFireLocator" was running the first time.
这意味着已设置spring.gemfire.start-locator
应用程序属性,并且设置GemFire属性,start-locator
(
This means the spring.gemfire.start-locator
application property was set, and by default, I see that it is. This in turn sets the GemFire property, start-locator
(from the application property), which then causes GemFire to start an "embedded" Locator.
由于在默认端口 10334 上启动了"GemFireLocator",因此这在运行"GemFireLocator"时会导致端口冲突.
As result, this causes a port conflict when "GemFireLocator" is running since you started the "GemFireLocator" on the default port, 10334.
如果您是在其他端口上启动"GemFireLocator"或嵌入式" Locator的,则不会出现此问题.
If you had started the "GemFireLocator" or the "embedded" Locator on a different port, you would not have had this problem.
您可以将 Gfsh 与...一起在其他端口上启动定位器.
You can start a Locator on a different port using Gfsh with...
gfsh>启动定位器--name = GemFireLocator --port = 11235 --log-level = config
gfsh> start locator --name=GemFireLocator --port=11235 --log-level=config
但是,如果您随后要将"SpringBootGemFireServer"连接到现有"定位器(即从 Gfsh 中启动的"GemFireLocator"),则必须更改spring.gemfire.locators
应用程序属性匹配(例如localhost[11235]
).反过来这是在此处捕获并设置
However, if you then want to connect the "SpringBootGemFireServer" to the "existing" Locator (i.e. "GemFireLocator" started in Gfsh), then you must change the spring.gemfire.locators
application property to match (e.g. localhost[11235]
). This in turn is captured here and set here.
或者,您可以更改spring.gemfire.start-locator
的值
Alternatively, you could have changed the value for spring.gemfire.start-locator
application property to, say... localhost[12480]
, or just simply comment it out. This would have also avoided the j.n.BindException
since the external Locator ("GemFireLocator") and the "embedded" Locator would then not conflict on port.
从技术上讲,默认情况下应该在我的示例中将spring.gemfire.start-locator
注释掉.我很抱歉.
Technically, the spring.gemfire.start-locator
should have been commented out by default in my sample. My apologies.
-
有关"SpringBootGemFireServer"的其他有趣花絮...您有一个
CacheSever
可用于缓存客户端(即ClientCache
)应用程序进行连接,因此...
Other interesting tidbits about "SpringBootGemFireServer"... you have a
CacheSever
available for cache clients (i.e.ClientCache
) applications to connect, hence...
Cache Server Information
Server Bind : localhost
Server Port : 40404
Running : true
Client Connections : 0
这来自
当然,您会看到"Factorials"区域...
And of course, you see the "Factorials" Region...
Regions : Factorials
因此,关于(目前可能已经很明显了)...
So, regarding (which is probably apparent by now)...
令人难以置信,它成功了.
Unbelievable, it succeed.
您的示例似乎是要启动新的Gemfire定位器和服务器,而不是连接到现有的定位器.
It seems like that your example is to start a new Gemfire locator and a server, not connect to a exist locator.
SpringBootGemFireServer
成功启动,因为您1)停止了"GemFireLocator",并且2)SpringBootGemFireServer
正在运行嵌入式"定位器,从
The SpringBootGemFireServer
succeeded to start because you 1) stopped your "GemFireLocator" and 2) the SpringBootGemFireServer
was running an "embedded" Locator, apparent from this.
如果SpringBootGemFireServer 未运行嵌入式"定位器(服务),则您将未能够连接(停止"GemFireLocator"后) ,但是你做到了……
If the SpringBootGemFireServer was not running the "embedded" Locator (service), then you would not have been able to connect (after you stopped your "GemFireLocator"), but you did...
gfsh>stop locator --name GemFireLocator
Stopping Locator running in C:\Users\IBM_ADMIN\GemFireLocator on ADMINIB-CI3Q48M[10334] as GemFireLocator...
Process ID: 7256
Log File: C:\Users\IBM_ADMIN\GemFireLocator\GemFireLocator.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 中进行连接的原因.
The "SpringBootGemFireServer" is also a "Manager", which is actually the reason you can connect in Gfsh.
默认情况下,当使用不带选项的 Gfsh's connect
时,connect会尝试在监听端口 10334 的"localhost"上查找定位器,因此.
When you use Gfsh's connect
without an options, by default, connect tries to find a Locator on "localhost" listening on port 10334, hence this...
Connecting to Locator at [host=localhost, port=10334]
但是,定位器的职责是在集群中找到现有的Manager,并告诉客户端(即 Gfsh )在哪里找到它(即IP地址/端口).这就是为什么您看到随后的连接...
However, the Locator's responsibility is to find an existing Manager in the cluster and tell the client (i.e. Gfsh) where to find it (i.e. IP address/port). That is why you see the subsequent connect...
Connecting to Manager at [host=ADMINIB-CI3Q48M, port=1199] ..
All of that was made possible by this. If there is not already an existing "Manager" in the cluster, then the Locator is programmed/configured to become the "Manager". The jmx-manager
GemFire property enables any member in the cluster to "become" a Manager. However, that does not mean it will startup as a Manager by default. To force the member to be a Manager at start, you must also set the jmx-manager-start
GemFire property, as I have done with the SpringBootGemFireServer (of course, I default the value to false by default so it won't start as a Manager on startup). Anyway...
如果您要连接到外部,以" Gfsh "开头的现有"定位器(例如"GemFireLocator"),则...
If you want to connect to an external, "existing" Locator (e.g. "GemFireLocator") started with Gfsh, then...
- 运行...
gfsh>启动定位器--name = GemFireLocator --log-level = config.
gfsh> start locator --name=GemFireLocator --log-level=config.
注意:请记住,除非您为
start locator
命令指定--port选项,否则GemFireLocator将在默认端口(10334)上进行监听.
NOTE: keep in mind that GemFireLocator will be listening on the default port (10334) unless you specify the --port option to the
start locator
command.
Make sure you comment out line 8 in the
application.properties
file picked up by the "SpringBootGemFireServer" application. Alternatively, you can change the embedded Locators port by setting thespring.gemfire.start-locator
application property to, say...localhost[11235]
.
(可选),如果您为外部"/现有"定位器设置了端口(即从 Gfsh 开始的"GemFireLocator"),则请务必设置 spring.gemfire.locators
应用程序属性进行匹配.
(optional) If you set a port for your "external" / "existing" Locator (i.e. "GemFireLocator" started from Gfsh), then be sure to set the spring.gemfire.locators
application property to match.
希望这会有所帮助!
关于, -约翰
这篇关于Spring-Data-Gemfire-无法联系定位器服务.操作超时或定位器不存在的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!