URL formats for Default & Custom Gen EJB Web Service
search cancel

URL formats for Default & Custom Gen EJB Web Service

book

Article ID: 195811

calendar_today

Updated On:

Products

Gen Gen - Host Encyclopedia Gen - Run Time Distributed Gen - Workstation Toolset

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

Environment

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

Resolution

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

Additional Information

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:

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

Hello! This is an Axis2 Web Service!

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:

{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: WebSphere 9 install of Gen Custom Web Service fails to create WSDL