Path to published webservices in runtime

1
I have made a published webservices with a microflow, create list of medewerker. In runtime i have created 1 webservice user with a password. Locally i can see everything is fine: http://localhost:8080/ws-doc/ ...shows me the SOAP message with a link to: http://localhost:8080/ws-doc/Publishedwebservice/Medewerkers But in runtime (after deploying) using: https://daywize-vdhs.mendix.nl/ws-doc/ ....i get an error: 404 Not Found Extra information: Publishedwebservice The WSDL Schema is located at http://localhost:8080/ws-doc/Publishedwebservice?wsdl The XSD schema definition is located at http://localhost:8080/ws-doc/Publishedwebservice?xsd Available operations Medewerkers Example SOAP request: <soap:envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tns="http://localhost:8080/ws/"> <soap:header> <tns:authentication> <username>exampleUser</username> <password>examplePassword</password> </tns:authentication> </soap:header> <soap:body> <tns:medewerkers/> </soap:body> </soap:envelope> Example SOAP response: <soap:envelope xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:tns="http://localhost:8080/ws/"> <soap:body> <tns:medewerkersresponse> <listofbasismedewerker>
asked
3 answers
1

Where are you deploying to? Do you have the correct apache/nginx/IIS bindings to reroute the requests to the running application? @mendix hosted environments don't have ws-doc available in production, see explanation below.

As Samet noted, you need to setup the application root so that the runtime will know how to publish the WSDL (the wsdl contains the soap endpoints, so it needs to know where it's residing)

The "preferred" way of doing it is by setting the application root (when running on localhost) to the production URL. This way the app will think the endpoints are already there. Then deploy, and you should be able to access the endpoints afterwards. This is because, ideally, you should never have wsdl's published in a production environment. You import/develop them in a dev environment, and only consume/call them in production.

This has been made easier in 2.5.3, you can specify constants there to which WS calls are made.

answered
0

What is your application root url? I had a similar issue because I forgot to set the application root url.

answered
0

Sorry, it is still not really clear to me how to declare those endpoints. I have two published webservices. You have the general name 'PublishedwebservicePersonlist' which has a WSDL name 'GetPersonsOverview' and a return value WSDL name ‘Personlist’. Now what is the endpoint? Only the URL of the application in the cloud https://cloudapplicationname.mendix.nl/ or https://cloudapplicationname.mendix.nl/ws/PublishedwebservicePerson_list?wsdl. Or is it something else? And what do I do with this constant. With a webservice I consume from the cloud I use this constant in the definition of the webservice. But what do I do with this constant for a webservice I publish from the cloud?

answered