Web Services Adaptor

DaveAston

New Member
Hi all. I am trying to setup web services in OE 10.2A and have got to the stage where i wish to deploy my web service. However the option to deploy is greyed out and I cannot find out why. Can anyone assist?
 

RealHeavyDude

Well-Known Member
I guess you mean the option in the OpenEdge Explorer. I haven't done this in years - so, more or less just guessing. The deployment process of a web service is a two step thing: First deploy the web service, second enable the web service. Did you already deploy it and just forgot to enable it?

AFAIK the wsaman command line utility should provide you with the possibility to deploy and enable them too. But, as already mentioned, I haven't done this in years - therefore I recommend you to have a look into the documentation for the exact syntax of the wsaman utility.

Heavy Regards, RealHeavyDude.
 

DaveAston

New Member
HI Real

Thanks for the reply. Yes i am looking at the options in Openedge Explorer have am following the doc created by John Sadd, looking at the adapter again i have noticed that there is a statement in the Web Service Protocol Type - Duplicate WSA Url Value.


So i am assuming that the Wsa isnt running due to this, im not sure where to look for the duplicate entry though,

Regards

Dave
 

FrancoisL

Member
What JSE and OS are you using?

if you enter your JSE URL in a browser do you get that it working ?

Then does your wsa url work ?
 

DaveAston

New Member
Hi FrancoiL

I am running OE10.2a on Win2008 32 bit. If i run the follwoing http://localhost:80/wsa/wsa1 i get the ok message so am assuming the service is running, however the option to deploy in OE Explorer for the adapter is still not available so am at a loss. The log file states the following
Error parsing C:/Tomcat/Apache/webapps/wsa//wsa1/default.props. Using cached copy of runtime properties and disabling service. (10755)
 
HI Real

Thanks for the reply. Yes i am looking at the options in Openedge Explorer have am following the doc created by John Sadd, looking at the adapter again i have noticed that there is a statement in the Web Service Protocol Type - Duplicate WSA Url Value.


So i am assuming that the Wsa isnt running due to this, im not sure where to look for the duplicate entry though,

Regards

Dave

Check your service Status It shoud be like this
1.jpg

Dublicate wsa value is run time property.
 

Tarby777

Member
Can you post the default.props and the <web service name>.props files here, please?

When you get the OK message, do you get the numeric code "111" with it, or another code?
 
default.props
<?xml version="1.0" encoding="UTF-8"?>
<ApplicationRuntimeProperties xmlns="urn:schemas-progress-com:WSAD:0008" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<runtimePropertyVersion>5</runtimePropertyVersion>
<appServiceProtocol>AppserverDC</appServiceProtocol>
<appServiceHost>localhost</appServiceHost>
<appServicePort>3080</appServicePort>
<appServiceName>cwh_asbroker</appServiceName>
<staleO4GLObjectTimeout>0</staleO4GLObjectTimeout>
<minSessions>1</minSessions>
<maxSessions>0</maxSessions>
<initialSessions>1</initialSessions>
<idleSessionTimeout>0</idleSessionTimeout>
<requestWaitTimeout>-1</requestWaitTimeout>
<nsClientMinPort>0</nsClientMinPort>
<nsClientMaxPort>0</nsClientMaxPort>
<nsClientPortRetry>3</nsClientPortRetry>
<nsClientPortRetryInterval>200</nsClientPortRetryInterval>
<nsClientPicklistSize>8</nsClientPicklistSize>
<nsClientPicklistExpiration>300</nsClientPicklistExpiration>
<serviceAvailable>1</serviceAvailable>
<serviceLoggingLevel>2</serviceLoggingLevel>
<serviceLoggingEntryTypes>WSADefault</serviceLoggingEntryTypes>
<appServiceConnectionMode>0</appServiceConnectionMode>
<serviceFaultLevel>2</serviceFaultLevel>
<waitIfBusy>1</waitIfBusy>
<connectionLifetime>0</connectionLifetime>
<minIdleConnections>0</minIdleConnections>
<noHostVerify>0</noHostVerify>
<noSessionReuse>0</noSessionReuse>
<appServerKeepalive>denyClientASK,denyServerASK</appServerKeepalive>
<clientASKActivityTimeout>60</clientASKActivityTimeout>
<clientASKResponseTimeout>60</clientASKResponseTimeout>
</ApplicationRuntimeProperties>

