Ensemble 2014.1.5 - Soap Business Service -ERROR <Ens>ErrBusinessDispatchNameNotRegistered: Business dispatch name 'EnsLib.SOAP.GenericService'

I am following the ESB tutorial(https://learning.intersystems.com/course/view.php?id=77) and using my local system(2014.1.5) windows 7.  I click the button on SoapUI for the Weather piece (http://127.0.0.1:57774/esb/soap/Weather/GlobalWeather.asmx) and get the response of   <text>ERROR &lt;Ens&gt;ErrBusinessDispatchNameNotRegistered: Business dispatch name &apos;EnsLib.SOAP.GenericService&apos; is not registered to run</text>

checked the Event Log :

ID:116
Type:Error
Text:ERROR <Ens>ErrBusinessDispatchNameNotRegistered: Business dispatch name 'EnsLib.SOAP.GenericService'
is not registered to run
Logged:2017-02-03 12:38:51.844
Source:(none)
Session:(none)
Job:12380
Class:Ens.Director
Method:CreateBusinessService
Trace:(none)
Stack:
  • $$^zGetErrorTrace+3 ^Ens.Util.Trace.1 +1
  • DO^zLogNoTrace+10^Ens.Util.Log.1 +1
  • DO^zLog+2^Ens.Util.Log.1 +1
  • DO^zLogStatus+4^Ens.Util.Log.1 +1
  • $$^zEnsError+2^Ens.Util.Error.1 +1
  • $$^zCreateBusinessService+12 ^Ens.Director.1 +2
  • DO^zOnPreSOAP+8^EnsLib.SOAP.Service.1 +1
  • $$^zOnPage+31^%SOAP.WebService.1 +1
  • $$^zPage+10^%SOAP.WebService.1 +2
  • DO^CSPDispatch+718 ^%SYS.cspServer +2
  • DO^CSPDispatch+569 ^%SYS.cspServer +1
  • DO^zProcessRequest+1 ^%CSP.Session.1 +1
  • DO^Request+535^%SYS.cspServer2 +1
  • DO^Request+21^%SYS.cspServer2 +1
  • DO^zProcessRequest+1 ^%CSP.Request.1 +1
  • DO^css+36^%SYS.cspServer2 +

I checked the namespace for DispatchName and found:

^Ens.Runtime("DispatchName","Ens.Alarm")="Ens.Alarm"
^Ens.Runtime("DispatchName","Ens.MonitorService")="Ens.MonitorService"
^Ens.Runtime("DispatchName","Ens.ScheduleHandler")="Ens.ScheduleHandler"
^Ens.Runtime("DispatchName","Ens.ScheduleService")="Ens.ScheduleService"
^Ens.Runtime("DispatchName","Weather")="Weather"
^Ens.Runtime("DispatchName","Weather BO")="Weather BO"
^Ens.Runtime("DispatchName","Weather BPL")="Weather BPL"
^Ens.Runtime("DispatchName","Wikipedia")="Wikipedia"
^Ens.Runtime("DispatchName","Wikipedia BO")="Wikipedia BO"
^Ens.Runtime("DispatchName","Wikipedia BPL")="Wikipedia BPL"

Can someone give me pointers on where to look for configuration issues?

  • 0
  • 0
  • 620
  • 3
  • 2

Answers

Do you have a call to CreateBusinessService somewhere in your code? It allows doing business service calls from non-Ensebble context (by well making current job Ensemble job). It's called like this (from Demo.ZenService.Zen.WeatherReportForm):
 

Set tSC=##class(Ens.Director).CreateBusinessService("Zen Service",.tService)

Where first arguments is a host name of a business service. In your case the error appeared because the first argument is equal to EnsLib.SOAP.GenericService which is not present in currently running Ensemble production. You need to do one of the:

  • Check that you're running a correct production
  • Change first argument of CreateBusinessService method from EnsLib.SOAP.GenericService to something that exists in current production
  • Create business service in production with the name EnsLib.SOAP.GenericService

Thank you Eduard, I didn't find any code called for CreateBusinessService.

The production I think is a generic, not an HL7 like I usually  use. 

If I run in a terminal the code you specified for the Business Service named "Weather"  then I get no errors.  Yet I still get the error.

If I create a new Business Server with the EnsLib.SOAP.GenericService I still get the error when I call to http://127.0.0.1:57774/esb/soap/EnsLib.SOAP.GenericService/GlobalWeather.asmx

Here is my web app setup in security:

 

Here is the Business Service configuration from the Production class

  <Item Name="Weather" Category="" ClassName="EnsLib.SOAP.GenericService" PoolSize="0" Enabled="true" Foreground="false" Comment="" LogTraceEvents="false" Schedule="">
    <Setting Target="Host" Name="TargetConfigName">Weather BO</Setting>
    <Setting Target="Adapter" Name="AdapterURL">/GlobalWeather.asmx</Setting>
    <Setting Target="Adapter" Name="EnableStandardRequests">1</Setting>
    <Setting Target="Adapter" Name="Port"></Setting>
  </Item>
 

What is a "Business Server"?

You shouldn't specify Dispatch Class -it's for REST only.

Maybe add ?CfgItem=Weather to URL.

EnsLib.SOAP.GenericService is a generic service and it does not implement actual services, such as weather but send the request to actual business host -  "Weather BO" in your case.

Your original URL is correct as it references business host name instead of class name

Sorry not Business Server but Business Service

I tried "?CfgItem=Weather" on the end of the calling URL (HTTP/1.1 400 Bad Request
) and on the Business Service on the URL.

 

If I test on a HealthShare 2016, then I get

HTTP/1.1 200 OK
Date: Mon, 06 Feb 2017 20:37:38 GMT
Server: Apache
CACHE-CONTROL: private, max-age=0
VARY: Accept-Encoding
X-ASPNET-VERSION: 4.0.30319
X-POWERED-BY: ASP.NET
SET-COOKIE: CSPSESSIONID=00010000000036So99K9SK000000000000000000000000000000000000; path=/;
CONTENT-ENCODING: gzip
CONTENT-LENGTH: 231
Keep-Alive: timeout=120
Connection: Keep-Alive
Content-Type: text/xml; charset=utf-8

<?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><soap:Body><GetWeatherResponse xmlns="http://www.webserviceX.NET"><GetWeatherResult>Data Not Found</GetWeatherResult></GetWeatherResponse></soap:Body></soap:Envelope>

 

And I thought I configured the settings the same as 2014.1.5, so I don't know what is going on.

Hello everyone, I had the same problem in Ensemble 2018.1 and solve it by placing the same name as the Business Service class when defining it in production

1.- Ensemble> Production Configuration
2.- Services (+)
3.- Select the class in Service Class
4.- Leave blank Service Name
5.- You can add Display Category and Coment
6.- Select Enabled Now

I hope it serves you, Greetings to all