One Star

How comes the WSDL to the Job Server

Hello Everybody!
We have a whole Talend DI Job created and this job is wrapped as a complete functional
web service. The belonging WSDL file was imported to Talend Studio to its Services and
referenced in that DI Job.
As long as I run the job locally in conjunction with Talend Open Studio the web services
starts trouble-free. But now when the Job is deployed via TAC and starts on a Job Server
the following error occurs:
javax.wsdl.WSDLException: WSDLException: faultCode=PARSER_ERROR: Problem parsing 'C:/Talend/5.3.1/Talend-Studio-r104014-V5.3.1/workspace/DI2012_DISTRIBUTION/services/WarehouseUploadWSDL_0.1.wsdl'.: java.io.FileNotFoundException: /C:/Talend/5.3.1/Talend-Studio-r104014-V5.3.1/workspace/DI2012_DISTRIBUTION/services/WarehouseUploadWSDL_0.1.wsdl (No such file or directory)
at com.ibm.wsdl.xml.WSDLReaderImpl.getDocument(Unknown Source)
at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
at org.apache.cxf.wsdl11.WSDLManagerImpl.loadDefinition(WSDLManagerImpl.java:262)
at org.apache.cxf.wsdl11.WSDLManagerImpl.getDefinition(WSDLManagerImpl.java:205)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.isEmptywsdl(ReflectionServiceFactoryBean.java:2603)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.isFromWsdl(ReflectionServiceFactoryBean.java:541)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.initializeServiceModel(ReflectionServiceFactoryBean.java:545)
at org.apache.cxf.service.factory.ReflectionServiceFactoryBean.create(ReflectionServiceFactoryBean.java:263)
at org.apache.cxf.jaxws.support.JaxWsServiceFactoryBean.create(JaxWsServiceFactoryBean.java:205)
at org.apache.cxf.frontend.AbstractWSDLBasedEndpointFactory.createEndpoint(AbstractWSDLBasedEndpointFactory.java:102)
at org.apache.cxf.frontend.ServerFactoryBean.create(ServerFactoryBean.java:159)
at org.apache.cxf.jaxws.JaxWsServerFactoryBean.create(JaxWsServerFactoryBean.java:211)
at di2012_distribution.warehouseuploadwsjob_0_1.WarehouseUploadWSJob$HandlerThread_tESBProviderRequest_1.run(WarehouseUploadWSJob.java:1017)
Caused by: java.io.FileNotFoundException: /C:/Talend/5.3.1/Talend-Studio-r104014-V5.3.1/workspace/DI2012_DISTRIBUTION/services/WarehouseUploadWSDL_0.1.wsdl (No such file or directory)
at java.io.FileInputStream.open(Native Method)

Please help and give some hints.
Kind regards
Hilderich
2 REPLIES
One Star

Re: How comes the WSDL to the Job Server

There are a few options. Many companies have a web server on the internal network that is used to host WSDLs. That way the WSDL can be referenced from services, from clients, and so on with a common URI. Your deployment process then is adjusted to include a step for deploying the WSDL to the web server.
A hint... Think through your naming conventions for imported or referenced WSDLs. Also consider how you will handle multiple versions of the "same" WSDL. Adding elements, for example, is pretty simple. Changing elements and supporting backward compatibility is harder . This gets pretty ugly pretty quickly.
If you are exposing the web service to the clients outside the firewall, you will also need to (a) work with the network team to set up a proxy so that external and internal clients can access the WSDL; or (b) host the WSDL inside and outside the firewall. Setting up the correct proxy, or XML firewall, or similar network infrastructure is beyond the scope of this forum.
One Star

Re: How comes the WSDL to the Job Server

Hello wrlawton!
Many thanks for your reply.
Your suggestion to reference the WSDL by URI doesn't work because
in Talend Studio under "Services" you can either create a WSDL from scratch or
select a WSDL by a local path. I have not the choice to type in a web site location.
How can I achieve this in Talend Studio.
Cheers
Hilderich