Если вы работаете в Android Studio 3.1 или более поздней версии, вы, скорее всего, столкнетесь с проблемой такого типа, вызываемой окном Build
.
Просто нажмите на опцию Add Google Maven repository and sync project
справа и запустите другую синхронизацию gradle.
Он внесет необходимые изменения как в gradle-wrapper.properties
, так и в build.gradle
файлы.
] [] [] Кто-нибудь использует общий бассейн в производство, чтобы написать свой собственный пул?[
] [
]Да, и пул держит TCP-соединения, как вы и собираетесь. Он подключается через Spring, так что, если вы понимаете конфигурацию Spring:[
] [<bean class="com.company.ConnectionSupplier">
<constructor-arg>
<!-- The ConnectionSupplier wraps an object pool -->
<bean class="org.apache.commons.pool.impl.GenericObjectPool">
<constructor-arg>
<!-- The ObjectPool uses a ConnectionFactory to build new connections -->
<bean class="com.company.ConnectionFactory">
<constructor-arg value="server" />
<constructor-arg value="3000" />
</bean>
</constructor-arg>
<property name="maxActive" value="20" />
<property name="testOnBorrow" value="true" />
</bean>
</constructor-arg>
</bean>
]
[]The ConnectionFactory расширяет BasePoolableObjectFactory и представляет собой небольшую обертку вокруг SocketFactory. [
] []@Первый комментарий: Конструктор ConnectionFactory берет сервер и порт. В переопределении makeObject() он создает сокеты, которые соединяются с этим сервером и портом. Он возвращает объекты 'Connection', которые обёртывают созданный сокет некоторыми удобными методами для связи через сокет.[
] []Соединение проверяется с помощью своего рода 'ping' или 'echo', предоставляемого протоколом, используемым для связи через сокет. Если это не было доступно, проверка/тестирование соединения на самом деле невозможно, за исключением запроса сокета о том, было ли оно закрыто. В этом случае, соединение в пуле было бы недействительным, если бы оно бросило исключение, и каждый метод, использующий Connections, должен быть готов к подобному срыву и пытаться выполнить такую же операцию с другим соединением.[
].Ознакомьтесь с MultiThreadedHttpConnectionManager - это диспетчер пула соединений Apache Commons HttpClient, который, вероятно, сразу же подойдет вашим потребностям.
Во-первых, не используйте commons-pool 1.3, у него есть некоторые основные проблемы с многопоточными приложениями.
Во-вторых, у Java 5 concurency package есть достойные реализации пула (см. образец здесь)
.Вы просмотрели Netty или Apache MINA ? Они оба отслеживают ваши TCP соединения и должны упростить реализацию любого коммуникационного протокола, который эти TCP сокеты будут использовать.
Вы должны проверить, что инстанция стоит дороже или извлечение из пула. Потому что единственная действительная ситуация для использования бассейна - первая.