Spec-Zone .ru
спецификации, руководства, описания, API
|
СОДЕРЖАНИЕ | ПРЕДЫДУЩИЙ | NEXT | Java Удаленный Вызов метода |
Как описано в этом разделе, основанный на HTTP механизм, который использование транспортного уровня RMI для RMI вызывает только, применяется к брандмауэрам с прокси-серверами HTTP.
java.rmi.server.RMISocketFactory
, который является провайдером ресурсов по умолчанию для сокетов клиента и сервера, используемых, чтобы отправить и получить вызовы RMI; эта фабрика сокета по умолчанию может быть получена через java.rmi.server.RMISocketFactory.getDefaultSocketFactory
метод. Эта фабрика сокета по умолчанию создает сокеты, которые прозрачно обеспечивают брандмауэр, туннелирующий механизм следующим образом: java.net.NoRouteToHostException
или a java.net.UnknownHostException
быть брошенным. Если прямое сокетное соединение приводит к кому-либо другому java.io.IOException
будучи брошенным, такие как a java.net.ConnectException
, реализация может делать попытку HTTP-соединения.java.rmi.server.RMISocketFactory.createSocket
метод. Сокеты серверной стороны с этим поведением по умолчанию обеспечиваются фабрикой java.rmi.server.RMISocketFactory.createServerSocket
метод. java.rmi.server.disableHttp
свойство, чтобы равняться булеву значению true
. В зависимости от платформы сервера и сетевой среды, эта информация может или, возможно, не доступна виртуальной машине Java, на которой работает сервер. Если это не доступно, полностью определенное имя узла должно быть определено со свойством java.rmi.server.hostname
запуская сервер.
Например, используйте эту команду, чтобы запустить класс сервера RMI ServerImpl
на машине chatsubo.example.com:
java -Djava.rmi.server.hostname=chatsubo.example.com ServerImpl
/cgi-bin/java-rmi.cgiЭтот сценарий:
Поскольку запросы HTTP могут только инициироваться в одном направлении через брандмауэр, клиент не может экспортировать его собственные удаленные объекты вне брандмауэра, потому что узел вне брандмауэра не может инициировать вызов метода назад на клиенте.