Discussion
WSDL generation for SOAP Service in V6.1 SP2
I need information on how the WSDL file is generated for Service SOAP. I understand that we click on the "Generate Deployment Files" and pega gives the complete WSDL file which is in the format - https://app server host name:port/prweb/PRSOAPServlet/SOAP/Service Class/Service Package?WSDL
Internally, Pega calls "svcUtil.createWSDL(params, serviceMethods)" method which we do not have any control on.
My understanding is that for a multi-node environment, if we generate the WSDL while logged in to 1 node, the WSDL is generated/accessible from all nodes.
E.g.
If we have nodes ABC123, ABC456, ABC789 and we generate the WSDL while logged in to ABC123 node. The WSDL generated would be
1. https://ABC123:port/prweb/PRSOAPServlet/SOAP/Service Class/Service Package?WSDL
but following WSDL's are also generated
2. https://ABC456:port/prweb/PRSOAPServlet/SOAP/Service Class/Service Package?WSDL
3. https://ABC789:port/prweb/PRSOAPServlet/SOAP/Service Class/Service Package?WSDL
Our requirement is to have WSDL for only 1 node i.e. point-1 ONLY and not point-2 and 3.
Is there a way we can achieve that?
The WSDL is just a machine-readable description of the SOAP service, and not the service itself. Each version of the WSDL contains endpoint bindings for the node it was generated on, and that's really what you want to control based on my reading of the question. Unlike listener-based services, there is no way to limit specific SOAP (or REST, or HTTP) services or packages of services to run on specific nodes within the cluster. Your only option today is to do filtering at the app-server level to prevent services from being accessible on a given node.