Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
N-Capas y Servicios Web
Message
From
23/03/2004 07:04:30
Ignacio Amoros
Juguetes Pastor, S.L.
Altea, Spain
 
 
General information
Forum:
Visual FoxPro
Category:
Web Services
Miscellaneous
Thread ID:
00887428
Message ID:
00888794
Views:
48
Hola Martín.

Ya he localizado dónde está el problema, pero no sé cómo solucionarlo. Te cuento:

Todos los pasos detallados aquí los hago en mi máquina de desarrollo para descartar cualquier problema en la comunicación y poder aislar mejor el problema.

1.Siguiendo el artículo de RR he creado un componente y lo he hecho todo tal cual lo explica él, a diferencia de que mi componente realiza una consulta sobre una tabla de una BD.

2.Hago la instancia según indico a continuación:
oMiObjeto=Createobject("mssoap.soapclient30")
oMiObjeto.mssoapinit("http://miequipo/capadatos/capadatos.wsdl")
lcXML = oMiObjeto.ListaDatos()
XMLToCursor(lcXML,"micursor")
Browse
Esto funciona al ejecutarlo la primera vez, pero al ejecutarlo la segunda vez, me devuelve un error diciendo que no encuentra el alias.
Al ver esto, paso a ejecutar el componente como servidor COM+, es decir, sin paso a través de SOAP:
oMiObjeto=CreateObject("capadatos.capadatos")
lcXML = oMiObjeto.ListaDatos()
XMLToCursor(lcXML,"micursor")
Browse
Esto funciona una y otra vez, sin ningún problema, pudiendo invocar al método las veces que quiera sin que falle.

3.Al comprobar los resultados, lo que hago es "apagar" NO DESHABILITAR, el servicio dentro de COM+, y ya me deja hacer funcionar las llamadas a través de SOAP, pero tengo que "apagar" el servicio siempre antes de cada una de las llamadas a los métodos del componente.

Todo esto, insisto, realizado en mi máquina de desarrollo, sin llamadas a otros equipos.

¿Me he perdido algo?

Te muestro aquí el código del componente, que está sacado de un artículo de Jorge Espinosa:
DEFINE CLASS capadatos AS Session OLEPUBLIC

PROCEDURE Opendata as VOID

   IF ! DBUSED('C:\Temp\Northwind\northwind.dbc')
      OPEN DATABASE 'C:\Temp\Northwind\northwind.dbc'
   ENDIF   
   
ENDPROC

PROCEDURE ListaDatos() as String
LOCAL oCaClientes as CursorAdapter
LOCAL oXaClientes as XMLAdapter
LOCAL Retorno as String
   
   This.OpenData()

   oCAClientes = CREATEOBJECT("CursorAdapter")
   WITH oCAClientes
      .Alias = "Clientes"
      .DataSourceType = "NATIVE"
      .SelectCmd = "Select CustomerID, CompanyName, ContactName " + ;
         "from Customers where Country = 'Mexico'"
      .Tables = "Customers"
      .CursorFill()
   ENDWITH
   
   oXAClientes = CREATEOBJECT("XMLAdapter")
   oXAClientes.AddTableSchema("Clientes")
   oXAClientes.ToXML("Retorno")
   
   oCAClientes = null
   oXAClientes = null
   Return(Retorno)
   
ENDPROC

ENDDEFINE
Espero haberme expresado con claridad. Si puedes tú o alguien aclararme dónde está el error lo agradecería mucho, ya que llevo un retraso considerable con el tema.

Un abrazo
Nacho
Nacho Amorós
E-Mail: infomartin@terra.es
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform