테라코타 클러스터와 함께 OSS Ehcache를 사용하려고하지만 ehcache 클라이언트 측에서 페일 오버를 구현하지 못했습니다. 문서 here테라코타에서 ehcache 클라이언트 페일 오버
<ehcache:service>
<terracotta:cluster>
<terracotta:connection url="terracotta://localhost:9510/clustered"/>
<terracotta:server-side-config auto-create="true">
<terracotta:default-resource from="default-resource"/>
</terracotta:server-side-config>
</terracotta:cluster>
</ehcache:service>
에 명시된하지만이 연결이 하나의 URL을 허용으로
나는이 구성을 찾을 수 있습니다. 클러스터에 두 개의 테라코타 서버가있는 경우 페일 오버가있는 HA를 갖고 싶습니다. ActiveMQ를 장애 조치 URL을 같은 일 :
failover:(server1:port,server2:port)
내 질문은 : 오픈 소스으로 Ehcache에 가능성이있다, 또는 나는 엔터프라이즈 버전을해야하고, 가능하면, 그것을 구성하는 방법.
내가주는 올바르게 구문 분석하지 않았다, Louis Jacomet 언급하지만 같은 <terracotta:connection url="terracotta://host1:9510,host2:9610/clustered1"/>
을 시도
업데이트 : 잘 컴파일 <terracotta:connection url="terracotta://host1:9510/clustered1,host2:9610/clustered1"/>
을하려고하면
org.ehcache.xml.exceptions.XmlConfigurationException: Error parsing XML configuration at file:/F:/Work/WORKSPACES/java7_ws/CachingTest/target/classes/ehcache.xml
at org.ehcache.xml.XmlConfiguration.<init>(XmlConfiguration.java:167)
at org.ehcache.xml.XmlConfiguration.<init>(XmlConfiguration.java:131)
at org.ehcache.jsr107.EhcacheCachingProvider$ConfigSupplier.getConfiguration(EhcacheCachingProvider.java:324)
... 4 more
Caused by: org.xml.sax.SAXParseException; systemId: file:/F:/Work/WORKSPACES/java7_ws/CachingTest/target/classes/ehcache.xml; lineNumber: 12; columnNumber: 91; cvc-pattern-valid: Value 'terracotta://host1:9510,host2:9610/clustered1' is not facet-valid with respect to pattern '\w+://([^\]\[/?#@][email protected])?[^:?#/]+(:[1-9][0-9]{0,4})?(/[^\?#]*)?(\?[^#]*)?(#.*)?' for type 'connectionUrl'.
하지만 host1의 경우이 다운되면 클라이언트는 다음을 제공합니다.
Exception in thread "main" org.ehcache.StateTransitionException: org.terracotta.connection.ConnectionException: java.util.concurrent.TimeoutException
at org.ehcache.core.StatusTransitioner$Transition.failed(StatusTransitioner.java:235)
at org.ehcache.core.EhcacheManager.init(EhcacheManager.java:588)
at org.ehcache.jsr107.EhcacheCachingProvider.createCacheManager(EhcacheCachingProvider.java:148)
at org.ehcache.jsr107.EhcacheCachingProvider.getCacheManager(EhcacheCachingProvider.java:128)
at org.ehcache.jsr107.EhcacheCachingProvider.getCacheManager(EhcacheCachingProvider.java:79)
at org.ehcache.jsr107.EhcacheCachingProvider.getCacheManager(EhcacheCachingProvider.java:183)
at dev.ams.poc.CacheApp.main(CacheApp.java:15)
Caused by: java.lang.RuntimeException: org.terracotta.connection.ConnectionException: java.util.concurrent.TimeoutException
at org.ehcache.clustered.client.internal.service.DefaultClusteringService.initClusterConnection(DefaultClusteringService.java:189)
at org.ehcache.clustered.client.internal.service.DefaultClusteringService.start(DefaultClusteringService.java:140)
at org.ehcache.core.internal.service.ServiceLocator.startAllServices(ServiceLocator.java:118)
at org.ehcache.core.EhcacheManager.init(EhcacheManager.java:560)
... 5 more
Ehcache 버전 : Ehcache-clustered-3.2
감사합니다. 컴파일이 완료되었지만 첫 번째 서버가 다운되었을 때 failover가 성공하지 못했으며 connectionException이 발생했습니다. –
귀하의 URL이 내가 제공 한 예와 일치하지 않습니다. path 요소가 동일하게 유지되어야하므로 경로 앞에 서 v를] 복하십시오. 그래서'terracotta : // localhost : 9610/clustered1, localhost : 9510/c lustered0'은'terracotta : // localhost : 9610, localhost : 9510/clustered '가되어야합니다. –
테라코타를 사용했습니다 : // host1 : 9510 , host2 : 9510/clustered, xml 구문 분석에 실패했습니다. XmlConfigurationException, 호스트 이름 대신 IP를 사용합니다. –