2015-05-19 2 views
0

В моем понимании java.rmi - это спецификация.
Как я узнаю, какую конкретную реализацию java.rmi использую при разработке с использованием этого API.Спецификация JRMI

Также существует ограничение на максимальное количество потоков, которое запущено на сервере RMI?

+1

В отличие от XML API, в котором есть хотя бы два известных поставщика услуг SPI, RMI встроен. С помощью метода remote-method-invokation вы сами пишете клиент и сервер. Один экземпляр означает один порт, один сокет. Нет высокой архитектуры. –

ответ

1

Вы используете реализацию провайдера JDK. Therm не является архитектурой провайдера, как в JNDI, NIO, JCA и т. Д.

Спецификация RMI не содержит ограничений по потокам.

-2

Я бы вряд ли назвал RMI «спецификацией». Это довольно реализационная реализация сериализации Java; и всякая реализация соответствует версии JRE, в которой вы работаете. Я бы посоветовал не случайным образом смешивать и сопоставлять версии JRE между клиентом и сервером при использовании RMI. Я также не советую сериализовать POJO, используя экзотические функции, которых нет в старых VM.

Хотя он не «указан», у меня есть обратная конструкция, почти полностью выполненная реализация RMI для C# раньше (для использования с серверами на основе Spring/Hibernate из WPF), но я не знаю никого, кто использует такие не-JRE-реализации в реальном мире. В некоторых случаях вы застреваете с RMI, чтобы общаться с системами J2EE. Но, если это вообще возможно, вы должны использовать что-то более разумное, например ProtocolBuffers/Thrift/Avro/Hessian/Parqet и т. Д. У них есть настоящие «спецификации» с версиями протоколов и IDL-компиляторами для нескольких платформ; что было совсем не так в то время, когда я это делал для RMI.

У RMI есть другие проблемы, которые я бы назвал вопросами безопасности (т. Е. Вы указали имя класса в потоке сериализации, и оно вызовет конструктор no-arg для создания класса этого имени). Его дизайн также не очень хорош для ситуаций, когда графы объектов могут стать большими. (В частности, вы можете сделать стек очень большим во время десериализации.)

+0

Вы заявили дважды, что это не указано. Интересно, что такое спецификация RMI. Все ваши возражения действительно касаются сериализации, а не RMI, и они не все точны. – EJP

+0

Я стою исправлены. Это несколько документально (несколько недавно). В то время, когда мне приходилось создавать клиент C#, было точно, что случилось с текущей виртуальной машиной. Он по-прежнему не является протоколом с версией, независимой от VM, что лучше, чем ничего. – Rob

+0

У меня есть спецификация JRMP от JDK 1.1.8, выпущенная в 1999 году. Это то же самое, что и спецификация в новых выпусках Java 8. – erickson

Смежные вопросы