There are two ways to set an offset to a port:
- Pass the port offset to the server during startup. The following command starts the server with the default port incremented by 3
- Set the offset in the Ports section of
When you offset the server's port, it automatically changes all ports it uses. However, you are also able to manually adjust the ports for the Thrift client and Thrift server if needed.
Changing the Thrift client and server ports
The port offset specified earlier in the
carbon.xml file affects the ports of the Thrift client and server as well (the default port is 10397). However, since Thrift is run as a separate server within WSO2 servers, it is possible to adjust the ports manually in the
<APIM_HOME>/repository/conf/api-manager.xml file. By default, the
<ThriftServerPort> elements are commented out. If you want to adjust those ports manually, first uncomment the elements and change the Thrift ports separately. For example,
If you specify the Thrift client and server ports manually, the port offset specified in the
carbon.xml file has no effect on those two ports and the value that is set manually is used instead.
When you run multiple instances of the API Manager in distributed mode, the Gateway and Key Manager (used for validation and authentication) can run on two different JVMs. When the API Gateway receives API invocation calls, it contacts the API Key Manager service for verification (given that caching is not enabled at the Gateway level). Communication between API Gateway and Key Manager happens in either of the following ways:
- Through a Web service call
- Through a Thrift call
The default communication mode is using Thrift. Assume that the Gateway port is offset by 2, Key Manager port by 5 and the default Thrift port is 10397. If the Thrift ports are changed by the offsets of Gateway and Key Manager, the Thrift client port (Gateway) will now be 10399 while the Thrift server port (Key Manager) will change to 10402. This causes communication between the Gateway and Key Manager to fail because the Thrift client and server ports are different.
To fix this, you must change the Thrift client and server ports of the Gateway and Key Manager to the same value. In this case, the difference between the two offsets is 3, so you can either increase the default Thrift client port by 3 or else reduce the Thrift server port by 3.
Changing the offset of the Workflow Callback Service
The API Manager has a Service which listens for workflow callbacks. This service configuration can be found at
<APIM_HOME>/repository/deployment/server/synapse-configs/default/proxy-services/WorkflowCallbackService.xml. Open this file and change the port value of the
<address uri> accordingly.
Changing the Inbound websocket port
If you are changing the port offset, it is necessary to change the websocket port as well, regardless of whether or not you use websocket APIs.
From API Manager 2.1.0 onwards, you can create and publish websocket APIs. The default port used for websocket APIs is port 9099.
If you are using port offsets with multiple API Manager nodes in a distributed mode, you need to change the
inbound.ws.port in the
<APIM_HOME>/repository/deployment/server/synapse-configs/default/inbound-endpoints/WebSocketInboundEndpoint.xml file by incrementing it with the same offset that you used in the
<APIM_HOME>/repository/conf/carbon.xml file above.
For example, if your
carbon.xml file has an offset value of 2, the
WebSocketInboundEndpoint.xml file should have an
inbound.ws.port value of 9101, as shown below.
For a list of all default ports opened in WSO2 API Manager, see Default Product Ports.