service.props
<?xml version="1.0" encoding="UTF-8"?>
<ApplicationRuntimeProperties xmlns="urn:schemas-progress-com:WSAD:0008" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<runtimePropertyVersion>5</runtimePropertyVersion>
<appServiceProtocol>AppserverDC</appServiceProtocol>
<appServiceHost>localhost</appServiceHost>
<appServicePort>3080</appServicePort>
<appServiceName>KPI</appServiceName>
<staleO4GLObjectTimeout>0</staleO4GLObjectTimeout>
<minSessions>1</minSessions>
<maxSessions>0</maxSessions>
<initialSessions>1</initialSessions>
<idleSessionTimeout>0</idleSessionTimeout>
<requestWaitTimeout>-1</requestWaitTimeout>
<nsClientMinPort>0</nsClientMinPort>
<nsClientMaxPort>0</nsClientMaxPort>
<nsClientPortRetry>3</nsClientPortRetry>
<nsClientPortRetryInterval>200</nsClientPortRetryInterval>
<nsClientPicklistSize>8</nsClientPicklistSize>
<nsClientPicklistExpiration>300</nsClientPicklistExpiration>
<serviceAvailable>1</serviceAvailable>
<serviceLoggingLevel>2</serviceLoggingLevel>
<serviceLoggingEntryTypes>WSADefault</serviceLoggingEntryTypes>
<appServiceConnectionMode>1</appServiceConnectionMode>
<serviceFaultLevel>2</serviceFaultLevel>
<waitIfBusy>1</waitIfBusy>
<connectionLifetime>0</connectionLifetime>
<minIdleConnections>0</minIdleConnections>
<noHostVerify>0</noHostVerify>
<noSessionReuse>0</noSessionReuse>
<appServerKeepalive>denyClientASK,denyServerASK</appServerKeepalive>
<clientASKActivityTimeout>60</clientASKActivityTimeout>
<clientASKResponseTimeout>60</clientASKResponseTimeout>
</ApplicationRuntimeProperties>

I do not remember about message with numeric code.
Btw I have my own doc to setup webservice. But it is russian language
http://oblikweb.googlecode.com/files/Architecture.doc
 

Tarby777

Member
The props file looks OK to me. You should check the "OK" message from the WSA URL; if it is not "OK:111" then you have a problem. If it is "OK:101" then you need to set webappenabled=yes in the [wsa] section of ubroker.properties.

I would forget about OpenEdge Explorer and use WSACONFIG / WSAMAN from inside a PROENV shell instead.

1) wsaconfig –i wsa1 –validate
2)
wsaman –i wsa1 –query
3) wsaman –i wsa1 –wsm my_wsm_file.wsm -deploy
4) wsaman –i wsa1 –appname my_app_name -enable

HTH
Tarby

 

sachin4gl

New Member
I am trying to deploy a progress program as a web service . I had successfully done it on windows xp operating system by using following steps

  1. Write progress program and compile it
  2. Generate proxy form proxy generator
  3. Deploy this service via progress explorer

Now I am trying it on Linux machine facing lot of problem , is anyone have step by step document of creating web service on Linux machine ?
Kindly suggest me how can I create a proxy of progress program as I am not able to find proxy generator on Linux on \usr\dlc\bin ?
Is there any way via which I can create proxy on windows xp environment and deploy it on Linux ?
 

Tarby777

Member
I am trying to deploy a progress program as a web service . I had successfully done it on windows xp operating system by using following steps

  1. Write progress program and compile it
  2. Generate proxy form proxy generator
  3. Deploy this service via progress explorer

Now I am trying it on Linux machine facing lot of problem , is anyone have step by step document of creating web service on Linux machine ?
Kindly suggest me how can I create a proxy of progress program as I am not able to find proxy generator on Linux on \usr\dlc\bin ?
Is there any way via which I can create proxy on windows xp environment and deploy it on Linux ?

Hi,

You always run Proxygen on a Windows machine, no matter where you are deploying to.

If your Linux machine has the Progress admin service running, you should be able to deploy your service from your XP machine using Progress Explorer... you just have to connect Progress Explorer to the remote host. Otherwise, you'll have to use the WSACONFIG and WSAMAN utilities to configure your adapter instance and deploy the services.

HTH
Tarby
 

sachin4gl

New Member
hi Tarby,
Thanks for your suggestions. Just have some further queries.

When we generate proxy from proxy generator, it creates 3 files which are .xpxg , .wsm and .wsdl. These files have configuration settings based on progress installation on windows machine. Do I need to change settings such as propath, installation directory, java settings etc. MANUALLY in these files before deploying it on Linux server - because installation structure on Linux is different from that on windows.

Also if you have a sample file for both windows and what changes were made to deploy it on Linux that will be very useful.

Thanks for your help.

Regards,
Sachin
 

Tarby777

Member
hi Tarby,
Thanks for your suggestions. Just have some further queries.

When we generate proxy from proxy generator, it creates 3 files which are .xpxg , .wsm and .wsdl. These files have configuration settings based on progress installation on windows machine. Do I need to change settings such as propath, installation directory, java settings etc. MANUALLY in these files before deploying it on Linux server - because installation structure on Linux is different from that on windows.

Also if you have a sample file for both windows and what changes were made to deploy it on Linux that will be very useful.

Thanks for your help.

Regards,
Sachin

Hi Sachin,

No changes are required at all for deployment on Linux... you only need the WSM file from your XP box, which you will then use in conjunction with "wsaman -i <WSA instance> -appname <myApp> -wsm <WSMFile> -deploy". It doesn't matter that you are on a different OS, or that the WSM file might contain references to your Windows box. The configuration is done in ubroker.properties and in the <service name>.props file in the web server. The XPXG file is the settings file for Proxygen (there is one file per application), so you don't need to deploy it. As for the propath, the propath of the Appserver that you run your 4GL code on is the important thing.

