EAServer Web Service Using PowerBuilder Component and Client
This document illustrates how to use a PowerBuilder component as a Web service hosted in EAServer, and use a PowerBuilder client to call the Web service. Instructions are provided to:
- Create and Deploy a PowerBuilder component
- Expose the PB Component as a Web Service using EAServer Web Services Toolkit
- Create a PowerBuilder proxy using the WSDL file
- Call the web service from a PowerBuilder client
Step A - Create and Deploy a PowerBuilder Component
In this section, we will create a simple PowerBuilder component and deploy it to EAServer. The component will have one method, that receives and retruns a string.
- Start PowerBuilder 9 and create a new workspace
- Create a new target, based on the following information. Accept the defaults
for all other values.
Target type: EAServer Component Interface options New interface PowerBuilder object name: n_pbhello EAServer component name: n_pbhello EAServer profile: as appropriate to connect to your server Package name: mywebservices
- Add a function to n_pbhello, based on the following information:
Function name: fHello Return type: string Argument: type: string
Code: return "Hello " +asName + " from PB Web Service";
- Deploy the project
- Generate stubs for the component in EAServer
- Run Jaguar Manager and connect to your EAServer server
- Expand the mywebservices package. Right-click the n_pbhello component
and choose Generate Stubs and Skeletons from the popup menu.
Choose these options:
-- Generate Stubs
-- Generate Java files
-- Java code base: the location to your EAServer \html\classes directory
-- Compile Java stubs
Click Generate, and verify that the last line of the Code Generation Status Window shows "Code Generation Completed Successfully"
Step B - Expose the Component as a Web Service using EAServer Web Services Toolkit
In this section, we will use the EAServer Web Services Toolkit to create the WSDL to expose the component as a web service.
- Run Jaguar Manager
- Choose Connect | Web Services Toolkit from the Tools menu, and specify
the login information for your EAServer server
- Select the WSDL Documents folder and choose New WSDL Document from the
File menu. Specify these values:
Definition name: pbhello Target namespace: http://localhost:8080/pbhelloImpl
- Select the pbhello entry and choose New Web Service from the File menu
- On the New Web Service window, click browse to display a list of the eligable
Choose the n_pbhello component under the mywebservices package and click OK.
(Tip: Restart the EAServer server if you do not see the component included in the list.)
- Verify the selection is filled in as the Web Service Name.
- Right-click mywebservices/n_pbwebserviceService in the details pane click
choose Porperties from the popup
- The Web Services Properties window appears. Click Add Addresses
- The Web Service Addresses window appears
- Specify 8080 as the Port
- Specify localhost as the Host
- Click Add so an entry is included in the Current Addresses list
- Click OK to close the window
- The address appears in the list.
Click Select Operations...
- The methods that are eligible as a web service operation appear.
Select fhello and click OK.
- The desired address and operation have now been specifed.
Click OK to close the window. The WSDL is now complete. EAServer created two WSDL files for you: pbhelloImpl.wsdl and pbhello.wsdl, in the %EAServer%\Webservices\work\wsdl
- Now just need to put the WSDL files into an appropriate directory so they
can be access via an http URL.
Copy pbhelloImpl.wsdl and pbhello.wsdl from your %EAServer%\Webservices\work\wsdl directory into the %EAServer%\html directory.
Click OK to create the entry
Step C - Create a PowerBuilder Proxy Using the WSDL fileIn this section, we will create a proxy object in PowerBuilder, to allow us to invoke the Web Service from a PowerBuilder client.
- Start PowerBuilder 9 and create a new workspace.
- Create an Application object, add add the following to the library list:
The soapconnection and soapexception objects will now be included in the tree
- Create a new project, of type Web Service Proxy Wizard.
Specify the WSDL file as follows, to be served up from the EAServer http listener:
Select the service found in the WSDL fle:
Select the port for the service:
Step through the rest of the wizard to create the project. Select the project and deploy it.
- Create a new window with a button, and add this code the button clicked
SoapConnection lsc_SoapConn string ls_soapResponse long ll_result mywebservices_n_pbhelloserviceport proxy_obj // initialize lsc_SoapConn = create SoapConnection // Create proxy object ll_result = lsc_SoapConn.CreateInstance(proxy_obj, & "mywebservices_n_pbhelloserviceport") if ll_result = 0 then try // Invoke service and display result ls_soapResponse = proxy_obj.fhello("Jackie") MessageBox("SOAP Response", ls_soapResponse) catch ( SoapException e ) // error handling MessageBox ("Error", "Cannot invoke Web service." & + " Exception info: " + e.text) end try else MessageBox ("Error: " + string(ll_result), & "Unable to create proxy") end if // clean up destroy lsc_SoapConn
- Run the window and click the button to invoke the Web Service and display