Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Integración PHP / Java a través de Webservices (POO)

Estas en el tema de Integración PHP / Java a través de Webservices (POO) en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Estoy investigando esta área y quisiera conocer experiencias o alguna sugerencia sobre materiales o artículos al respecto (este tema también lo pregunto en el área ...
  #1 (permalink)  
Antiguo 10/03/2007, 09:22
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Integración PHP / Java a través de Webservices (POO)

Estoy investigando esta área y quisiera conocer experiencias o alguna sugerencia sobre materiales o artículos al respecto (este tema también lo pregunto en el área de Java y está a su vez relacionado con POO).

La idea es construir un sitio web basado en PHP y a través de webservices (soap) acceder a la "capa de dominio" desarrollada enteramente en Java.

He realizado algunas pruebas sencillas y han funcionado sin problemas, accediendo a un webservices implementados en Java al estilo:

Código PHP:
$client = new SoapClient("http://sitio.com/Calculator.wsdl");

echo 
$client->hola("hola mundo"); 
Lo único que hace es devolver "tu has dicho 'hola mundo'", pero se empieza a complicar cuando quiero pasar valores tipados como fechas, pues Java espera algo del tipo "Date".

Pero tengo las siguientes dudas (no tengo experiencia en el tema):
  • ¿Cual es la forma para trabajar con los tipos de datos de ambos mundos? PHP es tipado dinámico y no 100% OO, lo opuesto a Java
  • ¿Se puede implementar un acceso transparente a las clases disponibles en Java? puedo pasar objetos de un lado a otro, o debo usar alguna otra estrategia para poder hacerlo así?

Tal vez debe manejar todo como String y rearmarlos del lado de Java.

¿Sugerencias, experiencias?
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #2 (permalink)  
Antiguo 10/03/2007, 13:22
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Integración PHP / Java a través de Webservices (POO)

La idea a mi parecer de un WebService es la capacidad de hacer procesos transparentes, que no dependan de un lenguaje en especifico (por eso lo mas comun es enviar requests XML (o sea un string)).

Entonces lo que se debe hacer es enviar un XML desde PHP con el request bien puesto, y desde Java interpretarlo y extraer las partes que necesitas, y devolver el resultado.
  #3 (permalink)  
Antiguo 12/03/2007, 05:12
Avatar de lcervantes  
Fecha de Ingreso: abril-2002
Mensajes: 137
Antigüedad: 22 años
Puntos: 0
De acuerdo Re: Integración PHP / Java a través de Webservices (POO)

Interesante este hilo.

No tengo experiencia en el tema, pero por lo que he visto, java la utilizan para la parte de acceso a la Base de Datos devolviendo XML, y php en la parte de implementación, visualización. Recogiendo estos datos del xml generado y enseñando la pagina.

Otra cosa que igual se tendria que considerar es que interesaría que los datos devueltos estuvieran en la misma codificación. UTF-8 creo que es la mas adecuada. Aveidentemente depende de como tengas metidos los datos en la Base de Datos.

Saludos
  #4 (permalink)  
Antiguo 12/03/2007, 13:46
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Re: Integración PHP / Java a través de Webservices (POO)

Ambos tienen razón, voy a explicar un poco mejor ahora que tengo más información y voy entendiendo mejor el problema.

Por donde viene mi confusión:

Tengo el concepto sobre WS y así lo he usado las veces que lo he necesitado: trabajar en bruto con datos entregados como "cadena de texto", en la mayoría de los casos en formato "xml".

La situación que me plantea mi contraparte (experta en Java, ignorante en PHP) es que de su lado trabaja con DTOs (Data Transfer Object) y me argumenta que yo debería poder recibir y hasta enviar DTOs de un lado a otro (yo, conocedor de PHP, no experto ni en WS ni en Java ).

Aquí es donde me pierdo, y no sé si es posible, y de que forma. He buscando información pero sin éxito.

¿Alguien que me prenda una vela?
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #5 (permalink)  
Antiguo 12/03/2007, 16:52
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Integración PHP / Java a través de Webservices (POO)

Pues yo creo estaria interesante ubicar un poco del tema de los DTOs y hacer una implementacion en PHP, aunque yo repito, XML fue desarrollado para esto, solo que luego a los programadores nos da "flojera" estar construyendo y parseando los XMLs
  #6 (permalink)  
Antiguo 12/03/2007, 20:44
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Re: Integración PHP / Java a través de Webservices (POO)

Si, esa es la sensación que tuve desde el principio, pero como todo tema que uno no domina, por lo menos dejo el "beneficio de la duda"

Este vendría a ser el diagrama con la arquitectura que me plantean:

__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #7 (permalink)  
Antiguo 12/03/2007, 21:13
 
Fecha de Ingreso: noviembre-2003
Mensajes: 798
Antigüedad: 20 años, 4 meses
Puntos: 8
Re: Integración PHP / Java a través de Webservices (POO)

hola, no sé si sirve para el caso, encontré este hilo buscando patrones en php Transfer Object

saludos.
  #8 (permalink)  
Antiguo 13/03/2007, 07:04
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Re: Integración PHP / Java a través de Webservices (POO)

También podría usarse JSON para el intercambio, que tiene soporte tanto en java como en PHP.
  #9 (permalink)  
Antiguo 13/03/2007, 08:27
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 10 meses
Puntos: 7
Re: Integración PHP / Java a través de Webservices (POO)

Todo esto es un mundo... también tenemos .NET que puede devolverte objetos de tipo DataTable...

Si desde PHP5, llamamos a un Método de un WS que nos devuelve un objeto DataTable, con los datos... ¿Como podríamos tratarlo?

Si alguien sabe la respuesta, le agradecería que me contara, yo solo pongo el problema sobre la mesa, por que no tengo ni idea.
__________________
Charlie.
  #10 (permalink)  
Antiguo 13/03/2007, 09:04
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Re: Integración PHP / Java a través de Webservices (POO)

Les comparto nuestros avances y pruebas:

Código PHP:
<?php

class Cliente{
    public 
$nombre;
    public 
$direccion;
    function 
__construct($n,$d){
        
$this->nombre $n
        
$this->direccion $d
    }
}
$clientSoap = new SoapClient("http://sitio.com:8080/WSFinancialFacade?wsdl ");

$unCliente = new Cliente("enrique""parque posadas");

$unObjetoRetornado $clientSoap->hola$unCliente ) ;