Just make sure that you read up on WSACONFIG (which you use to check that the WSA instance is valid and running) and WSAMAN (which you use to deploy and enable the web service). If you can't connect your Linux box to Progress Explorer, you'll also have to make some edits to the ubroker.properties file... that is what Progress Explorer has been doing so far, so take a look at your XP ubroker.properties file and search for 'WSA" to see the entries that it contains...

BTW, the knowledgebase entries for the WSA are quite good... they take you step-by-step through the configuration process.

HTH
Tarby
 
you can deploy web servoce directlly on linux server through progress explorer. It is the same as deploying on local server. You do not need to do any changes in files generated by proxygen
 

sachin4gl

New Member
hi ,
i had sucessfully deploy my service on linux server ,
- get the status code ok 111 ,
- enabled webs services in wsa1
- deploy web service on wsa1
- enable my web service

not while tried to call it from my client it is giving me error
"End point not found on the server , Status code 404 (not found ) rec (1773) "

kindly help me .

regards,
sachin
 
You have to edit servicename.wsdl file under webapps catalog on Linux.
Find endpoint tag at the end of file, and delete ipaddress or host name. Leave only relative path, not absolute.
 

sachin4gl

New Member
hi maximmonin
thanks for reply

i had tried to find endpoint tag but it is no where in my servicename.wsdl file

here is the structure for my wsdl file

<?xml version="1.0" encoding="UTF-8"?>
<definitions name="jgjh" targetNamespace="urn:jgjhser" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:prodata="urn:schemas-progress-com:xml-prodata:0001" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="urn:jgjhser" xmlns:S2="urn:jgjhser:jgjh" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:S1="urn:soap-fault:details" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/">
<wsdl:documentation>EncodingType=DOC_LITERAL, WSA_Product=10.2B04 - N/A</wsdl:documentation>
<types>
<schema elementFormDefault="unqualified" targetNamespace="urn:soap-fault:details" xmlns="http://www.w3.org/2001/XMLSchema"><element name="FaultDetail"><complexType><sequence><element name="errorMessage" type="xsd:string"/><element name="requestID" type="xsd:string"/></sequence></complexType></element></schema>
<schema elementFormDefault="qualified" targetNamespace="urn:jgjhser:jgjh" xmlns="http://www.w3.org/2001/XMLSchema"><element name="jgjh"><complexType><sequence/></complexType></element><element name="jgjhResponse"><complexType><sequence><element name="result" nillable="true" type="xsd:string"/></sequence></complexType></element></schema>
</types>
<message name="jgjh_jgjhResponse">
<part name="parameters" element="S2:jgjhResponse"/>
</message>
<message name="FaultDetailMessage">
<part name="FaultDetail" element="S1:FaultDetail"/>
</message>
<message name="jgjh_jgjh">
<part name="parameters" element="S2:jgjh"/>
</message>
<portType name="jgjhObj">
<operation name="jgjh">
<input message="tns:jgjh_jgjh"/>
<output message="tns:jgjh_jgjhResponse"/>
<fault name="jgjhFault" message="tns:FaultDetailMessage"/>
</operation>
</portType>
<binding name="jgjhObj" type="tns:jgjhObj">
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="jgjh">
<soap:eek:peration soapAction="" style="document"/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
<fault name="jgjhFault">
<soap:fault name="jgjhFault" use="literal"/>
</fault>
</operation>
</binding>
<service name="jgjhService">
<port name="jgjhObj" binding="tns:jgjhObj">
<wsdl:documentation></wsdl:documentation>
<soap:address location="http://serverhostname/wsa/wsa1"/>
</port>
</service>
</definitions>

kindly guide me
 

sachin4gl

New Member
hi maximoni

should i remove the whole line i.e
<soap:address location="http://qadtest05.sml.motherson.com/wsa/wsa1"/>

or do some editing ?

regards
Sachin
 

sachin4gl

New Member
DEFINE VARIABLE hWebService AS HANDLE NO-UNDO.
DEFINE VARIABLE hjgjhObj AS HANDLE NO-UNDO.
DEFINE VARIABLE result AS CHARACTER NO-UNDO.
DEFINE VARIABLE lstatus AS LOGICAL NO-UNDO.
CREATE SERVER hWebService.

lstatus = hWebService:CONNECT("-WSDL 'serverip:8080/wsa/wsa1/wsdl?targetURI=urn:jgjhser'").
MESSAGE "connected : " lstatus VIEW-AS ALERT-BOX.
IF lstatus THEN
DO:
RUN jgjhObj SET hjgjhObj ON hWebService.
MESSAGE "HANDLE " hjgjhObj VIEW-AS ALERT-BOX.
RUN jgjh IN hjgjhObj(OUTPUT result).
hWebService:DISCONNECT().
END.
DELETE OBJECT hjgjhObj NO-ERROR.
DELETE OBJECT hWebService NO-ERROR.

this is the structure of my client while i run it .
first i get the message i.e connected yes
then get message of handle
after that i get the error
 
Top