SlideShare una empresa de Scribd logo
1 de 6
Descargar para leer sin conexión
UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS ANDES
“UNIANDES”
ESCUELA DE SISTEMAS
CARRERA DE SISTEMAS
NOMBRE:ANGÉLICA PEÑA
CATEDRÁTICO:Ing. LUIS SUÁREZ
NIVEL: OCTAVO
MATERIA: DESARROLLO CLIENTE SERVIDOR II
TEMA: EJERCICIOS DE RMI
FECHA: 12-06-2015
IBARRA – ECUADOR
SERVIDOR DE ARCHIVOS
CLASSSERVER
ClassServer es una clase abstracta que proporciona funcionalidad básica de un mini-
servidor web, especializada. Para cargar archivos de clase única.
Un ClassServer debe extenderse y la subclase concreta debe definir el getBytes
Método que es responsable de recuperar los bytecodes para una clase.
La ClassServer crea un hilo que escucha en un socket y acepta HTTP GET peticiones. La
respuesta HTTP contiene el Bytecodes de la clase que se solicita en la cabecera GET.
Para cargar clases remotas, una aplicación RMI puede utilizar un hormigón Subclase de
este servidor en lugar de un servidor HTTP.
protected ClassServer(int port) throws IOException // Construye un ClassServer que
escucha en puerto
{
this.port = port;//puerto
server = new ServerSocket(port);
newListener();
}
Devuelve una matriz de bytes que contienen los códigos de bytes para
* La clase representada por el argumento ruta
* la ruta es un punto separa nombre de la clase con
* La extensión ".class" eliminado.
*return Los bytecodes de la clase
* ClassNotFoundExceptionexception si la clase correspondiente
* ruta no se pudo cargar.
* IOExceptionexception si se produce un error de lectura de la clase
public abstract byte[] getBytes(String path)
throws IOException, ClassNotFoundException;
El hilo "escuchar" que acepta una conexión con el
* Servidor, analiza la cabecera para obtener el nombre del archivo de clase
* Y devuelve los códigos de bytes para la clase (o error
* Si la clase no se encuentra o la respuesta fue mal formado).
public void run()
{
Socket socket;// aceptar una conexión
try {
socket = server.accept();
} catch (IOException e) {
System.out.println("Class Server died:" + e.getMessage());
return;
}
// Crear un nuevo hilo para aceptar la próxima conexión
newListener();
try {
DataOutputStreamout =
new DataOutputStream(socket.getOutputStream());
try {
// Obtener la ruta al archivo de clase de la cabecera
DataInputStreamin =
new DataInputStream(socket.getInputStream());
String path = getPath(in);
// Recuperar bytecodes
byte[] bytecodes = getBytes(path);
// Enviar códigos de bytes en respuesta (asume HTTP / 1.0 o posterior)
try {
out.writeBytes("C:/Users/LAB1-PC09/Documents/EJERCICIO
CS/ClassServer rn");
out.writeBytes("Content-Length:" + bytecodes.length +
"rn");
out.writeBytes("Content-Type:application/javarnrn");
out.write(bytecodes);
out.flush();
} catch (IOException ie) {
}
} catch (IOException | ClassNotFoundException e) {
// Escribir respuesta de error
out.writeBytes("C:/Users/LAB1-PC09/Documents/EJERCICIO CS/ClassServer " +
e.getMessage() + "rn");
out.writeBytes("Content-Type:text/htmlrnrn");
out.flush();
}
} catch (IOException ex) {
// Comer excepción (podría registrar errores para el archivo de registro, pero
// Escribir en stdout por ahora).
System.out.println("error writing response: " + ex.getMessage());
} finally {
try {
socket.close();
} catch (IOException e) {
}
}
}
* Crear un nuevo hilo para escuchar.
private void newListener()
{
(new Thread(this)).start();
}
Devuelve la ruta de acceso al archivo de clase obtenida a partir de
* Analizar la cabecera HTML.
private static String getPath(DataInputStreamin)
throws IOException
{
String line = in.readLine();
String path = "";
Clase extracto de línea GET
if (line.startsWith("GET /")) {
line = line.substring(5, line.length()-1).trim();
int index = line.indexOf(".class ");
if (index != -1) {
path = line.substring(0, index).replace('/', '.');
}
}
// Comer el resto de la cabecera
do {
line = in.readLine();
} while ((line.length() != 0) &&
(line.charAt(0) != 'r') && (line.charAt(0) != 'n'));
if (path.length() != 0) {
return path;
} else {
throw new IOException("Malformed Header");
}
}
}
CLASSFILESERVER.JAVA
El ClassFileServer implementa un ClassServer que
*Lee archivos de clases del sistema de archivos.
private String classpath;
private static int DefaultServerPort = 2001;
Construye un ClassFileServer.
CLASSPATH la ruta de clases donde el servidor localiza clases
public ClassFileServer(int port, String classpath) throws IOException
{
super(port);
this.classpath = classpath;
}
Devuelve una matriz de bytes que contienen los códigos de bytes para La clase
representada por el argumento ruta El ruta es un punto separa nombre de la clase con
La extensión ".class" eliminado. return Los bytecodes de la clase
ClassNotFoundExceptionexception si la clase correspondiente X ruta no se pudo cargar.
public byte[] getBytes(String path)
throws IOException, ClassNotFoundException
{
System.out.println("reading: " + path);
File f = new File(classpath + File.separator +
path.replace('.', File.separatorChar) + ".class");
int length = (int)(f.length());
if (length == 0) {
throw new IOException("File length is zero:" + path);
} else {
FileInputStreamfin = new FileInputStream(f);
DataInputStream in = new DataInputStream(fin);
byte[] bytecodes = new byte[length];
in.readFully(bytecodes);
return bytecodes;
}
}
Método principal para crear el servidor de clase que lee Los archivos de clase. Esto tiene
dos argumentos de la línea de comandos, los Puerto en el que el servidor acepta peticiones
y la Raíz de la ruta de clases. Para iniciar el servidor: java ClassFileServer <puerto> <ruta
de clase>
La base de código de un servidor RMI que utiliza este servidor web haría Simplemente
contener una URL con el host y el puerto de la web
Servidor (si classpath del servidor web es la misma que
Classpath del servidor RMI):
java -Djava.rmi.server.codebase = http: // zaphod: 2001 / RMIServer
Usted puede crear su propio servidor de clase dentro de su servidor RMI
La aplicación en lugar de ejecutar una por separado. En su servidor
Principal simplemente crear un ClassFileServer
nueva ClassFileServer (puerto, ruta de clase);
El ruta Es Un punto separa nombre de la clase con
La extensión ".class" Eliminado.
Los regresar bytecodes de la clase
ClassNotFoundExceptionexception si la clase Correspondiente
Ruta no se Pudo cargar.
No se pudo cargar.
public static void main(String args[])
{
int port = DefaultServerPort;
String classpath = "";
if (args.length >= 1) {
port = Integer.parseInt(args[0]);
}
if (args.length >= 2) {
classpath = args[1];
}
try {
ClassFileServer classFileServer = new ClassFileServer(port, classpath);
} catch (IOException e) {
System.out.println("Unable to start ClassServer:" +
e.getMessage());
}
}
}

