What Are In-Source Servers?

As the name implies, an in-source server definition lives in an extension's source code (specifically in the catalog.json file) and is therefore packaged up as part of the extension itself.

This means that the URL for the server is constant; you cannot change it during different phases of the development cycle as you can with local servers. In addition, the authentication methods available to in-source servers are limited to those that don't rely on credentials (like None, Oracle Cloud Account, and OAuth 2.0 User Assertion).

How can you tell if a server is an in-source server? For starters, it won't have the Local server definition tag on the Servers tab: Description of servcon-no-lsdtag.png follows
Description of the illustration servcon-no-lsdtag.png

Additionally, if you click Edit Server, you'll see that the Local Server Definition checkbox hasn't been checked: Description of servcon-no-lsdcheckbox.png follows
Description of the illustration servcon-no-lsdcheckbox.png

If you navigate to the Source tab in the Designer, you can see the server definition, including the URL and authentication type (if any):


"restCountries": {
"description": "restCountries",
"servers": [
{
            "url": "https://restcountries.com",
            "description": "Default Server"
}
[
}

Because an in-source server is packaged with an App UI's source code, it can support only very limited use cases, where there's no need to differentiate the URL based on the deployment instance. Publicly available REST APIs that don't require authentication, like https://restcountries.com, are good candidates for in-source servers. As shown in this diagram, the myBackend backend resolves to https://restcountries.com with no authentication at all times (in VB Studio, plus all Dev/Test/Prod Oracle Cloud Application instances): Description of servcon-insource-only.png follows
Description of the illustration servcon-insource-only.png

If you change the details of an in-source server (like the URL) after deploying your extension, you'll need to redeploy it so that the changes will take effect. (Changes to local servers and runtime configurations, on the other hand, take effect immediately; redeploying is not required.)