Я имею, устанавливают RMI + SSL. Это работает отлично. Но не кажется возможным подсунуть сжатию промежуточный RMI и SSL. Так, чтобы запросы RMI были сжаты, прежде чем они будут отправлены по SSL.
Я видел, что некоторые размещают в Интернете, предлагают использовать SSLSocketFactory.createSocket()
который берет Сокет для обертывания SSL по сжимающемуся сокету. Но это кажется, что попыталось бы сжать сам протокол SSL, который, вероятно, не очень сжимаем.
Я предположил, что должен создать a Socket
прокси (подкласс Socket
это подчиняется другому Socket
, как FilterOutputStream
делает). Имейте обертку прокси потоки Input/Ouput со сжатием. И имейте мой SocketFactory
и ServerSocketFactory
возвратите прокси, перенесясь SSLSocket
.
Но тогда у нас есть проблема буферизации. Сжатие буферизует данные, пока это не получает достаточно, которое стоит сжать, или сказано сбросить. Это прекрасно, когда у Вас нет назад и вперед коммуникации по сокету. Но с кэшируемыми сокетами в RMI, у Вас есть это. Без способа определить конец RMI запрашивают, таким образом, можно сбросить сжатые данные.
Sun имеет RMISocketFactory
пример, делающий что-то вроде этого, но они не обращаются к этому вообще.
примечания:
1. SSL поддерживает сжатие, но я ничего не могу найти о включении этого в JSSE
2. Я знаю, что сжатие на большом количестве маленьких несвязанных блоков (поскольку RMI обычно состоит из) не очень выгодно.
3. Я знаю, что, если я отправляю большие запросы, RMI не является лучшим выбором.
4. Существует SSLRMISocketFactory
в Java 6. но это ничего не добавляет по моей пользовательской реализации.