Más contenido relacionado

La actualidad más candente

Comandos básicos iii gestión de archivos
Comandos básicos iii gestión de archivosComandos básicos iii gestión de archivos
Comandos básicos iii gestión de archivosPablo Macon
 
Protocolo dns analizado con wireshark
Protocolo dns analizado con wiresharkProtocolo dns analizado con wireshark
Protocolo dns analizado con wireshark123
 
Servicio FTP en Ubuntu
Servicio FTP en UbuntuServicio FTP en Ubuntu
Servicio FTP en UbuntuSergio Santos
 
Symfony2 y su ecosistema
Symfony2 y su ecosistemaSymfony2 y su ecosistema
Symfony2 y su ecosistemajaviacei
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slonyJohanna Mendez
 
Slony i
Slony iSlony i
Slony imao87t
 
Trucos directorio activo[1]
Trucos directorio activo[1]Trucos directorio activo[1]
Trucos directorio activo[1]marcelav02
 
III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.
III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.
III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.EtiCAGNU
 
Correo multidomino
Correo multidominoCorreo multidomino
Correo multidominoGuiro Lin
 
servidor proxy squid
servidor proxy squidservidor proxy squid
servidor proxy squidmanu betran
 
56 Php. Transferencia De Ficheros
56 Php. Transferencia De Ficheros56 Php. Transferencia De Ficheros
56 Php. Transferencia De FicherosJosé M. Padilla
 

