Uso de Controladores HTTP, MapReduce en Java y Servicios Web SOAP

Informática y Telecomunicaciones3,2 KB

Controladores HTTP

Se usan para modificar uno o varios recursos. Para ofrecer nuevos métodos debe diseñarse un recurso controlador que abstraiga dichas operaciones y pueda accederse mediante un POST. Ayudan a incrementar la separación de responsabilidades entre clientes y servidores. Mejora la eficiencia de la red. Permite a los servidores abstraerse e implementar operaciones de negocio complejas y cambios en recursos de manera atómica. Se usan de la siguiente manera:

  • Se designará un recurso controlador por cada operación.
  • Se lanzará la operación mediante un POST.
  • Si el resultado de la operación es la creación de un recurso devuelve 201 Created con una cabecera Location conteniendo el URI del nuevo recurso.
  • Si el resultado es la modificación de uno o más recursos devuelve 303 See Other con una cabecera Location conteniendo la URI que pueden usar los clientes para obtener una representación de las modificaciones.
  • Si no puede proporcionarse una única URI de los recursos modificados devuelve un 200 OK junto con una representación en el cuerpo del mensaje.

Código del Método Reduce de la Clase Reducer

public void reduce(Text key, Iterable<IntWritable> values, Context context){
    int goles = 0;
    IntWritable result = new IntWritable();
    for(IntWritable val : values){
        goles += val.get();
    }
    result.set(goles);
    context.write(key, result);
}

Implementación del Servicio GestionCurso

Atributos de la clase skeleton que implementa el servicio GestionCurso. Implementar constructor de dicha clase y la operación borrar notas.

public class GestionCurso{
    private static HashMap<NombreAlumno, HashMap<NombreAsignatura, Notas>> asignaturas;
    private static GestiondeUsuariosStub stub;
    private boolean esJefeEstudios;
    
    public GestionCurso(){
        if(asignaturas == null){
            asignaturas = new HashMap<>();
            stub = new GestiondeUsuariosStub();
        }
        esJefeEstudios = true;
    }
    
    public void borrarNotas(NombreAlumno alumno){
        if(esJefeEstudios){
            asignaturas.put(alumno, null);
        }
    }
}

Definición de Atributos del Skeleton de Servicios SOAP

Definir los atributos del skeleton que implementa el servicio:

Scope = soapSession

private static HashMap<String, String> users;
private static ProductStub stub;
private LinkedList<Product> shoppingCart;
private boolean isLogged;

public SkeletonService(){
    if(users == null){
        users = loadUsers();
        stub = new ProductStub();
    }
}

Implementación del Método Login en el Skeleton

private HashMap<String, String> userTable;

public Result login(User user){
    String usr = user.getUser().getName();
    String pwd = user.getUser().getPassword();
    Result r = new Result();
    r.setResult(userTable.containsKey(usr) && pwd.equals(userTable.get(usr)));
    return r;
}

Descargar

PDF Word HTML