Call protocol property

Official Content
This documentation is valid for:
Defines how the object is invoked and its output.

Values

Command Line Allows objects to be executed by command line only. When calling a command line object, the supported input parameters are basic data types (they cannot be Collection, Vector, or Matrix), except for Bitmap and GUID data types. Output parameters are not supported.
Enterprise Java Bean When Java is the selected generator, Procedures, Data Providers and Business Component Transactions can apply this value in the property. By setting this value, this object will be automatically implemented as a session bean (stateless) and also as message-driven beans.
HTTP Generates objects callable via the HTTP protocol, and allows adding information in the HTTP Response using HttpResponse data type.
Internal Usual call type used for objects in GeneXus. This is the default value.
SOAP Generates objects to be called via SOAP protocol. It is a particular case of HTTP type. These objects are known as Web Services.

Scope

Objects: Data Provider, Procedure, Transaction
Generators: Java, .NET, .NET Core

Description

Internal

Input parameters: Parameters come instanced by each generator's usual mechanism.
Output parameters: Parameters are returned through each generator's usual mechanism.

HTTP

Input parameters: Parameters come after the question mark '?' in the URL used to invoke the object through HTTP.
Output parameters: Parameters are not returned.
Output: HTTP response content.

Command Line

Note that Command line limits vary widely with the operating system. Some examples are: Linux / UNIX / BSD.

Input parameters: Space-separated parameters following the name of the executable.
Output parameters: Parameters are not returned.
Output: Standard output.

SOAP

Input parameters: Parameters come in the Body of the HTTP Request used in the invocation.
Output parameters: They are returned in the Body of the HTTP Response Body.
Output: The output is an HTTP Response with the modified parameters in its Body.

Enterprise Java Bean (EJB)

When the object is called with the Call method, the SESSION BEAN is called synchronously. When the object is called with the Submit method, the MESSAGE-DRIVEN BEAN is called asynchronously.

Enterprise Java Beans can be called from external objects. The Expose as Enterprise Java Bean property must be set in order to expose the GeneXus Procedure as EJB. If the object has its Call protocol property = Enterprise Java Bean, by default the object can be called from GeneXus objects and from external objects automatically. But if you want to expose it only for external objects, and use the Procedure in GeneXus as a common Procedure, then the Call protocol property can keep the Internal value, and the Expose as Enterprise Java Bean property = True.

When to configure the Main program property and Call protocol property?

When you want to define a different output than the default (Internal) for an object, you can leave its Main program property with the default value (False), and configure the Call protocol property according to the output of the Procedure (SOAP, EJB, HTTP). The benefit of doing this is that it reduces the number of main objects in the Knowledge Base

One reason for configuring the Main program property = True is to be able to compile the object because it is not in the call tree of any other object of the Knowledge Base.

For example, in the case of calling the object as a Web Service (SOAP) or an Enterprise Java Bean from an object of the same Knowledge Base, you do not need to set the object as a main program; you just need to set the Call protocol property to the corresponding value.
The same happens to PDF reports, which do not need to be declared as main objects.

Likewise, in order to expose a Web Service or Enterprise Java Bean to be called from outside the Knowledge Base, there is no need to configure the Main Program property, but to configure the Expose as Web Service property or the Expose as Enterprise Java Bean property, respectively.

Note: In the case of command line Procedures, it is necessary to configure the Main program property = True, in all cases.

If a Procedure has its Expose as Web Service property = True and the value of its Call protocol property isn't SOAP the internal call from a GeneXus object is not via SOAP but internal. Configure its Call Protocol property= SOAP if you want that.

Important: There is no support for a Procedure with Call protocol = HTTP and SOAP Protocol = True.

Run-time/Design-time

This property applies only at design-time.

See Also

What is EJB
What is J2EE
HowTo: Downloading a File using HTTP Protocol
HttpResponse data type