La actualidad más candente (19)

19 usuarios gruposlinuxasoitson
19 usuarios gruposlinuxasoitson19 usuarios gruposlinuxasoitson
19 usuarios gruposlinuxasoitson
 
Comandos básicos iii gestión de archivos
Comandos básicos iii gestión de archivosComandos básicos iii gestión de archivos
Comandos básicos iii gestión de archivos
 
Protocolo dns analizado con wireshark
Protocolo dns analizado con wiresharkProtocolo dns analizado con wireshark
Protocolo dns analizado con wireshark
 
como instalar saba en linux
como instalar saba en linuxcomo instalar saba en linux
como instalar saba en linux
 
Tomcat yant
Tomcat yantTomcat yant
Tomcat yant
 
Servicio FTP en Ubuntu
Servicio FTP en UbuntuServicio FTP en Ubuntu
Servicio FTP en Ubuntu
 
Symfony2 y su ecosistema
Symfony2 y su ecosistemaSymfony2 y su ecosistema
Symfony2 y su ecosistema
 
Replicacion con postgresql y slony
Replicacion con  postgresql y slonyReplicacion con  postgresql y slony
Replicacion con postgresql y slony
 
Slony i
Slony iSlony i
Slony i
 
Ltps
LtpsLtps
Ltps
 
Funciones disponibles en php 2014
Funciones disponibles en php 2014Funciones disponibles en php 2014
Funciones disponibles en php 2014
 
Trucos directorio activo[1]
Trucos directorio activo[1]Trucos directorio activo[1]
Trucos directorio activo[1]
 
III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.
III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.
III LLAMPAGEEK 2013: Base de Datos Distribuidas con PostgreSQL.
 
Servidor DNS en Linux
Servidor DNS en LinuxServidor DNS en Linux
Servidor DNS en Linux
 
Correo multidomino
Correo multidominoCorreo multidomino
Correo multidomino
 
servidor proxy squid
servidor proxy squidservidor proxy squid
servidor proxy squid
 
Curso Redes Linex 2
Curso Redes Linex 2Curso Redes Linex 2
Curso Redes Linex 2
 
56 Php. Transferencia De Ficheros
56 Php. Transferencia De Ficheros56 Php. Transferencia De Ficheros
56 Php. Transferencia De Ficheros
 
Configuracion del servidor vsftpd en linux
Configuracion del servidor vsftpd en linuxConfiguracion del servidor vsftpd en linux
Configuracion del servidor vsftpd en linux
 

Destacado

Destacado (7)

Ejemplo Java Rmi
Ejemplo Java RmiEjemplo Java Rmi
Ejemplo Java Rmi
 
PROGRAMACIÓN EN JAVA
PROGRAMACIÓN EN JAVAPROGRAMACIÓN EN JAVA
PROGRAMACIÓN EN JAVA
 
Introducción a JAVA
Introducción a JAVAIntroducción a JAVA
Introducción a JAVA
 
Introduccion Aplicaciones Web en java j2ee
Introduccion Aplicaciones Web en java j2ee Introduccion Aplicaciones Web en java j2ee
Introduccion Aplicaciones Web en java j2ee
 
10 Curso de POO en java - métodos modificadores y analizadores
10 Curso de POO en java - métodos modificadores y analizadores10 Curso de POO en java - métodos modificadores y analizadores
10 Curso de POO en java - métodos modificadores y analizadores
 
11 Curso de POO en java - métodos constructores y toString()
11 Curso de POO en java - métodos constructores y toString()11 Curso de POO en java - métodos constructores y toString()
11 Curso de POO en java - métodos constructores y toString()
 
8b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 18b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 1
 

Similar a Ejercicioscliente servidor

02 formulario iniciar sesion programar
02 formulario iniciar sesion   programar02 formulario iniciar sesion   programar
02 formulario iniciar sesion programarpompeya
 
Constructores & excepciones
Constructores & excepcionesConstructores & excepciones
Constructores & excepcionesJuan Mancilla
 
Tema 9 aplicaciones de dos capas por gio
Tema 9   aplicaciones de dos capas por gioTema 9   aplicaciones de dos capas por gio
Tema 9 aplicaciones de dos capas por gioRobert Wolf
 
Taller programación web ajax con jquery
Taller programación web  ajax con jqueryTaller programación web  ajax con jquery
Taller programación web ajax con jqueryPablo Galeana Bailey
 
