CA Gen 8.6 default EJB Web Service and Custom Web Service - WSDL and xsd URL formats for JBoss EAP and WebSphere

book

Article ID: 195811

calendar_today

Updated On:

Products

CA Gen

Issue/Introduction

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 CA 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 CA 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 CA 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.

Environment

Release: CA Gen 8.6 Complete (WKS86200/SO09618)
Component: CA Gen EJB Web Services

Resolution

For model example with:
Server Manager name = SM
Server Procedure Step name = SPSTEP
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, the Assemble step Web Services tab only 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/SPSTEP/SPSTEP?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/SPSTEP/SPSTEP.wsdl
Note the syntax difference of ".wsdl" versus "?wsdl" compared to JBoss.
The shorter http://localhost:9080/SM/SPSTEP?wsdl is also valid which uses "?wsdl" and redirects to the above url http://localhost:9080/SM/SPSTEP/SPSTEP.wsdl
The deployment to WebSphere does not have all the wsdl/xml in the above file and it references a separate xsd file SPSTEP_schema1.xsd which can be accessed via this URL:
http://localhost:9080/SM/SPSTEP/SPSTEP_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

Additional Information

WebSphere specific information:
a. Just using this URL http://localhost:9080/SM/SPSTEP should show the presence of the Web Service i.e. this window displays:

{http://tempuri.org/SPStep/}SPStep

Hello! This is an Axis2 Web Service!

However, if the Server Procedure Step name contains underscores e.g. SM=TWSSM and SPSTEP=AB_CD_EF then invoking http://localhost:9080/TWSSM/AB_CD_EF will result in this being displayed:

{http://tempuri.org/AbCdEf/}AB_CD_EF

Hello! This is an Axis2 Web Service!


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:
Install of CA Gen 8.6 default EJB Web Service with Custom Web Service under WebSphere 9 fails to create default EJB Service WSDL document


General information:
CA GEN 8.6 > Developing > Designing > Use Gen Studio > Create Custom Proxies and Web Services > Use Custom Web Services

Related KB articles:
CA Gen Build Tool Assemble "Web Services" tab for Custom EJB Web Service has 2 options "Router" and "Custom Web Service"
CA Gen EJB Web Service and Custom Web Service deployment requires "Package runtime in EAR" at Assemble time

Attachments