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 class ServerImpl
на машине chatsubo.example.com:
java -Djava.rmi.server.hostname=chatsubo.example.com ServerImpl
/cgi-bin/java-rmi.cgiЭтот сценарий:
Поскольку запросы HTTP могут только инициироваться в одном направлении через брандмауэр, клиент не может экспортировать его собственные удаленные объекты вне брандмауэра, потому что узел вне брандмауэра не может инициировать вызов метода назад на клиенте.