Programación web con JSP
Programación web con JSPProgramación web con JSP
Programación web con JSPousli07
 
Datos de entrada_desde_el_teclado java
Datos de entrada_desde_el_teclado javaDatos de entrada_desde_el_teclado java
Datos de entrada_desde_el_teclado javaEdeith
 
Computación avanzada en java cert
Computación avanzada en java certComputación avanzada en java cert
Computación avanzada en java certMaestros Online
 
Manejo de archivos en java
Manejo de archivos en javaManejo de archivos en java
Manejo de archivos en javaWhaleejaa Wha
 
Manejo de archivos en java
Manejo de archivos en javaManejo de archivos en java
Manejo de archivos en javaMaiirOn Gaitan
 
Manejo+de+archivos+en+java
Manejo+de+archivos+en+javaManejo+de+archivos+en+java
Manejo+de+archivos+en+javaWhaleejaa Wha
 

Similar a Ejercicioscliente servidor (20)

02 formulario iniciar sesion programar
02 formulario iniciar sesion   programar02 formulario iniciar sesion   programar
02 formulario iniciar sesion programar
 
Presentación1
Presentación1Presentación1
Presentación1
 
Constructores & excepciones
Constructores & excepcionesConstructores & excepciones
Constructores & excepciones
 
1 -programacion_oo
1  -programacion_oo1  -programacion_oo
1 -programacion_oo
 
Practica9 bases de datos
Practica9 bases de datosPractica9 bases de datos
Practica9 bases de datos
 
Practica9 bases de datos
Practica9 bases de datosPractica9 bases de datos
Practica9 bases de datos
 
Tema 9 aplicaciones de dos capas por gio
Tema 9   aplicaciones de dos capas por gioTema 9   aplicaciones de dos capas por gio
Tema 9 aplicaciones de dos capas por gio
 
Taller programación web ajax con jquery
Taller programación web  ajax con jqueryTaller programación web  ajax con jquery
Taller programación web ajax con jquery
 
Block
BlockBlock
Block
 
Programación web con JSP
Programación web con JSPProgramación web con JSP
Programación web con JSP
 
Sockets/ tcp
Sockets/ tcpSockets/ tcp
Sockets/ tcp
 
Datos de entrada_desde_el_teclado java
Datos de entrada_desde_el_teclado javaDatos de entrada_desde_el_teclado java
Datos de entrada_desde_el_teclado java
 
19 javascript servidor
19 javascript servidor19 javascript servidor
19 javascript servidor
 
Connection
ConnectionConnection
Connection
 
Computación avanzada en java cert
Computación avanzada en java certComputación avanzada en java cert
Computación avanzada en java cert
 
Sockets java
Sockets javaSockets java
Sockets java
 
Presentacion ajax
Presentacion   ajaxPresentacion   ajax
Presentacion ajax
 
Manejo de archivos en java
Manejo de archivos en javaManejo de archivos en java
Manejo de archivos en java
 
Manejo de archivos en java
Manejo de archivos en javaManejo de archivos en java
Manejo de archivos en java
 
Manejo+de+archivos+en+java
Manejo+de+archivos+en+javaManejo+de+archivos+en+java
Manejo+de+archivos+en+java
 

Más de Anghy Peña

Anatomia peritoneo
Anatomia peritoneoAnatomia peritoneo
Anatomia peritoneoAnghy Peña
 
Tecnicas y procedimientos de la aufditoría
Tecnicas y procedimientos de la aufditoríaTecnicas y procedimientos de la aufditoría
Tecnicas y procedimientos de la aufditoríaAnghy Peña
 
Saitel (p1 30 10-2014)
Saitel (p1 30 10-2014)Saitel (p1 30 10-2014)
Saitel (p1 30 10-2014)Anghy Peña
 
Estudio legal de la microempresa “fruti” (p2 22 05-2014)
Estudio legal de la microempresa “fruti” (p2 22 05-2014)Estudio legal de la microempresa “fruti” (p2 22 05-2014)
Estudio legal de la microempresa “fruti” (p2 22 05-2014)Anghy Peña
 
Tasa interno de retorno
Tasa interno de retornoTasa interno de retorno
Tasa interno de retornoAnghy Peña
 
