Background:
The visibility of the WSDL URL for a Web Service appears to differ across different Application Servers. For example:
JBoss EAP:
The WSDL URL for a Gen default EJB Web Service is visible under:
Deployment > .ear file > subdeployment > Server_Manager.jar > subsystem > webservices > endpoint > Server_Manager:PStep.
Similarly, the WSDL URL for a Gen Custom Web Service is visible under:
Deployment > .ear file > subdeployment > Custom_Web_Service.war > subsystem > webservices > endpoint > Web_Service_Def:Web_Service.
WebSphere (WAS):
There appears to be no way to find the WSDL URL from the installed application properties in the WebSphere Admin console.
For example for default EJB Web Service, "Service providers" > "PStep" will show "{http://tempuri.org/Pstep/}PSTEP" but does not give the actual URL for the hosting WAS server.
This article tries to fill the above gap and covers the WSDL URL formats for a Gen 8.6 default EJB Web Service and a Custom Web Service with examples given for JBoss EAP 7.x and WebSphere 9.0.
NOTE: The Custom Web Service is dependent on the default EJB Web Service and will not function without it. That requirement is enforced during the Assemble step where the Custom Web Service can only be assembled if the default EJB Web Service is also selected with it. So the only 2 options are to deploy the EJB Web Service on its own or deploy both the EJB Web Service with the Custom Web Service i.e. the Custom Web Service cannot be deployed on its own.
Release: Gen 8.6 Complete (WKS86200/SO09618)
Component: Gen EJB Web Services
For model example with:
Server Manager name = SM
Procedure Step name = PSTEP
Custom Web Service Definition name = custwsdef
JBoss EAP 7.x running on default port 8080
WebSphere 9.0 running on default port 9080
In what is described below, for a Custom Web Service only, the Assemble step Web Services tab gained 2 options for Endpoint URL i.e. "Router and "Custom Web Service" following a change that was introduced after Gen 8.6 GA. If Gen 8.6 Complete (WKS86200/SO09618) is installed then the 2 options will be visible.
JBoss EAP 7.x
1. Default EJB Web Service
http://localhost:8080/SM/PSTEP/PSTEP?wsdl
The deployment to JBoss has all the wsdl/xml in the above file and there is no separate xsd file.
2. Custom Web Service:
a. In the Assemble step on the Web Services tab, Endpoint URL option "Router" is chosen:
http://localhost:8080/custwsdef/router?wsdl
b. In the Assemble step on the Web Services tab, Endpoint URL option "Custom Web Service" is chosen:
http://localhost:8080/custwsdef/custwsdef?wsdl
WebSphere 9.0
1. Default EJB Web Service: http://localhost:9080/SM/PSTEP/PSTEP.wsdl
Note the syntax difference of ".wsdl" versus "?wsdl" compared to JBoss.
The shorter http://localhost:9080/SM/PSTEP?wsdl is also valid which uses "?wsdl" and redirects to the above url http://localhost:9080/SM/PSTEP/PSTEP.wsdl
The deployment to WebSphere does not have all the wsdl/xml in the above file and it references a separate xsd file PSTEP_schema1.xsd which can be accessed via this URL: http://localhost:9080/SM/PSTEP/PSTEP_schema1.xsd
2. Custom Web Service:
a. In Assemble step on the Web Services tab, Endpoint URL option "Router" is chosen:
http://localhost:9080/custwsdef/router?wsdl which redirects to http://localhost:9080/custwsdef/router/WEB-INF/wsdl/custwsdef.wsdl
b. In Assemble step on the Web Services tab, Endpoint URL option "Custom Web Service" is chosen:
http://localhost:9080/custwsdef/custwsdef?wsdl which redirects to http://localhost:9080/custwsdef/custwsdef/WEB-INF/wsdl/custwsdef.wsdl
NOTE: For both Application Servers there is no separate xsd file for a Custom Web Service
General information:
URL syntax for other Application Servers is shown near the bottom of this page under "Publish Web Services": Gen™ 8.6 > Developing > Designing > Use Gen Studio > Create and Publish EJB and Custom EJB Web Services to CA API Gateway
Gen™ 8.6 > Developing > Designing > Use Gen Studio > Create Custom Proxies and Web Services > Use Custom Web Services
Related KB articles:
Gen BT "Web Services" options "Router" & "Custom Web Service"
Gen EJB Web Service runtimes as JBoss EAP global module
Gen EJB Web Service runtimes as WebSphere shared library
WebSphere specific information:
a. Just using this URL http://localhost:9080/SM/PSTEP should show the presence of the Web Service i.e. this window displays:
However, if the Procedure Step name contains underscores e.g. SM=TWSSM and PSTEP=AB_CD_EF then invoking http://localhost:9080/TWSSM/AB_CD_EF will result in this being displayed:
Note the underscores have been removed from the tempuri link and this also has implications when accessing the wsdl file.
Trying to use http://localhost:9080/TWSSM/AB_CD_EF/AB_CD_EF.wsdl will fail with "Error 404: java.io.FileNotFoundException: SRVE0190E: File not found: /AB_CD_EF/AB_CD_EF.wsdl".
Instead, the underscores need to be removed from the lower level of the URL i.e. use http://localhost:9080/TWSSM/AB_CD_EF/ABCDEF.wsdl
Alternatively, the shorter syntax using "?wsdl" can be used with underscores retained i.e. use http://localhost:9080/TWSSM/AB_CD_EF?wsdl which redirects to http://localhost:9080/TWSSM/AB_CD_EF/ABCDEF.wsdl:
b. For deployment of a Custom Web Service to WebSphere 9.x, the application appears to install successfully but the WSDL document for the default EJB Web Service is not created. Although the Custom Web Service WSDL document is created and can be viewed from a browser it will not execute because it is dependent on the default EJB Web Service.
This KB article covers workaround options: WebSphere 9 install of Gen Custom Web Service fails to create WSDL