У меня есть этот метод для внешних клиентов для выполнения методов с использованием RMI. Мне не удалось преобразовать переменную Naming
в тип, определенный в String
, возвращаемом servidor.getNombreRegistrado()
. Я создаю брокера, в котором серверы могут регистрировать себя и свои сервисы в брокере, чтобы сделать их доступными для клиентов. Вот почему мне нужно привести результат из Naming.lookup к типу, на котором зарегистрирован сервер. Таким образом я смогу вызывать его методы с использованием RMI.
public String ejecutar_servicio(String nom_servicio, Vector<String> parametros_servicio) throws RemoteException{
try {
for(Servidor servidor : servidores){
for(Servicio servicio : servidor.getServicios()){
if(servicio.getNombre().equals(nom_servicio) && parametros_servicio.size() == servicio.numParametros()){
try{
Object server = (Object) Naming.lookup("//" + servidor.getHostname() + "/" + servidor.getNombreRegistrado());
server = (servidor.getNombreRegistrado()) server;
server.dar_fecha();
return "";
}catch(Exception ex){
System.out.println(ex);
return "Excepcion";
}
}
}
}
return "Servicio no encontrado";
}
catch (SecurityException ex) {
return ex.toString();
}
}
Как я могу добиться такого поведения?
Это класс Servidor:
private class Servidor{
private String hostname;
private String nombreRegistrado;
private List<Servicio> servicios = new ArrayList<>();
public Servidor(String hostname, String nombreRegistrado){
this.hostname = hostname;
this.nombreRegistrado = nombreRegistrado;
}
void registrarServicio(Servicio servicio){
servicios.add(servicio);
}
String getNombreRegistrado() {
return nombreRegistrado;
}
List<Servicio> getServicios(){
return servicios;
}
String getHostname(){
return hostname;
}
}
Это класс Servicio:
private class Servicio{
private String nombreServicio;
private Vector listaParametros;
private String tipoRetorno;
public Servicio(String nombreServicio, Vector<String> listaParametros, String tipoRetorno){
this.nombreServicio = nombreServicio;
this.listaParametros = listaParametros;
this.tipoRetorno = tipoRetorno;
}
public String getNombre(){
return this.nombreServicio;
}
public int numParametros(){
return this.listaParametros.size();
}
public String getTipoRetorno(){
return this.tipoRetorno;
}
}