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 Application Server Traditional:
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 server.
This article tries to fill the above gap and covers the WSDL URL format/syntax for a Gen 8.6 default EJB Web Service and a Custom Web Service with examples given for:
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: Minimum Gen 8.6 Complete
Component: Gen EJB Web Services
For a 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 Application Server Traditional 9.0 running on default port 9080
WebSphere Application Server Liberty or Open Liberty 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 at least Gen 8.6 Complete (WKS86200/SO09618) is installed then the 2 options will be visible.
1. Default EJB Web Servicehttp://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
1. Default EJB Web Service:http://localhost:9080/SM/PSTEP/PSTEP.wsdl
Note the syntax difference of ".wsdl" versus "?wsdl" compared to JBoss.
This shorter version is also valid which uses "?wsdl" and redirects to the above url:http://localhost:9080/SM/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
1. Default EJB Web Servicehttp://localhost:9080/SM/PSTEP?wsdl
The deployment to Liberty 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:9080/custwsdef/router?wsdl
b. In the Assemble step on the Web Services tab, Endpoint URL option "Custom Web Service" is chosen:http://localhost:9080/custwsdef/custwsdef?wsdl
NOTE: For all above Application Servers there is no separate xsd file for a Custom Web Service
URL syntax for other Application Servers is shown near the bottom of this page under "Publish Web Services": Use Gen Studio > Create and Publish EJB and Custom EJB Web Services to CA API Gateway
Use Gen Studio > Create Custom Proxies and Web Services > Use Custom Web Services
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
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