Sábado, 13 de marzo de 2010 | 3 comentarios
Ya hemos visto en el Curso de Arquitectura Web cómo las empresas se decantan por Java y los servicios web para sus negocios, es más ,como socio de la Asociación de Técnicos de Informática me ha llegado un correo con la siguiente invitación:
“…te invitamos a la sesión informativa que tendrá lugar en Barcelona el próximo martes 16 de marzo de las 18.30 a las 20.00 horas…”
de un curso online de e-business para empresas, casualmente con los Módulos Propuestos:
- Privacidad.
- Mobile Commerce.
- Métodos de pago electrónico.
- Web Services
Más información »
Aquí he hablado de e-business, servicios web, privacidad y métodos de pago electrónico, es a lo que me dedico habitualmente, a construir tiendas online con pasarelas de pago, gestores documentales con acceso por grupo de usuario y distintos privilegios asi como a diseñar diversos servicios web que ofertan a los clientes operaciones para que puedan integrarlos en sus aplicaciones ya sean para móbiles, web o de escritorio.
Entre los temas que se ha abordado en este blog aún no aparecen los micropagos por sms de lo que hablaré pronto (uno de cada cuatro internautas usa su móvil para acceder a algún servicio de pago según el AECEM-FECEMD). Pero por ahora vamos a centrarnos en las herramientas para empresas, recursos software de los que se dispone actualmente, quizás, primero debamos echar un vistazo al
Y ahora veamos, todos estamos acostumbrados a usar desde los tiempos de las UseNet, grupos de noticias como el de webmasters de la UGR, y ahora ,más o menos recientemente, blogs como WordPress, redes sociales para relaciones entre empresas como Linked in, pero quizás las compañías estén menos en contacto con herramientas como Skype para comunicarse con los comerciales, en definitiva esta es una lista que nos hace ver Internet como una herramienta empresarial:
- BizLayer: plataforma de tramitación electrónica que ofrece a las empresas una solución global para gestionar sus facturas electrónicamente, abarcando todo el ciclo de vida básico de una factura (emisión, recepción y gestión de estados, ejemplo: efec.cert.fnmt.es )
- Jiibe: una aplicación online donde los usuarios indican cual es su puesto de trabajo y, mediante una serie de preguntas, determinarán desde rotundamente falso a completamente verdadero cada una de ellas, tanto para el trabajo actual como el ideal… jiibe.com
- Mashable -> analizar redes sociales, trabajos líder dentro de redes : jobs.mashable.com
- ActiveCollab-> gestión de projectos y herramienta colaborativa para equipos de gente : activecollab.com
- Mic2000 (ERP) aplicación Cliente/Servidor, pensada para las empresas de cualquier tamaño ->mic2000.com/
- Seresnet: portal cuyo objetivo es la promoción del comercio electrónico entre las PYMES y las grandes empresas del sector de la distribución, desarrollado sobre una plataforma Web que garantiza el funcionamiento y la seguridad de los intercambios comerciales a través de Internet -> www.seresnet.com
- Openbravo: econocido desarrollador de soluciones profesionales en software libre para empresas, que ofrece la primera alternativa real al software propietario para empresas. Su sistema en entorno web de gestión integral de empresas (ERP) y de gestión de punto de venta (PoS), openbravo.com
- agpd.es -> Agencia Española de Protección de datos, más info sobre seguridad: datageston.net
- trackglobe : La nube o Cloud Computing es una tecnología que permite a los usuarios disponer de servicios tecnológicos. Las Soluciones Cloud de TrackGlobe (CloudSite, CloudCommerce y CloudMarketing) le permiten gestionar toda su presencia en Internet sin necesidad de instalar ni actualizar
- b2b 2000: business to business (¿qué es?, ejemplo-> universia & apple): riesgo de monopolizar mercado
- Overlap: desarrollo de equipos humanos e innovación de proyectos comerciales
- Monster.es (empresas) : buscar candidatos, cv’s, contratación y colgar ofertas de trabajo
- elogos.es: oferta de formación y desarrollo de élogos se configura a partir del cliente, de sus necesidades de negocio, entendidas a partir del conocimiento sectorial específico de las áreas de Tecnología de la Información y las Comunicaciones, Sector Financiero, Administración Pública, Industria, Construcción y Energía
- etc.
En este punto y antes de continuar, el esquema que debemos tener en mente es el siguiente:

