#hibernate #oracle-coherence
#зимовать #oracle-согласованность
Вопрос:
У меня есть служба кэширования, использующая Coherence CE 14.1.1 с расширенной поддержкой клиентов
клиент использует режим гибернации 5.2.17 с кэшем L2 coherence 14.1.1
- Как справиться с сбоем соединения между клиентом и сервером кэша, чтобы при отключении сервера клиент продолжал нормально работать в БД без сбоев. На данный момент, когда сервер кэша не работает или возникла какая-либо проблема с подключением, клиент разбился, и все операции CRUD завершились неудачно.
- Во-вторых, существует способ иметь несколько параметров удаленного прокси-сервера с приоритетом, так как в случае сбоя первого прокси-сервера клиент приложения попытается подключиться к другому прокси-серверу, указанному в файле конфигурации. Если все завершится неудачей, кэш L2 клиента приложения должен просто игнорировать кэширование.
ниже приведены файлы конфигурации hibernate-second-level-cache-config.xml
lt;?xml version="1.0"?gt; lt;!-- Copyright (c) 2020, Oracle and/or its affiliates. Licensed under the Universal Permissive License v 1.0 as shown at http://oss.oracle.com/licenses/upl. --gt; lt;cache-config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.oracle.com/coherence/coherence-cache-config" xsi:schemaLocation="http://xmlns.oracle.com/coherence/coherence-cache-config coherence-cache-config.xsd"gt; lt;caching-scheme-mappinggt; lt;cache-mappinggt; lt;cache-namegt;org.hibernate.cache.internal.StandardQueryCachelt;/cache-namegt; lt;scheme-namegt;remotelt;/scheme-namegt; lt;/cache-mappinggt; lt;cache-mappinggt; lt;cache-namegt;query.*lt;/cache-namegt; lt;scheme-namegt;remotelt;/scheme-namegt; lt;/cache-mappinggt; lt;cache-mappinggt; lt;cache-namegt;org.hibernate.cache.spi.UpdateTimestampsCachelt;/cache-namegt; lt;scheme-namegt;remotelt;/scheme-namegt; lt;/cache-mappinggt; lt;cache-mappinggt; lt;cache-namegt;*lt;/cache-namegt; lt;scheme-namegt;remotelt;/scheme-namegt; lt;/cache-mappinggt; lt;/caching-scheme-mappinggt; lt;caching-schemesgt; lt;remote-cache-schemegt; lt;scheme-namegt;remotelt;/scheme-namegt; lt;service-namegt;ExtendTcpCacheServicelt;/service-namegt; lt;initiator-configgt; lt;tcp-initiatorgt; lt;name-service-addressesgt; lt;socket-addressgt; lt;addressgt;127.0.0.1lt;/addressgt; lt;portgt;7574lt;/portgt; lt;/socket-addressgt; lt;/name-service-addressesgt; lt;/tcp-initiatorgt; lt;outgoing-message-handlergt; lt;request-timeoutgt;5slt;/request-timeoutgt; lt;/outgoing-message-handlergt; lt;/initiator-configgt; lt;/remote-cache-schemegt; lt;/caching-schemesgt; lt;/cache-configgt;
Ответ №1:
ответ на второй вопрос таков:
в приложении на стороне клиента отредактируйте файл конфигурации кэша, добавив в него дополнительный тег , при этом убедитесь, что на всех удаленных серверах имя прокси-сервера точно совпадает с именем службы клиента
lt;remote-cache-schemegt; lt;scheme-namegt;remotelt;/scheme-namegt; lt;service-namegt;ExtendTcpCacheServicelt;/service-namegt; lt;initiator-configgt; lt;tcp-initiatorgt; lt;remote-addressesgt; lt;socket-address id="1"gt; lt;addressgt;remote-IP-1lt;/addressgt; lt;portgt;7575lt;/portgt; lt;/socket-addressgt; lt;socket-address id="2"gt; lt;addressgt;remote-IP-2lt;/addressgt; lt;portgt;7575lt;/portgt; lt;/socket-addressgt; lt;/remote-addressesgt; lt;/tcp-initiatorgt; lt;outgoing-message-handlergt; lt;request-timeoutgt;5slt;/request-timeoutgt; lt;/outgoing-message-handlergt; lt;/initiator-configgt; lt;/remote-cache-schemegt;