![]() ![]() ![]() ![]() ![]() ![]() |
Oracle Service Bus proxy services and business services provide the means for managing services, transforming messages, and routing messages through the enterprise.
You can create and configure proxy services and business services using either the run-time environment (Oracle Service Bus Console) or the development environment (Oracle Service Bus Plug-ins for Workshop for WebLogic). You can base proxy services or business services on existing Web Services Description Language (WSDL) resources, including those imported from a UDDI registry such as the Oracle Service Registry, and then further configure them in the console or the plug-in.
The following sections describe services and their configuration:
Oracle Service Bus proxy services are definitions of intermediary Web services that Oracle Service Bus implements and hosts locally. Oracle Service Bus uses proxy services to route messages between business services (such as enterprise Web services and databases) and service clients (such as presentation applications or other business services).
A proxy service configuration includes its interface, transport settings, security settings, and a message flow definition. The message flow definition defines the logic that determines how messages are handled as they flow through the proxy service. If a proxy service is based on a WSDL document, the configuration also includes a WSDL port or a WSDL binding. (See Using a WSDL to Define a Service.)
Oracle Service Bus business services are definitions of enterprise Web services to which Oracle Service Bus is a client. Those external Web services are implemented in and hosted by external systems, so Oracle Service Bus must know what to call, how to call, and what to expect as a result of a call. Oracle Service Bus business services model those interfaces so that Oracle Service Bus can invoke the external services.
A business service configuration includes its interface, transport settings, and security settings. (It does not include a message flow definition.) If the business service is based on a WSDL, the configuration also includes a WSDL port or a WSDL binding. (See Using a WSDL to Define a Service.)
Oracle Service Bus defines some types of business services and proxy services using a WSDL, an XML-based specification for describing Web services. A WSDL document describes service operations, input and output parameters, and how a client application connects to the service. For the WSDL 1.1 specification, see the W3C Note, W3C Web Services Description Language (WSDL) 1.1.
In Oracle Service Bus, you can base a new proxy service or a new business service on an existing WSDL (called a “WSDL resource”) and then override or add configuration properties. You can also create and configure new services that are not based on existing WSDLs.
For WSDL-based services, Oracle Service Bus uses effective WSDLs instead of actual .wsdl files. An effective WSDL represents a service’s WSDL properties as configured in Oracle Service Bus.
A source WSDL serves as a template for an effective WSDL. When you create a service based on a WSDL, Oracle Service Bus generates an effective WSDL by combining settings from the original WSDL and any transport configurations you set, plus any other configuration settings you add or change from the original WSDL. Settings from the original WSDL that are not used in the new configuration are omitted from the effective WSDL.
Oracle Service Bus can generate effective WSDLs for these types of proxy services and business services:
Effective WSDLs can be generated for those types of services using any transport that supports WSDL-based services, including HTTP, JMS, SB, and so on.
Oracle Service Bus cannot generate effective WSDLs for these types of proxy services and business services:
Effective WSDLs have different characteristics for proxy services and business services and for services based on WSDL ports and services based on WSDL bindings. Those characteristics are discussed throughout this documentation. In particular, see Basing Services on WSDL Ports and on WSDL Bindings.
A generated WSDL is an effective WSDL that Oracle Service Bus generates for transport-type services that were not created from a WSDL resource but which can be described using a WSDL. For example, a WSDL generated from an EJB-based service is a generated WSDL.
There are three ways to access an effective WSDL:
?WSDL
.This works only for HTTP-transport-based services for which Oracle Service Bus can generate effective WSDLs.)
http://host:port/sbresource?PROXY/project/folder/proxyname
http://host:port/sbresource?BIZ/project/folder/businessservicename
This works for all services for which Oracle Service Bus can generate effective WSDLs.
Exporting the WSDL generates a .zip file that contains the effective WSDL along with associated dependencies, including schemas and WS-Policies. Oracle Service Bus evaluates the dependencies, and the appropriate location is added to the location
attribute of the WSDL import
element.
There is no import
element for WS-policies. For WS-policies, the policy reference is retained, and the policy resource is included in the export.
You cannot export a generated WSDL.
See also Viewing Resource Details.
A WSDL document describes a service, its location, its operations, and the way in which clients can communicate with it. This section provides a very brief introduction to WSDL, to provide context for discussing Oracle Service Bus features.
Table 2-1 summarizes the main elements used to define WSDL services.
WSDL specifies SOAP, HTTP, MIME, and Oracle Service Bus-specific binding extensions, which extend the WSDL binding mechanism to support protocol-specific or message format-specific features.
The <types>
element is a container for data type definitions. It uses a type system, such as XML Schema (XSD), to define the vocabulary of messages handled by this service. For example, a service that provides stock quotes might define an XML vocabulary, with the terms TradePriceRequest
and TradePrice
, as shown in Listing 2-1.
<types>
<schema targetNamespace="http://example.com/stockquote.xsd"
xmlns="http://www.w3.org/2001/XMLSchema">
<element name="TradePriceRequest">
<complexType>
<all>
<element name="tickerSymbol" type="string"/>
</all>
</complexType>
</element>
<element name="TradePrice">
<complexType>
<all>
<element name="price" type="float"/>
</all>
</complexType>
</element>
</schema>
</types>
The <message>
element provides an abstract, typed definition of the data being communicated. A message consists of parts, each of which describes one logical, abstract unit of the message. A WSDL can define one or more messages, each of which may have one or more parts. For example, the WSDL fragment in Listing 2-2 defines four message types, sellerInfoMessage
, buyerInfoMessage
, response
, and negotiationMessage
, each of which has one or more parts.
<message name="sellerInfoMessage">
<part name="inventoryItem" type="xsd:string"/>
<part name="askingPrice" type="xsd:integer"/>
</message>
<message name="buyerInfoMessage">
<part name="item" type="xsd:string"/>
<part name="offer" type="xsd:integer"/>
</message>
<message name="response">
<part name="result" type="xsd:string"/>
</message>
<message name="negotiationMessage">
<part name="item" type="xsd:string"/>
<part name="price" type="xsd:integer"/>
<part name="outcome" type="xsd:string"/>
</message>
The <portType>
element defines a set of operations supported by one or more endpoints (which are defined in the <port>
element). The port type provides the public interface for the operations provided by the service. Each operation is defined in an <operation
> element, each of which is an abstract description of an action supported by the service.
For example, the fragment in Listing 2-3 defines a port type with one operation, GetLastTradePrice
, which can handle an input message, GetLastTradePriceInput
, and an output message, GetLastTradePriceOuput
. The concrete descriptions of these messages are defined in the WSDL binding, as shown in the <soap:operation>
subelement in Listing 2-4.
<portType name="StockQuotePortType">
<operation name="GetLastTradePrice">
<input message="tns:GetLastTradePriceInput"/>
<output message="tns:GetLastTradePriceOutput"/>
</operation>
</portType>
The <binding>
element specifies a concrete data format specification and a concrete transport protocol for a port type.
The fragment in Listing 2-4 specifies the binding for the StockQuotePortType
port type, which is provided as the value for the type
attribute. The <soap:binding>
subelement signifies that the binding is bound to the SOAP protocol format. In that subelement, the style
attribute specifies that the data format is SOAP document style, and the transport
attribute specifies that the transport protocol is HTTP.
<binding name="StockQuoteSoapBinding" type="tns:
StockQuotePortType">
transport="http://schemas.xmlsoap.org/soap/http"/>
<soap:binding style="document"
<operation name="GetLastTradePrice">
<soap:operation
soapAction="http://example.com/GetLastTradePrice"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
The <service>
element defines a collection of related endpoints, each of which is defined in a child <port>
element. A port is defined as a binding associated with a network address. For example, the fragment shown in Listing 2-5 defines two ports, StockQuotePort
, and StockQuotePortUK
. They both use the same binding, tns:StockQuoteSoapBinding
, (which is concretely defined in <binding>
) but have different network addresses: http://example.com/stockquote
vs. http://example.uk/stockquote
. These are alternative ports available for this service.
<service name="StockQuoteService">
<port name="StockQuotePort" binding="tns:StockQuoteSoapBinding">
<soap:address location="http://example.com:9999/stockquote"/>
</port>
<port name="StockQuotePortUK" binding="tns:StockQuoteSoapBinding">
<soap:address location="http://example.uk:9999/stockquote"/>
</port>
</service>
If a service has a well defined WSDL interface, it is recommended, although not required, that you use the WSDL to define the service.
There are three types of WSDLs you can define. They are:
A document wrapped Web service is described in a WSDL as a Document Style Service. However, it follows some additional conventions. Standard document-oriented Web service operations take only one parameter or message part, typically an XML document. This means that the methods that implement the operations must also have only one parameter. Document-wrapped Web service operations, however, can take any number of parameters, although the parameter values will be wrapped into one complex data type in a SOAP message. This wrapped complex data type will be described in the WSDL as the single document for the operation.
You can configure proxy services as SOAP style proxy services and configure business services as SOAP style business services.
Listing 2-6 provides an example of a WSDL for a sample document style Web service using SOAP 1.1.
<definitions name="Lookup"
targetNamespace="http://example.com/lookup/service/defs"
xmlns:tns="http://example.com/lookup/service/defs"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:docs="http://example.com/lookup/docs"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<types>
<xs:schema targetNamespace="http://example.com/lookup/docs" elementFormDefault="qualified">
<xs:element name="PurchaseOrg" type="xs:string"/>
<xs:element name="LegacyBoolean" type="xs:boolean"/>
</xs:schema>
</types>
<message name="lookupReq">
<part name="request" element="docs:purchaseorg"/>
</message>
<message name="lookupResp">
<part name="result" element="docs:legacyboolean"/>
</message>
<portType name="LookupPortType">
<operation name="lookup">
<input message="tns:lookupReq"/>
<output message="tns:lookupResp"/>
</operation>
</portType>
<binding name="LookupBinding" type="tns:lookupPortType">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="lookup">
<soap:operation/>
<input>
<soap:body use="literal" />
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
</definitions>
The service has an operation (equivalent to a method in a Java class) called lookup
. The binding indicates that this is a SOAP 1.1 document style Web service.
When the WSDL shown in the preceding listing is used for a request, the value of the body variable ($body)
that the document style proxy service obtains is displayed in Listing 2-7.
Note: | Namespace declarations have been removed from the XML in the listings that follow for the sake of clarity. |
<soap-env:body>
<req:purchaseorg>Oracle</req:purchaseorg>
</soap-env:body>
In Listing 2-7, soap-env
is the predefined SOAP 1.1 namespace and req
is the namespace of the PurchaseOrg
element (http://example.com/lookup/docs
).
If the business service to which the proxy service is routing uses the above WSDL, the value for the body variable ($body
) given above is the value of the body variable ($body
) from the proxy service.
The value of the body variable ($body
) for the response from the invoked business service that the proxy service receives is displayed in Listing 2-8.
Note: | Namespace declarations have been removed from the XML in the listings that follow for the sake of clarity. |
<soap-env:body>
<req:legacyboolean>true</req:legacyboolean>
</soap-env:body>
This is also the value of the body variable ($body
) for the response returned by the proxy service using this WSDL.
There are many tools available (including Oracle Workshop for WebLogic tools) that take the WSDL of a proxy service (obtained by adding the ?WSDL
suffix to the URL of the proxy service in the browser) and generate a Java class with the appropriate request and response parameters to invoke the operations of the service. This Java class can be used to invoke the proxy service that uses this WSDL.
You can configure proxy services as RPC style proxy services and configure business services as RPC style business services.
Listing 2-9 provides an example of a WSDL for a sample RPC style Web service using SOAP 1.1.
<definitions name="Lookup"
targetNamespace="http://example.com/lookup/service/defs"
xmlns:tns="http://example.com/lookup/service/defs"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:docs="http://example.com/lookup/docs"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/">
<types>
<xs:schema targetNamespace="http://example.com/lookup/docs" elementFormDefault="qualified">
<xs:complexType name="RequestDoc">
<xs:sequence>
<xs:element name="PurchaseOrg" type="xs:string"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="ResponseDoc">
<xs:sequence>
<xs:element name="LegacyBoolean" type="xs:boolean"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
</types>
<message name="lookupReq">
<part name="request" type="docs: RequestDoc"/>
</message>
<message name="lookupResp">
<part name="result" type="docs: ResponseDoc"/>
</message>
<portType name="LookupPortType">
<operation name="lookup">
<input message="tns:lookupReq"/>
<output message="tns:lookupResp"/>
</operation>
</portType>
<binding name="LookupBinding" type="tns:lookupPortType">
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="lookup">
<soap:operation/>
<input>
<soap:body use="literal" namespace="http://example.com/lookup/service"/>
</input>
<output>
<soap:body use="literal" namespace="http://example.com/lookup/service"/>
</output>
</operation>
</binding>
</definitions>
The service described in the preceding listing includes an operation (equivalent to a method in a Java class) called lookup
. The binding indicates that this is a SOAP RPC Web service. In other words, the Web service’s operation receives a set of request parameters and returns a set of response parameters. The lookup
operation has a parameter called request
and a return parameter called result
. The namespace of the operation in the binding is:
http://example.com/lookup/service/defs
When the WSDL shown in Listing 2-9
is used for a request, the value of the body variable ($body)
that the SOAP RPC proxy service obtains is displayed in Listing 2-10.
Note: | Namespace declarations have been removed from the XML in the listings that follow for the sake of clarity. |
<soap-env:body>
<ns:lookup>
<request>
<req:purchaseorg>Oracle</req:purchaseorg>
</request>
</ns:lookup>
<soap-env:body>
Where soap-env
is the predefined SOAP 1.1 name space, ns
is the operation namespace (<http://example.com/lookup/service>
) and, req
is the namespace of the PurchaseOrg
element (http://example.com/lookup/docs
).
If the business service to which the proxy service routes the messages uses the WSDL shown in Listing 2-10, the value for the body variable ($body
), shown in Listing 2-11, is the value of the body variable ($body
) from the proxy service.
When this WSDL is used for a request, the value of the body variable ($body)
for the response from the invoked business service that the proxy service receives is displayed in Listing 2-10.
<soap-env:body>
<ns:lookupResponse>
<result>
<req:legacyboolean>true</req:legacyboolean>
</result>
</ns:lookupResponse>
<soap-env:body>
This is also the value of the body variable ($body
) for the response returned by the proxy service using this WSDL.
There are many tools available (including Oracle Workshop for WebLogic tools) that take the WSDL of a proxy service (obtained by adding the ?WSDL
suffix to the URL of the proxy in the browser) and generate a Java class with the appropriate request and response parameters to invoke the operations of that service. You can use such Java classes to invoke the proxy services that use this WSDL.
The benefits of using a WSDL include the following:
SOAPAction
header is automatically populated for services invoked by a proxy service. For SOAP 1.2 services, the action
parameter of the Content-Type
header is automatically populated for services invoked by a proxy service. <url>?WSDL
syntax, which allows you to dynamically obtain the WSDL of a HTTP proxy service. This is useful for a number of SOAP client generation tools, including Oracle Workshop for WebLogic.$body
) because the editor provides a default mapping of $body
to the request message in the WSDL of a proxy service. See
Message Context.$body
for a specific action can be different from the default mapping displayed in the editor. This is because Oracle Service Bus is not a programming language in which typed variables are declared and used. Instead, variables are untyped and are created dynamically at run time when a value is assigned. In addition, the type of the variable is the type that is implied by its contents at any point in the message flow. To enable you to easily create XQuery and XPath expressions, the design time editor allows you to map the type for a given variable by mapping the variable to the type in the editor. To learn about using the XQuery and XPath editor to create expressions, see Working with Variable Structures.
When you create a service based on a WSDL resource, you must base the service on a WSDL port or on a WSDL binding:
<binding>
element in the WSDL resource. <port>
element. When creating or modifying the service, you can change the transport, but you cannot override the data format.
The port and binding definitions from the original WSDL resource are modified in the effective WSDL depending on a number of factors, as described below.
The following characteristics apply to effective WSDLs generated for proxy services:
wsdl:service
section.wsdl:service
section has one and only one wsdl:port
section.<wsdl:service>
definition is removed, and a new service definition containing a single <wsdl:port>
is created. wsdl:binding
section contains the standard WSDL SOAP binding elements along with a unique transport URI that identifies the transport. wsdl:binding
section uses the standard binding elements specified in the WSDL 1.1 specification.wsdl:binding
section uses Oracle (Oracle Service Bus) proprietary WSDL XML binding elements. <bindingname>QSService and <bindingname>QSPort
). None of the ports defined in the WSDL resource are included in the effective WSDL. For HTTP services, you must specify a transport address when configuring the transport in the console or the plug-in. That address is used in the port definition in the effective WSDL.
The URL specified as the transport address for a proxy service is always relative to a path in an Oracle Service Bus domain, because Oracle Service Bus always hosts proxy services.
http://www.oracle.com/transport/2007/05/
.The following characteristics apply to effective WSDLs generated for non-transport-type business services:
wsdl:service
section.wsdl:service section
may have more than one wsdl:port
sections. This is generally true when load balancing is used and there are multiple end point addresses that can be used using one of the load-balance algorithms supported.wsdl:binding
section contains the standard WSDL SOAP binding elements along with a unique transport URI that identifies the transport. wsdl:binding
section contains the Oracle WSDL XML binding elements. <portname_in_template>_1, <portname_in_template>_2,...
Oracle Service Bus does not guarantee one and only one wsdl:service
section in effective WSDLs generated for transport-type business services. Because the WSDL is generated by the transport, Oracle Service Bus does not generate nor does it clean up extra service-port sections. Oracle Service Bus does, however, evaluate dependencies and sets their references during export.
When generating the effective WSDL in a clustered domain, Oracle Service Bus rewrites the endpoint URL based on the server or cluster configuration. If a front-end HTTP host/port (or a front-end HTTPS host/port for HTTPS endpoints) has been specified, it will be used; otherwise, the Managed Server host or port will be used. It is strongly advised that a front-end HTTP or HTTPS host/port is assigned in clustered domains.
Listing 2-12 shows fragments of port and binding definitions in a WSDL resource.
<portType name=”StockQuotePortType
”>
...
</portType>
<binding name=”StockQuoteSoapBinding
” type=”tns:StockQuotePortType
”>
<soap:binding style=”document”
transport=”http://schemas.xmlsoap.org/soap/http”/>
...
</binding>
<service name=”StockQuoteService
”>
<port name=”StockQuotePort
” binding=”tns:StockQuoteSoapBinding”>
<soap:address location=”http://example.com:9999/stockquote
”/>
</port><port name="StockQuotePortUK" binding="tns:StockQuoteSoapBinding">
</service>
<soap:address location="http://example.uk:9999/stockquote"/>
</port>
If you create a proxy service based on the StockQuotePort
port in Listing 2-12, the effective WSDL will look something like the fragment in Listing 2-13.
<binding name=”StockQuoteSoapBinding
” type=”ns:StockQuotePortType
”>
<soap:binding style=”document”
transport=”http://schemas.xmlsoap.org/soap/http”/>
...
</binding>
<service name=”StockQuoteService
”>
<port name=”StockQuotePort
” binding=”ns:StockQuoteSoapBinding
”>
<soap:address location=”http://
host:port/project
/proxyname
”/>
</port>
</service>
Notice the following about the above example:
StockQuoteService
, is the same in both the template and the effective WSDL.StockQuotePortUK
, is not defined in the effective WSDL. http://example.com:9999/stockquote
, is different from the address generated in the effective WSDL’s port, http://
host:port/project
/proxyname
. The effective WSDL uses the address specified for the transport configuration in the Oracle Service Bus Console or the Oracle Service Bus Plug-ins for Workshop for WebLogic.
If you create a proxy service based on the StockQuoteBinding
binding in Listing 2-12, the effective WSDL will look something like the fragment in Listing 2-14.
<binding name=”StockQuoteSoapBinding
” type=”ns:StockQuotePortType
”>
<soap:binding style=”document”
transport=”http://schemas.xmlsoap.org/soap/http”/>
...
</binding>
<wsdl:service name=”StockQuoteSoapBindingQSService
”
<wsdl:port name=”StockQuoteSoapBindingQSPort
”
binding=”ns:StockQuoteSoapBinding
”>
<soap:address location=”http:/host:port/project/proxyname”/>
</wsdl:port>
</wsdl:service>
Notice the following about the above example:
StockQuoteService
in the template and StockQuoteSoapBindingQSService
in the effective WSDL. http://example.com:9999/stockquote
, is different from the address generated in the effective WSDL’s port, http://
host:port/project
/stockquote
. If you want to expose one port to clients for a variety of enterprise applications, use Any SOAP or Any XML service types. For Any SOAP, you must specify if it is SOAP 1.1 or SOAP 1.2.
If one of the request or response messages is non-XML, you must use the messaging service type.
Oracle Service Bus does not automatically perform “misunderstand” SOAP header checking. However, you can use XQuery conditional expressions and validate actions to explicitly perform this type of check. For more information on the validate action, see Adding Validate Actions in Using the Oracle Service Bus Console or Validate Action Properties in Using the Oracle Service Bus Plug-ins for Workshop for WebLogic. For more information on conditional XQuery expressions, see Proxy Services: Editors in Using the Oracle Service Bus Console or Condition Editor in Using the Oracle Service Bus Plug-ins for Workshop for WebLogic.
You can use Oracle Service Bus to configure a validate action and use XQuery conditional expressions to perform validation checks explicitly in the message flow.
For more information on service types, see “General Configuration page” in Creating and Configuring Proxy Services in Using the Oracle Service Bus Console.
The following sections provide an overview of proxy service configuration. For specific instructions for configuring proxy services, see:
Each proxy service is of a certain type, and each can be used with the transport protocols appropriate for that type. Oracle Service Bus supports several standard transports plus custom transports. The service types are described in Table 2-2, including the standard transports available for each type.
Note: | All service types can send and receive attachments using MIME. |
You must configure transport settings for all proxy service types in the Oracle Service Bus Console or the Oracle Service Bus Plug-ins for Workshop for WebLogic. Configuration details vary, depending on the transport type. For specific configuration settings, see:
The transport you select should support the transport mode (request/response, one-way, or both) required by the binding definition, and it should be configured accordingly.
For services exchanging messages in both modes, you must configure the binding layer to choose the transport mode accordingly (for any transport implementing the request/response as two asynchronous calls, for example, JMS). This occurs automatically when the service is a concrete type, as it is described in the binding definition. When it is not a concrete type, to configure the binding layer, you must set the mode in the $outbound variable.
Based on the transport and WSDL, the transport mode is automatically selected, but you can overwrite it in $inbound
or $outbound
.
You can specify security for proxy services, using service providers. A service provider is required if the proxy service routes messages to HTTPS services that require client-certificate authentication and may be required in some message-level security scenarios.
A service account can be created to provide authentication when connecting to a business service. It acts as an alias resource for the required username and password pair.
WebLogic Server can be used to directly manage security credentials for a business service requiring credential-level validation.
For more information, see Service Key Providers in Using the Oracle Service Bus Console. See also Security-Related Validation for Proxy Services.
Each proxy service type is modeled following the same pattern. Each service type must define these configurations:
Configuration properties specific to individual proxy service types are described in Table 2-3:
Binding Definition: See Using a WSDL to Define a Service.
|
|
Binding Definition: The only information this service type defines is that the service is receiving or sending SOAP messages—regardless of their WSDL binding definition. Therefore the binding configuration for this type is empty.
In addition, as there is no binding configuration, the combination of this type and the content-type of the message is sufficient to determine whether or not there are attachments to the message.
As per their definition, “any” services (SOAP or XML) do not have any WSDL definition. It is not possible to generate or view a WSDL document for those services.
The
$body and $header variables respectively hold the <soap:Body> and <soap:Header> of the incoming SOAP message. (For SOAP 1.1 proxies, $body and $header use SOAP 1.1 namespace Body and namespace; for SOAP 1.2 proxies, they use SOAP 1.2 namespace Body and namespace.)
To learn more about the message context variables, see Message-Related Variables
and Constructing Messages to Dispatch.
|
|
Binding Definition: The only information this service type defines is that the service is receiving/sending XML messages—regardless of their WSDL binding definition. Therefore, the binding configuration for this type is empty.
In addition, as there is no binding configuration, the combination of this type and the content-type of the message is sufficient to determine whether or not there are attachments to the message.
As per their definition, “any” services (SOAP or XML) do not have any WSDL definition. It is not possible to request a WSDL document for those services.
The
$body variable holds the incoming XML message wrapped in a <soap:Body> element. (For SOAP 1.1 proxies, $body and $header use SOAP 1.1 namespace Body and namespace; for SOAP 1.2 proxies, they use SOAP 1.2 namespace Body and namespace.)
To learn more about the message context variables, see Message-Related Variables
and Constructing Messages to Dispatch.
|
|
Binding Definition: The binding definition for messaging services consists of configuring the content-type of the messages that are exchanged. The content-type for the response does not need to be the same as for the request; therefore, the response is configured separately (for example, the service could accept an MFL message and return an XML acknowledgment receipt) and could also be set to None.
As per their definition, messaging-based services do not have any WSDL definition. It is not possible to request a WSDL document for those services.
This service type is message-based. There is no concept of multiple “operations” as for Web services. Therefore, the
$operation variable is left empty.
The
$body variable holds the incoming message wrapped in a <soap:Body> element. (For SOAP 1.1 proxies, $body uses the SOAP 1.1 namespace Body; for SOAP 1.2 proxies, it uses SOAP 1.2 namespace Body.)
To learn more about the message context variables, see Message-Related Variables
and Constructing Messages to Dispatch.
|
A proxy service’s message flow definition defines the logic that determines how messages are handled as they flow through the proxy service. A message flow definition transforms messages, as needed, to map the message data to the format required by a business service (for outbound messages) or the originating client (for inbound messages). They then route the messages to the appropriate location. For information about configuring message flows, see Modeling Message Flow in Oracle Service Bus.
When you activate a session that contains changes to an active proxy service, Oracle Service Bus validates the changes to ensure that you have created all of the credentials that the proxy service’s static endpoints require. For example, if you configured a proxy service to have a Web service as a static endpoint and the Web service requires a digital signature, Oracle Service Bus verifies that you have associated a service key provider with the proxy service and that the service key provider contains a key-pair binding that can be used as a digital signature.
If a session contains a change to the key-pair bindings of a service key provider, Oracle Service Bus validates the change against all of the proxy services that use the service key provider. For example, if you remove the encryption key-pair, Oracle Service Bus reports a validation error for any proxy service that references the service key provider and whose endpoint requires encryption.
The following criteria determine when Oracle Service Bus performs this security-related validation and the actions that it takes during validation:
The following sections provide an overview of business service configuration. For specific instructions for configuring business services, see:
Each business service is of a certain type, and each can be used with the transport protocols appropriate for that type. Oracle Service Bus supports several standard transports plus custom transports. The service types are described in Table 2-4, including the standard transports available for each type.
Local1
|
||
Tuxedo2
|
||
1Oracle recommends using the local transport for communication between two proxy services. For more information on local transport, see the Local Transport User’s Guide.. 2For a Tuxedo transport-based service, if the service type is XML, an FML32 buffer with an FLD_MBSTRING field from a Tuxedo client will not be transformed to XML. 2For information about configuring proxy and business services based on various transport protocols, see the Oracle Service Bus Transports page. |
Each business service type is modeled following the same pattern. Each service type must define these configurations:
The business service configuration properties described in Table 2-5, below, are common to all service types. Properties specific to individual service types are described in Configuration Settings For Each Business Service Type.
Configuration properties specific to individual business service types are described in Table 2-6:
Binding Definition: The only information this service type defines is that the service is receiving or sending SOAP messages—regardless of their WSDL binding definition. Therefore the binding configuration for this type is empty.
In addition, as there is no binding configuration, the combination of this type and the content-type of the message is sufficient to determine whether or not there are attachments to the message.
The
$body and $header variables respectively hold the <soap:Body> and <soap:Header> of the SOAP message to the business service being routed to or published. (For SOAP 1.1 proxies, $body and $header use SOAP 1.1 namespace Body and namespace; for SOAP 1.2 proxies, they use SOAP 1.2 namespace Body and namespace.)
To learn more about the message context variables, see Message-Related Variables.
|
|
Transport-typed services have an empty binding definition and only apply to EJB business services. A WSDL is not specified. Instead the transport automatically defines the WSDL for the service. A zip containing this WSDL can be exported from the Oracle Service Bus Console or the Oracle Service Bus Plug-ins for Workshop for WebLogic. This WSDL will not have a port defined.
|
|
Binding Definition: The only information this service type defines is that the service is receiving/sending XML messages—regardless of their WSDL binding definition. Therefore, the binding configuration for this type is empty.
In addition, as there is no binding configuration, the combination of this type and the content-type of the message is sufficient to determine whether or not there are attachments to the message.
The
$body variable holds the incoming XML message wrapped in a <soap:Body> element. (For SOAP 1.1 proxies, $body uses SOAP 1.1 namespace Body; for SOAP 1.2 proxies, it uses SOAP 1.2 namespace Body.)
To learn more about the message context variables, see Message-Related Variables.
|
|
Binding Definition: The binding definition for messaging services consists of configuring the content-type of the messages that are exchanged. The content-type for the response does not need to be the same as for the request; therefore, the response is configured separately (for example, the service could accept an MFL message and return an XML acknowledgment receipt).
By definition, messaging-based services do not have any WSDL definition. It is not possible to request a WSDL document for those services.
The
$body variable holds the incoming message wrapped in a <soap:Body> element. (For SOAP 1.1 proxies, $body uses SOAP 1.1 namespace Body; for SOAP 1.2 proxies, it uses SOAP 1.2 namespace Body.)
To learn more about the message context variables, see Message-Related Variables.
|
If a business service requires Web service security, make sure the WSDL you specify has the necessary WS-Policies attached when you create the business service. Furthermore, if the WS-Policy of the business service requires encryption, make sure the public certificate of the business service is embedded in the WSDL. If the business service is a WebLogic Server 9.0 or later Web service, you can retrieve its WSDL using the http://<host>:<port>/<service url>?WSDL
URL, the public certificate will be automatically embedded for you if necessary.
You can configure business services to route messages through a proxy server. You do this by creating a proxy server resource that specifies one or more proxy servers together with the necessary credentials. You can then associate this proxy server resource with a business service. This instructs Oracle Service Bus to connect to the business service through the configured proxy server.
Adding multiple proxy servers to a resource enables Oracle Service Bus to perform load balancing and offer fault tolerance among the configured proxy servers. The credentials are used when opening a connection to the proxy server. If a particular proxy server is not reachable, Oracle Service Bus attempts to use the next proxy server in the configuration. If all proxy servers are unreachable, Oracle Service Bus tries to connect to the back end service directly. If that too fails, a fault is raised and sent back to the caller.
When configuring a proxy server, you can specify the clear text or SSL port number for the server, in addition to the host name or IP address. Note that the port specified in the proxy server resource configuration corresponds to the actual physical port of the Web proxy server and not the port of the back end service. The end point configuration on the business service, however, corresponds to the actual end point of the back end service. This is true even in the case of SSL/TLS Tunneling using HTTP CONNECT command.
NOTE: While some Web proxy servers support HTTP CONNECT using both clear text and SSL sockets, other servers support HTTP CONNECT using only clear text sockets. For example, Sun Proxy Server 4.0 supports HTTP CONNECT using clear text and SSL sockets while Apache Web Server 2.2 in proxy server mode supports HTTP CONNECT using only clear sockets.
Typically, for SSL/TLS Tunneling support, you do not need to install server or Certificate Authority (CA) certificates on the physical proxy server. Instead, the Web proxy server uses the certificate received from the caller (Oracle Service Bus, in this case) to open a secure socket. Similarly, when the server hosting the business application requires a client certificate, the certificate of the server hosting the proxy service (Oracle Service Bus) is used for authentication.
Oracle Service Bus provides a resource servlet that is used to expose the resources registered in Oracle Service Bus. The resources registered with Oracle Service Bus include:
The format of the URLs used to expose the resources is as follows:
You can use the following URL formats to expose the resource details:
http://host:port/sbresource?WSDL/project/...wsdlname
http://host:port/sbresource?POLICY/project/...policyname
http://host:port/sbresource?MFL/project/...mflname
http://host:port/sbresource?SCHEMA/project/...schemaname
http://host:port/sbresource?PROXY/project/...proxyname
http://host:port/sbresource?BIZ/project/...business_service_name
Note: | The URLs used to expose the resources in Oracle Service Bus must be encoded in UTF-8 in order to escape special characters. |
![]() ![]() ![]() |