Para comprender mejor el esquema necesitamos conocer algunos conceptos, pero ¿para qué necesitamos software avanzado de empresas para hacer e-business?…es decir…
¿Para qué sirven las herramientas de software avanzado de e-business?
- Son aplicaciones para la empresa que siguen el modelo de línea de negocio, de hecho, empresas como Telefónica ya las están utilizando
- Soporte a operaciones:
- Planificación de Recursos de la Empresa (ERP) -> gestión e integración de dichos recursos
- Sistemas de Gestión de la Cadena de Suministros: las empresas pueden prever las demandas del mercado, innovar respuestas ante sus volubles condiciones y coordinar las operaciones en todas las redes globales. Oracle SCM proporciona soluciones sectoriales específicas que están basadas en las mejores aplicaciones y abarcan desarrollo de producto, gestión de la demanda, planificación de ventas y operaciones, gestión del transporte y gestión de suministros. Ejemplo: Oracle Supply Chain Management (SCM)
- PRM : Gestión de Relaciones entre Socios -> automatización de tareas entre vendedores y canales indirectos. Las sencillas herramientas de PRM ofrecen visibilidad del rendimiento de su canal, y ayudan a gestionar de forma efectiva los socios para hacerlos más productivos y más implicados en el éxito.Aumento de la facturación y cartera de clientes, aumento de vínculos gracias a técnicas de venta cruzada.
- OSS – Sistema de Soporte de Operaciones -> para proveedores de Servicios a la hora de implementarlos, ejemplo: Nokia
- Inteligencia de Negocio : ver más
- Soporte administrativo y apoyo:
- ERM: Gestión de derechos digitales
- KM: Gestión del conocimiento
- Inmótica -> automatización de edificios corporativos, hoteleros, empresariales y similares para reducir costes y consumo energético (edificios inteligentes)
- Sistemas comerciales:
- BSS -> Sistema de Soporte al Negocio : recopilar información y análisis de datos de clientes (ejemplo banco y el dato entero de arquitectura) -> fijar precios

- CRM -> mejora la rentabilidad. Es la Combinación de Acciones Estratégicas orientadas a fortalecer las relaciones con los Clientes. Es un proceso integrado de marketing, ventas y servicios dentro de una organización orientado a gestionar el Principal ACTIVO de la Empresa: “La Información de sus Clientes”; con el fin de Retenerlos y Rentabilizarlos; y todo soportado en la Tecnología de la Información. La Tecnología hace posible este Objetivo, colaborando en mejorar los Procesos Comerciales de Ventas y Servicios al Cliente. Ejemplo.
SugarCRM.
- Social Media: incursión de las empresas en las redes sociales …¿Cómo empezar?
- e-business + TIC (Tecnologías de la Información y la Comunicación): niveles…
Ahora pasaremos a explicar un poco mejor esto de los niveles del punto 5
- Entrada: todo negocio tiene un comienzo, se ha de realizar un estudio de marketing en el emplazamiento sea este virtual o físico antes de lanzarse a la aventura
- Consolidación: una vez realizado el estudio comenzamos con las primeras campañas de productos
- SCM : Sistema de Gestión de Suministros -> en otras palabras, preveer las demandas del mercado una vez consolidado
- ERP: Planificación de recursos de la Empresa:
- Aplicaciones multi-modulares -> soluciones integrales (a veces), diseñadas para administrar procesos internos del negocio y la optimización de la cadena de valor…apps: factura., contabilidad , compras, producción, transporte, informes de gestión y RRHH
- BI (Inteligencia de Negocio) y KM (Gestión del Conocimiento) vistos anteriormente
- CRM : Gestión de las relaciones con los clientes: anticipar ,conocer y satisfacer las necesidades y los deseos de los clientes:
- Mantenimiento y satisfacción de la cartera de clientes
- Búsqueda de servicios personalizados para mantener la lealtad de nuestros clientes y maximizar su valor
- Búsqueda de procesos de captación de nuevos clientes, mantenimiento de redes sociales, gestión de reclamaciones, tickets (PHP-Ticket), etc.
- Aplicaciones tácticas
- Datawarehouse: base de datos orientada al apoyo en toma de decisiones, consultas cruzadas de fuentes variadas, como se dijo sobre Bing vs Google en el Congreso SEO de Bilbao 2010-> ver manual
- DDS : almacenamiento de datos operativos -> datos para Datawarehouse
- Reporting: fácil acceso a información en los Datawarehouse
- CRM analítico: estudiar el comportamiento de los clientes y actuar en resonancia
- Aplicaciones estratégicas:
- EIS: Sistemas de Información para Ejecutivos -> wiki
– BI (Inteligencia de Negocio) : información disponible de cada departamento para organizarla y procesarla de acuerdo al modelo de la toma de decisiones por medio de los directivos
- Aplicaciones de integración:
- EAI: Integración de Aplicaciones de Empresa -> Arquitectura tecnológica de la que se puede disponer dentro de la empresa, formas de compartirla, información de fuentes y aplicaciones corporativas heterogéneas…
Resumen de herramientas e-business:

