Webservice and _setProperty does not exist


On a old Coldfusion 8 app, we were able to do something like that:

<cfset ws = createObject("webservice", "https://example.com/mywebservice.wsdl")>
<cfset ws._setProperty('javax.xml.rpc.service.endpoint.address',"http://localhost:1234")>

Lucee generate the error :

The method/operation [_setProperty] does not exist, only the following methods/operations are available: [example1, example2, example3, etc…].

The _setProperty was probably an undocumented way to change a property of a webservice and I believe It’s not working on recent versions of ACF too.

Is there any equivalent on Lucee to change the endpoint?

Thank you

what do you see when you dump out the ws object?

All the methods of the webservice. See attachment.

Here the dump from Coldfusion 8

Technically speaking, can we use Lucee to call a webservice whose definition file (wsdl) is located at one url and the endpoint at another?

If my understanding is correct, Lucee calls a wsdl file which defines the endpoint with :

<wsdl:service name="PaymentTransactionV2200">
		<wsdl:port name="PaymentTransactionPort" binding="tns:PaymentTransactionSoapBinding">
			<soap:address location="https://www.ctpaiement.com/ws2014/services/PaymentTransactionV2200"/>

Lucee retrieves this data and it will be the endpoint of the webservice when I call a method.

My question is therefore: Can we with Lucee modify this endpoint programmatically without directly modifying the wsdl file?

does GetComponentMetaData(ws) or GetMetaData(ws) show anything else up?

GetMetaData return this

GetComponentMetaData return can’t cast Webservice to a string

you could play around in the java, it’s an extension

once you made your changes, just run ant in the root and it will produce a new .lex you can manually upload

Is it a different extension than what is installed by default in Lucee with the name “Axis 1 Webservices”?

I’m not sure what changes I am suppose to do with this extension. I am suppose to create a new extension from this one to add a method to be able to change the endpoint of a webservice?

yep that repo is the source for that extension

that’s the idea, if you want to try it

Thanks for the suggestion, but I’m not very familiar with developing in Java. Since I have only one webservice that works this way, I will test soon if I can modify the wsdl file to get what I want.

Finally I modify the wsdl on the fly to change to endpoint for what I want before passing it to createObject(“webservice”).

1 Like