How to Configure an Incoming SOAP Service via Management Portal
I am attempting to configure an inbound service that utilizes the EnsLib.SOAP.GenericService class. This service receives HL7-v3 content wrapped in SOAP requests. Despite reading the documentation on configuring SOAP services, I am still confused.
In my current configuration item "Fr_Centrak_RTLS", I have ‘Enable Standard Requests’ checked, ‘Pool Size’ set to 0, and the port is unspecified.
.png)
.png)
I have also configured a web application with the following details:
.png)
My challenge is determining the correct URL address for sending SOAP traffic to this service. Additionally, I do not want any form of authentication for this setup.
The URL I attempted to test was: http://localhost:52773/csp/soappassthrough/EnsLib.SOAP.GenericService.cls?CfgItem=Fr_Centrak_RTLS which returned an HTTP/1.1 500 Internal Server Error.
Here:
/csp/soappassthroughrepresents my web application.Fr_Centrak_RTLScorresponds to the business service within the production that I am trying to direct traffic to.
Please advise me on the correct URL format to send traffic to this inbound service in my production environment.
Comments
I think you need to enable/allow Unauthenticated access for Web Applications.
I can see that in Web Application configuration in "Allowed Authentication Methods" the option "Unauthenticated" is not available, this means is not enabled/allowed systemwide.
In Management Portal check System Administration > Security > System Security > Authentication/Web Session Options, and see if "Allow Unauthenticated access" (first option/checkbox) is enabled.
After that, enable the option "Unauthenticated" in the "Allowed Authentication Methods" of the Web Application.
I have configured unauthorized access for our applications as you mentioned and still no luck reaching the service. I think my URL formatting is incorrect.
Regarding the documentation looks like you need to configure the port in the Business Service:
(Configured Web Services exposed using the SOAP Inbound Adapter may also be invoked with this URL parameter but because each configured Inbound Adapter listens on its own TCP/IP port this parameter is just a safety check for them.)
https://docs.intersystems.com/iris20241/csp/documatic/%25CSP.Documatic…
Adding in the port allowed me to hit the service but still returning the 500 error. Here is the error from the service:
.png)
Using URL: http://localhost:52773/csp/soappassthrough/EnsLib.SOAP.GenericService.c…
Have you defined the target config name?
That was the issue. I did not have a production process specified for my SOAP service. I wanted to test connectivity before building other components like the process operation. Good to know!
Here is what I have now:
.png)
And the response via a successful web request: HTTP/1.1 202 Accepted
Thank you for this :)
Adding this bit of information to help out others who are developing an inbound SOAP service using the SOAP inbound adapter. In order to POST information to the Production Service, you will need to format your URL similarly: https://BaseURL/csp/healthshare/MBSDEV/soappassthrough/EnsLib.SOAP.GenericService.cls?CfgItem=Fr_Centrak_RTLS
- Where BaseURL is the CSP gateway.
- /csp/healthshare/MBSDEV is the Namespace where the service is running.
.png)
- /soappassthrough is my web application for my SOAP Service. In this example I have not configured Application Role Permissions.
.png)
- /EnsLib.SOAP.GenericService.cls?CfgItem=Fr_Centrak_RTLS: EnsLib.SOAP.GenericService.cls is the class of the inbound service, and I have used ?CfgItem= to specify the name of my production service.
.png)
.png)