Pd restricciones integridad_gris
Pd restricciones integridad_grisPd restricciones integridad_gris
Pd restricciones integridad_grisAnghy Peña
 
Pedagogia uniandes.ed udocx
Pedagogia uniandes.ed udocxPedagogia uniandes.ed udocx
Pedagogia uniandes.ed udocxAnghy Peña
 

Más de Anghy Peña (9)

Anatomia peritoneo
Anatomia peritoneoAnatomia peritoneo
Anatomia peritoneo
 
Tecnicas y procedimientos de la aufditoría
Tecnicas y procedimientos de la aufditoríaTecnicas y procedimientos de la aufditoría
Tecnicas y procedimientos de la aufditoría
 
Saitel (p1 30 10-2014)
Saitel (p1 30 10-2014)Saitel (p1 30 10-2014)
Saitel (p1 30 10-2014)
 
Estudio legal de la microempresa “fruti” (p2 22 05-2014)
Estudio legal de la microempresa “fruti” (p2 22 05-2014)Estudio legal de la microempresa “fruti” (p2 22 05-2014)
Estudio legal de la microempresa “fruti” (p2 22 05-2014)
 
Tasa interno de retorno
Tasa interno de retornoTasa interno de retorno
Tasa interno de retorno
 
Pd restricciones integridad_gris
Pd restricciones integridad_grisPd restricciones integridad_gris
Pd restricciones integridad_gris
 
Pedagogia uniandes.ed udocx
Pedagogia uniandes.ed udocxPedagogia uniandes.ed udocx
Pedagogia uniandes.ed udocx
 
BASE DE DATOS
BASE DE DATOSBASE DE DATOS
BASE DE DATOS
 
Oral quiz
Oral quizOral quiz
Oral quiz
 

