|
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 могут только инициироваться в одном направлении через брандмауэр, клиент не может экспортировать его собственные удаленные объекты вне брандмауэра, потому что узел вне брандмауэра не может инициировать вызов метода назад на клиенте.