var_dump($unObjetoRetornado);

echo 
"Retorno: ".$unObjetoRetornado->nombre;

?>
Resultado

Código PHP:
object(stdClass)#4 (2) { 
   
["nombre"]=>  string(20
   [
"direccion"]=>  string(20
}

RetornoMi nombre es "enrique" 
Otras pruebas

Código PHP:
var_dump($clientSoap->__getFunctions()); 
Retorna

Código PHP:
array(1) { 
   [
0]=>  string(27"Cliente hola(Cliente $c)" 

Ejecuto

Código PHP:
var_dump($clientSoap->__getTypes()); 
Retorna

Código PHP:
array(1) { 
   [
0]=> string(53"struct Cliente { string nombre; string direccion; }" 

Resumiendo

Se logra a través del wsdl armar algo de lo que está del lado del servidor, pero dinámicamente. Según me comenta mi colega en java tiene la opción de hacer wsdl2java (o algo similar) y generar estáticamente la estructura del lado del cliente (como un cabezal), así, si quiere usarla sabe como hacerlo sin tener que solicitar información extra. En el caso opuesto (php), estaríamos armando siempre dinámicamente la estructura pero de forma incompleta (mucho menos información).

Los DTOs sería en este caso la clase Cliente que viaja por el WS.

¿No estamos tan lejos ni tan mal, no?
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #11 (permalink)  
Antiguo 13/03/2007, 09:54
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Integración PHP / Java a través de Webservices (POO)

Muy interesante todo lo que propones Enrique, y nos sirve para abstraer aun mas y dar mas seguridad a todo el sistema al limitar el acceso fisico a los datos a travez de otra capa de seguridad.
  #12 (permalink)  
Antiguo 13/03/2007, 10:00
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Re: Integración PHP / Java a través de Webservices (POO)

Como dice la frase: "lo lograron porque no sabían que era imposible"

La verdad que es todo un mundo nuevo y recién estoy tratando de digerir los conceptos, pero yo también pesaba que WS era sinónimo de XML y parseo.

¿Y ahora, cómo se hace para realizar una conexión segura de un WS?
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #13 (permalink)  
Antiguo 13/03/2007, 11:48
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Integración PHP / Java a través de Webservices (POO)

Yo creo que el SoapClient es capaz de usar SSL si usas https para abrir la conexion, pero no estoy seguro abra como dices, mirar la documentacion del SoapClient.
  #14 (permalink)  
Antiguo 13/03/2007, 17:02
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 19 años, 10 meses
Puntos: 834
Re: Integración PHP / Java a través de Webservices (POO)

Muy interesante. Ojalá puedas seguir compartiendo así aprendemos todos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:56.