Ejercicioscliente servidor

  • 1. UNIVERSIDAD REGIONAL AUTÓNOMA DE LOS ANDES “UNIANDES” ESCUELA DE SISTEMAS CARRERA DE SISTEMAS NOMBRE:ANGÉLICA PEÑA CATEDRÁTICO:Ing. LUIS SUÁREZ NIVEL: OCTAVO MATERIA: DESARROLLO CLIENTE SERVIDOR II TEMA: EJERCICIOS DE RMI FECHA: 12-06-2015 IBARRA – ECUADOR
  • 2. SERVIDOR DE ARCHIVOS CLASSSERVER ClassServer es una clase abstracta que proporciona funcionalidad básica de un mini- servidor web, especializada. Para cargar archivos de clase única. Un ClassServer debe extenderse y la subclase concreta debe definir el getBytes Método que es responsable de recuperar los bytecodes para una clase. La ClassServer crea un hilo que escucha en un socket y acepta HTTP GET peticiones. La respuesta HTTP contiene el Bytecodes de la clase que se solicita en la cabecera GET. Para cargar clases remotas, una aplicación RMI puede utilizar un hormigón Subclase de este servidor en lugar de un servidor HTTP. protected ClassServer(int port) throws IOException // Construye un ClassServer que escucha en puerto { this.port = port;//puerto server = new ServerSocket(port); newListener(); } Devuelve una matriz de bytes que contienen los códigos de bytes para * La clase representada por el argumento ruta * la ruta es un punto separa nombre de la clase con * La extensión ".class" eliminado. *return Los bytecodes de la clase * ClassNotFoundExceptionexception si la clase correspondiente * ruta no se pudo cargar. * IOExceptionexception si se produce un error de lectura de la clase public abstract byte[] getBytes(String path) throws IOException, ClassNotFoundException; El hilo "escuchar" que acepta una conexión con el * Servidor, analiza la cabecera para obtener el nombre del archivo de clase * Y devuelve los códigos de bytes para la clase (o error * Si la clase no se encuentra o la respuesta fue mal formado). public void run() { Socket socket;// aceptar una conexión try { socket = server.accept(); } catch (IOException e) { System.out.println("Class Server died:" + e.getMessage());
  • 3. return; } // Crear un nuevo hilo para aceptar la próxima conexión newListener(); try { DataOutputStreamout = new DataOutputStream(socket.getOutputStream()); try { // Obtener la ruta al archivo de clase de la cabecera DataInputStreamin = new DataInputStream(socket.getInputStream()); String path = getPath(in); // Recuperar bytecodes byte[] bytecodes = getBytes(path); // Enviar códigos de bytes en respuesta (asume HTTP / 1.0 o posterior) try { out.writeBytes("C:/Users/LAB1-PC09/Documents/EJERCICIO CS/ClassServer rn"); out.writeBytes("Content-Length:" + bytecodes.length + "rn"); out.writeBytes("Content-Type:application/javarnrn"); out.write(bytecodes); out.flush(); } catch (IOException ie) { } } catch (IOException | ClassNotFoundException e) { // Escribir respuesta de error out.writeBytes("C:/Users/LAB1-PC09/Documents/EJERCICIO CS/ClassServer " + e.getMessage() + "rn"); out.writeBytes("Content-Type:text/htmlrnrn"); out.flush(); } } catch (IOException ex) { // Comer excepción (podría registrar errores para el archivo de registro, pero // Escribir en stdout por ahora). System.out.println("error writing response: " + ex.getMessage()); } finally { try { socket.close();
  • 4. } catch (IOException e) { } } } * Crear un nuevo hilo para escuchar. private void newListener() { (new Thread(this)).start(); } Devuelve la ruta de acceso al archivo de clase obtenida a partir de * Analizar la cabecera HTML. private static String getPath(DataInputStreamin) throws IOException { String line = in.readLine(); String path = ""; Clase extracto de línea GET if (line.startsWith("GET /")) { line = line.substring(5, line.length()-1).trim(); int index = line.indexOf(".class "); if (index != -1) { path = line.substring(0, index).replace('/', '.'); } } // Comer el resto de la cabecera do { line = in.readLine(); } while ((line.length() != 0) && (line.charAt(0) != 'r') && (line.charAt(0) != 'n')); if (path.length() != 0) { return path; } else { throw new IOException("Malformed Header"); } } } CLASSFILESERVER.JAVA El ClassFileServer implementa un ClassServer que
  • 5. *Lee archivos de clases del sistema de archivos. private String classpath; private static int DefaultServerPort = 2001; Construye un ClassFileServer. CLASSPATH la ruta de clases donde el servidor localiza clases public ClassFileServer(int port, String classpath) throws IOException { super(port); this.classpath = classpath; } Devuelve una matriz de bytes que contienen los códigos de bytes para La clase representada por el argumento ruta El ruta es un punto separa nombre de la clase con La extensión ".class" eliminado. return Los bytecodes de la clase ClassNotFoundExceptionexception si la clase correspondiente X ruta no se pudo cargar. public byte[] getBytes(String path) throws IOException, ClassNotFoundException { System.out.println("reading: " + path); File f = new File(classpath + File.separator + path.replace('.', File.separatorChar) + ".class"); int length = (int)(f.length()); if (length == 0) { throw new IOException("File length is zero:" + path); } else { FileInputStreamfin = new FileInputStream(f); DataInputStream in = new DataInputStream(fin); byte[] bytecodes = new byte[length]; in.readFully(bytecodes); return bytecodes; } } Método principal para crear el servidor de clase que lee Los archivos de clase. Esto tiene dos argumentos de la línea de comandos, los Puerto en el que el servidor acepta peticiones y la Raíz de la ruta de clases. Para iniciar el servidor: java ClassFileServer <puerto> <ruta de clase> La base de código de un servidor RMI que utiliza este servidor web haría Simplemente contener una URL con el host y el puerto de la web Servidor (si classpath del servidor web es la misma que
  • 6. Classpath del servidor RMI): java -Djava.rmi.server.codebase = http: // zaphod: 2001 / RMIServer Usted puede crear su propio servidor de clase dentro de su servidor RMI La aplicación en lugar de ejecutar una por separado. En su servidor Principal simplemente crear un ClassFileServer nueva ClassFileServer (puerto, ruta de clase); El ruta Es Un punto separa nombre de la clase con La extensión ".class" Eliminado. Los regresar bytecodes de la clase ClassNotFoundExceptionexception si la clase Correspondiente Ruta no se Pudo cargar. No se pudo cargar. public static void main(String args[]) { int port = DefaultServerPort; String classpath = ""; if (args.length >= 1) { port = Integer.parseInt(args[0]); } if (args.length >= 2) { classpath = args[1]; } try { ClassFileServer classFileServer = new ClassFileServer(port, classpath); } catch (IOException e) { System.out.println("Unable to start ClassServer:" + e.getMessage()); } } }