Page tree

On this page:

Target audience:

CAST Administrators

Summary: This document provides technical information about the extension called "Universal Linker" (com.castsoftware.wbslinker).

Extension ID


What's new?

Please see Web Services Linker - 1.6 - Release Notes for more information.


The "Web Services Linker" (com.castsoftware.wbslinker) extension is a "dependent" extension that automatically creates links for "web services" between client and server components by following a particular protocol based on objects and names. The extension can be downloaded on its own as a standalone extension, however, it is usually automatically downloaded as a dependency with other extensions such as:

For example for the AngularJS extension:

What does it do?

The Web Service Linker automatically creates cross-technology call links between client (front end) and server (back end) objects. For example, AngularJS front end connected to JEE/Spring MVC back end (click to enlarge):

How does it do it?

End-users do not need to interact or configure the Web Services Linker extension, all configuration is automatic.

The Web Services Linker supports two modes:

  • REST services
  • WSDL/SOAP services

The connection is made via four "root" objects:

HTTP GET Service



HTTP PUT Service

Note that you can view a list of errors and warnings that may potentially be returned during an analysis in Web Services Linker - 1.6.

REST services

The Web Service Linker searches for objects stored in the CAST Analysis Service schema whose type inherits from CAST_ResourceService or CAST_WebServiceLinker_Resource. These objects represent queries to web services on the client side. Then it searches for the web services on the server side: these are objects whose type inherits from CAST_WebService_Operation or CAST_WebServiceLinker_Operation.

When a match is found using the properties CAST_ResourceService.uri / CAST_WebServiceLinker_Resource.uri and / and type of both objects, then a link is created.

Matching algorithm

The matching is done between using the properties CAST_ResourceService.uri / CAST_WebServiceLinker_Resource.uri and /

Before matching, the Web Services Linker transforms the CAST_ResourceService.uri using following rules, in this order:

  • It replace all "//" with "/{}/" except "//" after ":" (to avoid replacing "http://"), supposing that a parameter was intended between both "/" (REST format).
  • It removes everything after "?" in the uri (to suppress uri parameters part which are not part of REST format parameters).
  • It adds a "/" at the end of uri when not present
CAST_ResourceService.uriAfter transformation{}/phone/{}/{}/phone/{}/phone/{}/phone{}/phone/

 The result is then compared to / using the endswith function, ignoring the uri part corresponding to the operation name part whose value is {}.

CAST_ResourceService.uriCAST_WebService_Operation.identification.nameMatch: Yes/No

Examples of matches

A client side url like:

  • ""
is transformed as:
  • "{}/".
It will match a server side operation whose name is "place/{}/"


Server side

The Analysis Service schema contains an object CAST_WebService_GetOperation named /users/

public class UserController {
    @RequestMapping(method = RequestMethod.GET, produces = "application/json; charset=utf-8")
    public PagedResources<UserResource> collectionList(...){

Client side

The Analysis Service schema contains an object CAST_AngularJS_GetResourceService whose property CAST_ResourceService.uri equals 'resources/scenarios/{}/'

return $resource('resources/scenarios/:id', {'id':'@id'}, {
	'query': { method: 'GET', isArray: false },
	'save': {method:'POST', isArray: false },
	'update': {method:'PUT', isArray: false },
	'notify': {method:'PUT', params: {notify: true}, isArray: false },
	'remove': {method:'POST', isArray: false, headers:{'X-HTTP-Method-Override':'DELETE'}}

WSDL/SOAP services

WSDL is generally used in the context of SOAP web services: calls are to an operation, and operations are identified by :

  • operation name
  • port type


Client side


Invocation of EmployeeTravelStatusPT.EmployeeTravelStatus:

<invoke partnerLink="employeeTravelStatus" 
	outputVariable="EmployeeTravelStatusResponse" />

Server side


Reception of operation EmployeeTravelStatusPT.EmployeeTravelStatus:

import javax.jws.WebService;

@WebService(targetNamespace = "")
public class EmployeeTravelStatusPT {

    public int EmployeeTravelStatus(int add1, int add2)


Reception of operation TravelApprovalPT.TravelApproval:

<receive partnerLink="client" 
	createInstance="yes" />

Cross-Technology Transaction

Front-End/Service Exit PointBack-end/Service Entry Point
  • Web Technologies
    • HTML5/Javascript or TypeScript
      • Web Socket Service (WebSocket)
      • XMLHttpRequest Service (XMLHttpRequest)
      • Http Request Service (HttpRequest, Fetch, Axios, SuperAgent)
    • AngularJS
      • AngularJS Service ($resource)
      • Restangular Service (Restangular)
      • Http Service ($http)
    • Vue.js
      • Axios
      • Vue-resources
      • Fetch
    • jQuery
      • jQuery Service ($.ajax, $.get, $.getJSON)
      • SAPUI5 Service.
  • Mobile
    • iOS (Objective-C, Swift)
      • NSURLConnection, NSURLSession
      • AFNetworking
    • Android
      • HttpClient
      • HttpURLConnection
      • AsyncTask
  • .NET
    •  ASP.NET
      • SOAP Resource (SoapDocumentAttr, WebMethodAttr)
      • Razor HttpRequest
  • JEE
    • Java
      • URLConnection, HttpURLConnection 
    • Spring
      • Rest Template
      • Web Util
      • Social Support
      • Web Reactive
    • Apache
      • WebClient
      • HttpClient
      • Utils URIBuilder
      • Wink Resource
      • Wink RestClient
    • Other
      • Retrofit2
      • RestHub Client
      • Feign
  • Kotlin
    • Retrofit
  • Other
    • Python
      • Urllib, Urllib2,
      • Httplib, Httplib2,
      • aiohttp, Flask
  • Node.js (with JavaScript or TypeScript)
    • Express Service (Express)
    • Http Service (Http)
    • Loopback
    • Hapi.js
    • Sails.js
    • Restify
    • Seneca, MQTT (messaging)
    • AWS Lambda
  • JEE
    • JAX-RS
      • Client Builder
      • WebTarget
      • Invocation
      • Reasteasy
      • WebResource
    • SpringMVC (@Request/Put/Post/Get/Mapping)
  • .NET
    • WCF Operation (OperationMethod)
    • Web API
    • SOAP Operation (WebServiceAttribute)
  • Python
    • aiohttp, Flask
  • No labels