Exposing SQLAdapter service as WebSvc for CRUD operation.

Hello there,

I’ve configured SQL Adapter service connecting MS SQL Express server, and tested it in designer, returns the dataset as expected, then exposed the adapter service as webservice through WSDL descriptor. However, when i invoke the webservice using SoapUI, getting the following error. Do I need provide SQL login credential as part of SOAP request?

<soapenv:Envelope xmlns:soapenv=“http://schemas.xmlsoap.org/soap/envelope/”>
soapenv:Body
soapenv:Fault
soapenv:Server
[ISS.0088.9112] An Exception was thrown in the server:[ART.117.4002] Adapter Runtime (Adapter Service): Unable to invoke adapter service DigitalServices.services:programdata.
[ART.118.5062] Adapter Runtime (Connection): Unable to find connection ?: error Illegal character ?.
http://localhost:5555/ws

<webM:exception xmlns:webM=“http://www.webMethods.com/2001/10/soap/encoding”>
webM:classNamecom.wm.pkg.art.error.DetailedServiceException</webM:className>
<webM:message xml:lang="">[ART.117.4002] Adapter Runtime (Adapter Service): Unable to invoke adapter service DigitalServices.services:programdata.
[ART.118.5062] Adapter Runtime (Connection): Unable to find connection ?: error Illegal character ?.</webM:message>
</webM:exception>

</soapenv:Fault>
</soapenv:Body>
</soapenv:Envelope>

Appreciate guidance and thanks in advance.

1 Like

Hi Dinesh,

can you share the original Soap-Request as well as the service configuration (Input/Output and Adapter Settings)?

Evtl. you have to create Flow Service which in turn calls the adapter service.
Then expose the Flow Service through WSDL Descriptor instead of the adapter service.

Or you can just omit the field connection name from Soap-Request.
This applies to all fields starting with a $-sign.

Soap-UI fills all fields with ‘?’ by default even if it is an optional field and might break the data flow.

Regards,
Holger

Thanks for the information.
As you suggested, I’ve added a flow service and added the adapter with no input, then created new web service descriptor. However, when I look at the input xml, it looks weird… Attaching the designer screen shot for your ref.

<soapenv:Envelope xmlns:soapenv=“http://schemas.xmlsoap.org/soap/envelope/” xmlns:dig=“http://localhost/DigitalServices.services:svcPrograms”>
soapenv:Header/
soapenv:Body
dig:flwListPrograms/
</soapenv:Body>
</soapenv:Envelope>



Hi Dinesh,

can you explain why you think the wsdl looks weird?

Did you try to import the WSDL in SoapUI?

Does invoking the service rerturn the expected data?

Regards,
Holger

Nope.
I was not getting the result that I had expected.

Request Xml:
<soapenv:Envelope xmlns:soapenv=“http://schemas.xmlsoap.org/soap/envelope/” xmlns:dig=“http://localhost/DigitalServices.services:svcPrograms”>
soapenv:Header/
soapenv:Body
dig:flwListPrograms/
</soapenv:Body>
</soapenv:Envelope>

Response SOAP XML:
<soapenv:Envelope xmlns:soapenv=“http://schemas.xmlsoap.org/soap/envelope/”>
soapenv:Body
<ser-root:flwListProgramsResponse xsi:nil=“true” xmlns:ser-root=“http://localhost/DigitalServices.services:svcPrograms” xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”/>
</soapenv:Body>
</soapenv:Envelope>

Regards
Dinesh

Pass the connection name in the SOAP UI request and you will see the expected output. The error says as below:

           <webM:message xml:lang="">[ART.117.4002] Adapter Runtime (Adapter Service): Unable to invoke adapter service DigitalServices.services:programdata.

[ART.118.5062] Adapter Runtime (Connection): Unable to find connection ?: error Illegal character ?.</webM:message>

The solution worked. Thanks Mahesh.

Hi,

I consider this just a workaround as this might force the partner to provide the connection name any time they call the Webservice.

As the parameter connectionName as well as the credentials are optional fields for the adapter service and usually should not be exposed to external partners for security reasons just omit (remove) these fields from the request and the IS will use the values used at the time the service was created.

Can you share the sample SoapUI-Request as well as the input/output-signature of the adapter service and the WSD-provider node (if existing) resp. the flow service?

You will have to do some handling in the flow service if the connection name is missing before you map it to the connectionName field of the AdapterService.

Regards,
Holger