Expand my Community achievements bar.

Enhance your AEM Assets & Boost Your Development: [AEM Gems | June 19, 2024] Improving the Developer Experience with New APIs and Events

Passing WSDL URL at runtime

Avatar

Level 10

Hi All,

     I am looking for some help on how to pass the WSDL URL for the "WebService" Service at runtime..

     Currently I defined a WebServiceSettingBean variable and trying to set the values at runtime. But I am getting the below error.

     2010-11-15 19:57:01,156 ERROR [com.adobe.idp.workflow.dsc.invoker.WorkflowDSCInvoker] An exception was thrown with name com.adobe.idp.dsc.RequiredParameterException message:Parameter: webServiceOptions is required. while invoking service WebService and operation invoke and no fault routes were found to be configured.

     Below image shows the variables of the WebServiceSettingBean variable currently I am setting..

     Can any one throw some direction on how to use this?

     The whole idea is to pass the WSDL URL from a configuration file when we migrate the LCA to different deployment environments.

     Thanks

     Srini

   

WebServiceSettingBean.JPG

9 Replies

Avatar

Level 10

I know this is a stupid question...but did you assign your variable as the input variable of the Web Service step.

The error says the input variable is not defined. When I do it, I don't get this error.

Jasmin

Avatar

Level 10

Jasmin,

      Thank you for reminding my mistake. I assigned the variable but at some point of my debugging I removed the variable assignment and started using the literal value. But now I re-assigned the variable.

      Still I am getting the below error.

       2010-11-16 11:31:43,437 ERROR [com.adobe.idp.workflow.dsc.invoker.WorkflowDSCInvoker] An exception was thrown with name com.adobe.idp.dsc.webservice.exception.WebServiceConfigurationException message:Configuration error - port specified is unavaliable: null while invoking service WebService and operation invoke and no fault routes were found to be configured.

       Below are the screen shots that I have tried setting the values for WeServiceSettingBean variable and the working settings of the Webservice at design time.

       Can this help you understand what mistakes I may be doing to make it work?

Thanks

Srini

WebServiceSettingBean.JPG

Working WebService Settings.JPG

Avatar

Level 10

When I did the test this morning I ended up with that same port issue.

I tried it with three different WSDL. I'm not sure why that happens.

We might have to get support involved.

I'll do a bit research, but I'm not sure if I'll find a solution.

Jasmin

Avatar

Level 10

Thank you Jasmin.. I will wait for your response after you get the update from Support team.

Thanks

Srini

Avatar

Level 10

I'm not checking with support. I'm going to ask around.

Wait a day or two and if I have not responded back, then log a bug with support.

Jasmin

Avatar

Level 10

My colleague in Support found a workaround.

Make sure to pass the soap request as a string parameter and all of it on the same line (no crlf).

I know this is not very elegant, but it'll get you going.

Jasmin

Avatar

Level 2

Hello Jasmin

We get the same port error using the WebServiceSettingBean.

When we test the same web service with literal config, it is working fine.

Is it a known bug and will it be fixed in upcoming releases?

The suggested "workaround" to put the soap request in one single line di dnot solve the issue.

regards

/sandro

Avatar

Level 4

Sandro,

Did you find a solution for this issue.

I am running into the same kind of issue, While trying to invoke the service with a litral input in the web service foundation component its working,

but if I use a webServiceSettingBean, it give the following error message

 

Caused by: Configuration error - port specified is unavaliable: WSCheckDutyBookingV2Soap

at com.adobe.idp.dsc.webservice.WebServiceSoapUIInvoker.getOperation(WebServiceSoapUIInvoker.java:561)

at com.adobe.idp.dsc.webservice.WebServiceSoapUIInvoker.invoke(WebServiceSoapUIInvoker.java:126)

at com.adobe.idp.dsc.webservice.WebServiceImpl.invoke(WebServiceImpl.java:98)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

at java.lang.reflect.Method.invoke(Method.java:597)

at com.adobe.idp.dsc.component.impl.DefaultPOJOInvokerImpl.invoke(DefaultPOJOInvokerImpl.java:118)

... 85 more

Check Booking input params.jpg

Please let me know if you have found any solution to this issue

Avatar

Level 6

We are using WebserviceSettingBean in other way, if you already tried or it wont suits ur requirement may ignore this method. This way still it can be used as runtime wsdl and port across environments without updating process each time.

Double Click on  WebserviceSettingBean variable and on the opened pop-up click the browse button under Datatype Specific Settings this will gives another pop-up to configure wsdl.

First time configuration need to give full path od the WSDL URL and it uses that time only. The same service can be ported across the environments.(Check the logs, it always derived from the runtime URL only, not the URL used on first time. Here, configure Target URL using XPath, this will be the runtime or environment specific. I guess across the environments any webservice may not have different port and operations.

-Raghu.