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
Before you Begin
· Ensure the EAServer server you will be using is up and running
· Define an EAServer profile in PowerBuilder, and test it to verify the connection is successful.
· Note that these instructions assume host=localhost, and http port=8080. Please adjust these values to match your environment.
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
name: asName
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
Click OK to create the entry
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 components.
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.
Click OK
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
11. 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.
Step C - Create a PowerBuilder Proxy Using the WSDL file
In 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: pbsoapclient90.pbd
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 event:
5.
6. SoapConnection lsc_SoapConn
7. string ls_soapResponse
8. long ll_result
9. mywebservices_n_pbhelloserviceport proxy_obj
10.
11. // initialize
12. lsc_SoapConn = create SoapConnection
13.
14. // Create proxy object
15. ll_result = lsc_SoapConn.CreateInstance(proxy_obj, &
16. "mywebservices_n_pbhelloserviceport")
17.
18. if ll_result = 0 then
19. try
20. // Invoke service and display result
21. ls_soapResponse = proxy_obj.fhello("Jackie")
22. MessageBox("SOAP Response", ls_soapResponse)
23. catch ( SoapException e )
24. // error handling
25. MessageBox ("Error", "Cannot invoke Web service." &
26. + " Exception info: " + e.text)
27. end try
28. else
29. MessageBox ("Error: " + string(ll_result), &
30. "Unable to create proxy")
31. end if
32.
33. // clean up
34. destroy lsc_SoapConn
Run the window and click the button to invoke the Web Service and display the result:
For More Information
See the EAServer Web Services Toolkit User's Guide, and the Developing Web Applications section of PowerBuilder Application Techniques.