¿Cómo influye la cadena de valor en el e-business?
Porter propuso esta cadena como principal herramienta para identificar fuentes de generación de valor para el cliente, es decir, actividades estratégicas en la empresa ,ya sean:
- Primarias: contribuyen directamente a obtener productos para el consumidor: logística de entrada/salida de materias primas, marketing, servicios de venta y post-venta,etc.
- De soporte: que proporcionan los inputs e infraestructura necesaria para las primarias: la propia infraestructura de la empresa, gestión de rrhh, desarrollo tecnológico, etc.
Por ejemplo, las intranets proporcionan una infraestructura y un significado de las actividades secundarias…
Las empresas pueden crear valor a través de la recogida, organización, selección, resumen y distribución de la información, por lo que pueden aumentar su eficacia si trasladan actividades de la cadena de valor real a la cadena de valor virtual presentada:

Las cuatro fuentes potenciales de creación de valor en el e-business son: la eficacia->aumento de simetrías de información, las sinergías -> verticales(servicios postventa) u horizontales (hardware) conjuntos que proporcionan más valor, la retención -> encontrar motivaciones de compra, innovación -> nuevas formas de estructurar procesos.
Seguramente hay muchas herramientas más disponibles, algún comentario?
Jueves, 11 de marzo de 2010 | 3 comentarios
Para terminar con las Arquitecturas Web vamos a dejar que Pablo García Sánchez nos cuente qué otras hay además de las que hemos visto: Otras Arquitecturas y metodologías SOA
EJERCICIO SIMPLE
- Realizar un servicio web en Java con las operaciones:
- String addUser(String user, String pass) que la guarde en una lista (variable de clase) y devuelva un mensaje diciendo que se ha guardado
- boolean loginUser(String user, String pass) que compruebe que el usuario existe recorriendo la lista
- (podemos usar dos listas de strings, HashMaps o crear una clase Usuario y guardarla en una List<Usuario>)
- Testearlo en el navegador
- Descargar ejercicio simple
EJERCICIO AVANZADO
- Desarrollar dos servicios web (cada uno con su WSDL separado) utilizando JAX-WS. El primero debe recibir un XML con datos de un usuario <nombre><edad><contraseña><tel> y parsear ese XML con JDOM comprobando si hay excepciones y guardarlo en una base de datos.
- El segundo debe recibir un usuario y contraseña y devolver true si existe el usuario en la base de datos.
- Finalmente crear un proceso BPEL con dos operaciones
- Crear usuario (que ataque al primer servicio)
- Hacer Login (que ataque al segundo) y devuelva un mensaje diciendo si los datos son correctos o no
- Capturar Excepciones
EJERCICIO BPEL AVANZADO: descargar
fin Del Curso amigos
« Volver al Curso de Arquitectura de Servicios Web con Java y PHP
Lunes, 1 de marzo de 2010 | sin comentarios
Una vez creado nuestro paquete con la aplicación Java para interactuar con los servicios web como hemos visto en la lección anterior, vamos a realizar las tareas que habíamos dicho paso por paso. Es decir, vamos a crear un servicio web con una operación para añadir un usuario con su nombre de usuario, password, un nombre de piloto y una nave con su cantidad de armamento, otro para obtener una lista de usuarios con pilotos y naves y otro para hacer un login con usuario y password, para ello:
CREAR DIRECTORIO DE XML:
- Dentro de las propiedades del Proyecto Java Web “Excalibur” en la categoría de Sources -> Package Folder -> Add Folder -> creamos el directorio “XML” dentro de “src” y de etiqueta (label) ponemos “XML”. Aquí vamos a colocar nuestros ficheros WSDL para ver como se construyen servicios web a partir de estos, pero primero el método sencillo…ahora se puede añadir al esquema de forma gráfica cualquier dato y se formatea por el sistema ,podemos crear un servicio web a partir del fichero…
CREAR SERVICIO WEB
- En el paquete “es.ugr.battlegalactica.servicios” -> botón derecho -> New -> Web services -> Web Service -> “construccionNexus”. Añadir el constructor de la clase y la variable estática Nexus nexus de ésta clase, que se incializa en dicho constructor…
CREAR OPERACIÓN PARA AÑADIR UN USUARIO CON SUS PILOTOS Y SUS NAVES ASOCIADAS
- Segundo botón en el código dentro de la clase “construccionNexus” -> “Insert Code…” -> “Add Web Service Operation” -> le llamamos “crearUsuarioConPilotosYnaves”
- En return type (tipos devueltos) ponemos java.lang.Long y así, si es -1 ha ocurrido un error y en otro caso es el ID del nuevo usuario
- Para los parámetros necesitamos que tenga: un nombre y password de usuario,un nombre de piloto y un nombre de nave; por lo que empezamos por añadir el primer campo con name: “datos_usuario” , type: Choose -> find type -> buscamos “usuario” y seleccionamos el del modelo de datos de BSGModelo, ahora hacemos lo propio para “datos_piloto” -> Piloto y “datos_nave” -> Viper. Pinchamos en “OK” y se genera el código en Java, sólo hemos de meter los datos correspondientes que nos pasa tan amablemente el servicio web a la base de datos de Nexus ,tal como hacíamos en Prueba.java…
la función de la operación debe quedar así:
@WebMethod(operationName = "crearUsuarioConPilotosYnaves")
public Long crearUsuarioConPilotosYnaves(@WebParam(name = "datos_usuario")
Usuario datos_usuario, @WebParam(name = "datos_piloto")
Piloto datos_piloto, @WebParam(name = "datos_nave")
Viper datos_nave) {
if (nexus.obtenerUsuario(datos_usuario.getUsuario())!=null ){
//El usuario ya existe, salir!
return new Long(-1);
}
//Añadir Viper
Viper v = null;
try { //Buscar viper:
v = nexus.obtenerViper(datos_nave.getNombre());
} catch (ViperNoEncontradoException ex){
//La nave no existe, la añadimos
v = new Viper(datos_nave.getNombre());
v.setArmamento(datos_nave.getArmamento());
} finally {
//En otro caso, la nave es la misma?
if (!v.getId().equals(datos_nave.getId())){
//No es la misma, error
return new Long(-1);
}
}
//Añadir piloto:
Piloto p = null;
try {
p = nexus.obtenerPiloto(datos_piloto.getId());
} catch (PilotoNoEncontradoException ex){
//NO Existe el piloto, crearlo
p = new Piloto(datos_piloto.getNombre(), datos_piloto.getDestreza(),
v.getId());
nexus.guardarPiloto(p);
} finally {
//El piloto existe, tiene la misma ID?
if (!p.getId().equals(datos_piloto.getId())){
return new Long(-1);
}
}
ArrayList<Long> lista_pilotos = new ArrayList<Long>();
lista_pilotos.add(p.getId());
//Añadir el usuario con los datos almacenados ya en Nexus:
Usuario u = new Usuario(
datos_usuario.getUsuario(),
datos_usuario.getPassword(),
lista_pilotos );
nexus.guardarUsuario(u);
return u.getId();
}
Para probarla primero hacemos click con el segundo botón del ratón en el proyecto Excalibur > Deploy ,esto instalará la aplicación web con la nueva operación compilada, ahora vamos a la lista de servicios web y pulsamos en test Web Service, ya podemos añadir usuarios con un piloto y una nave
CREAR OPERACIÓN PARA HACER UN LOGIN CON USUARIO Y PASSWORD
- Una vez creado un usuario en la base de datos la función para hacer un login es tan simple como esta:
@WebMethod(operationName = "hacerLogin")
public String operation(@WebParam(name = "usuario")
String nombre_usuario, @WebParam(name ="password") String contrasena) {
//TODO write your implementation code here:
Usuario u = nexus.obtenerUsuario(nombre_usuario);
if (u==null) return "El usuario no existe";
else if (u.getPassword().equals(contrasena)){
return "Acceso concedido";
} else {
return "Contraseña inválida";
}
}
Recordar que para testear los servicios podemos hacerlo en SOAP UI:

CREAR OPERACIÓN PARA OBTENER UN LISTADO DE USUARIOS
- Es simplemente crear un listado a partir de recorrer el array de estos y devolverlo para que lo analice sintácticamente el sistema y devuelva la construcción XML correspondiente:
public List<Usuario> listadoUsuarios() {
List<Usuario> listado = null;
for (Iterator<Usuario> iter = nexus.listarUsuarios(); iter.hasNext(); ){
listado.add(iter.next());
}
return listado;
}
Buenas prácticas de programación: Los servicios web son un tipo de comunicación, añadir lógica de programación resulta en algo no-generalizable y por lo tanto ,no reutilizable. Resumiento: hay que hacer una conversión de los datos de un modelo de datos en un modelo de datos de un servicio web,i.e.,las clases con su lógica de programación en Java a un modelo del servicio y luego el paso inverso. Entre medias están las páginas web u otros clientes que los utilizan con su propia lógica. Por ello se recomienda diseñar los servicios web lo último, cuando ya tenemos todo lo que necesitamos en cuanto a datos y lógica interna con ellos, separar cada fichero WSDL para cada servicio es recomendable por si necesitamos cambiar algo y nos cuesta menos trabajo.
CREAR CLIENTES PARA CONECTARSE A LOS SERVICIOS WEB
- En el proyecto “Excalibur” creamos el paquete “es.ugr.battlegalactica.servicios” y dentro de este -> segundo botón del ratón-> New -> Other -> Web Services -> Web Service Client -> seleccionamos del proyecto “Excalibur” el Servicio Web “construccionNexus” -> OK ; y ahora en package ponemos “es.ugr.battlegalactica.clientes”. Esto debe crearnos todas las clases Java para comunicarse con las operaciones del Servicio Web. Pero para saber que funcionan usamos un JUnit Test , creamos un paquete llamado “es.ugr.battlegalactica.clientes” y dentro un nuevo JUnit Test para clases existentes, elegimos la clase a testear y hacemos como en la primera lección las unidades de prueba.
< Volver al curso de Arquitectura de Servicios Web con JAVA y PHP
Martes, 23 de febrero de 2010 | 8 comentarios
En este tutorial, vamos a ver cómo instalar y configurar NetBeans para trabajar tanto con Java como con PHP y crear nuestros primeros servicios, Pruebas de Unidad de las funciones de las clases,etc.
INSTALACIÓN de NetBeans
- Descargar e instalar Java SE JDK 6 de Sun y su Documentación (ZIP): aquí
- Descargar e instalar NetBeans: aquí (recomendado instalarlo en una ruta sin espacios)
- Arrancar NetBeans, actualizar, y después ir a “Tools -> Java Platforms -> J2SE -> JDK 1.6″ (o vuestra versión) y pinchar en la pestaña JavaDoc -> Add Zip/Folder -> y elegís el fichero ZIP de la documentación del paso uno, ahora podemos consultar la documentación al estar en cualquier miembro de la SE JDK mediante el segundo botón del ratón -> “Show JavaDoc”
CREACIÓN del PRIMER PROYECTO CON NetBeans:
- Vamos al menú: File -> New Project -> Elejimos el tipo Java -> Java Application
- En el nombre ponemos “BSGModelo” y en “Create Main Class” ponemos: es.ugr.battlegalactica.Prueba
este nombre indica que la clase se llama Prueba e irá dentro de un paquete cuya jerarquía empieza por battlegalactica como contenedor dentro de UGR dentro de España…
- Se debe de haber creado la estructura de directorios y los ficheros necesarios
- Ahora dejaremos el código fuente de Prueba.java como sigue:
//
//Web 2.0: Arquitectura Orientada a Servicios en Java
//Primer Modelo: BSGModelo con la clase Prueba
//@author Juan Belón Pérez
//package es.ugr.battlegalactica;
//
//Clase con los 3 primeros ejercicios propuestos
//@author Juan Belón Pérez
//
public class Prueba {
//
//Función principal.
//Imprime por pantalla un mensaje fijo.
//Dependiendo de si en los argumentos, separados por comas,
//se usa el título Adama, se saluda a la persona de distinta forma
//que si no se usa o se usa Piloto.
//@param args la linea de argumentos del programa
//
public static void main(String[] args) {
System.out.println("Prueba del modelo de datos BattleStarGallactica");
String todo ="";
String[] nombres ;
for (int i=0; i<args.length; i++){
todo += args[i]+" ";
}
System.out.println("Cadena de entrada: \n- -\n" + todo + "\n- -\n");
nombres = todo.split(",");
for (int i=0; i<nombres.length; i++){
System.out.println(crearSaludoRespeto(nombres[i]));
}
}
//
//Utiliza los espacios para separar los títulos y las comas para separar
//las personas. Devuelve un saludo con el respeto adecuado al rango.
//@param String nombre
//@return String
//
public static String crearSaludoRespeto(String nombre){
String saludo = "";
if (nombre==null) return "Hay alguien ahi?";
String[] partes = nombre.split(" ");
if (partes.length>1){
if (partes[0].equalsIgnoreCase("adama")){
saludo = "Bienvenido, comandante " + partes[1];
} else if (partes[0].equalsIgnoreCase("piloto")) {
saludo = "Bienvenido, piloto " + partes[1];
} else { //nombre compuesto
saludo = "Bienvenido, civil " + nombre;
}
} else { //solo nombre, es un civil
if (partes.length>0)
saludo = "Bienvenido, civil " + nombre;
else
saludo = "Hay alguien ahi?";
}
return saludo;
}
}
- Ahora compilamos, y para probar que funciona en todos los casos le metemos las siguientes entradas a mediante el menú : Pestaña “Projects -> BSGModelo” -> Segundo botón del ratón-> “Set configuration -> Customize…” y en argumentos colocamos la cadena: Adama Juax,Piloto Migue,Sara,Jesús González, la salida debe ser como esta:
Prueba del modelo de datos BattleStarGallactica
Cadena de entrada:
- -
Adama Juax,Piloto Migue,Sara,Jesús González
- -
Bienvenido, comandante Juax
Bienvenido, piloto Migue
Bienvenido, civil Sara
Bienvenido, civil Jesús González
BUILD SUCCESSFUL (total time: 0 seconds)

- Sólo resta, crear una prueba para esta clase mediante el menú del segundo botón sobre es.ugr.battlegalactica: “Tools -> Create JUnit Tests” -> desmarcamos “Test Finalizer” por ahora, ya os explicaré por qué…-> OK
- Para probar todos los casos de la función crearSaludoRespeto primero quitamos todo de testMain para que no falle ya que no hace nada y luego añadimos las pruebas a la función testCrearSaludoRespeto y dejamos el fichero tal que así:
package es.ugr.battlegalactica;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
//
////@author webser22
//
public class PruebaTest {
public PruebaTest() {
}
@BeforeClass
public static void setUpClass() throws Exception {
}
@AfterClass
public static void tearDownClass() throws Exception {
}
@Before
public void setUp() {
}
//
//Test of main method, of class Prueba.
//
@Test
public void testMain() {
}
//
// Test of crearSaludoRespeto method, of class Prueba.
//
@Test
public void testCrearSaludoRespeto() {
System.out.println(
"Probando la función crearSaludoRespeto de la clase Prueba");
assertEquals("Correcto", Prueba.crearSaludoRespeto(null),
"Hay alguien ahi?");
assertEquals("Correcto", Prueba.crearSaludoRespeto("Adama Juax"),
"Bienvenido, comandante Juax");
assertEquals("Correcto", Prueba.crearSaludoRespeto("Piloto Migue"),
"Bienvenido, piloto Migue");
assertEquals("Correcto", Prueba.crearSaludoRespeto("Sara"),
"Bienvenido, civil Sara");
assertEquals("Correcto", Prueba.crearSaludoRespeto("Jesús González"),
"Bienvenido, civil Jesús González");
}
}
Entonces probamos mediante el menú “Run -> Test ‘BSGModelo’ ” y ha de aparecer “passed” en el output y el mensaje “Probando la función crearSaludoRespeto de la clase Prueba” en la salida de los resultados de JUnit Results. ¿Para qué sirven las Pruebas de Unidad?
Y esto es todo, el fichero con el proyecto se puede descargar aquí, tiene la documentación generada (hay que actualizarla).
Para el que esté impaciente ,puede continuar por aprender cómo utilizar el editor NetBeans para PHP o bien volver al índice de este Curso de Arquitectura de Servicios en Java en comunicación con PHP.