cancel
Showing results for 
Search instead for 
Did you mean: 

Errors in Adaptive Web Service model

Former Member
0 Kudos

Hi,

We are trying to consume a Webservice created in XI 3 sp18 using Webdynpro adaptive webservice model in Netweaver Developer Studio SP15. The portal version is EP7 SP15

When we give a Model name and specified the destination as EPDes while creating the Adaptive Service model, and configure the destination EPDes in Visual Admin and execute the webdynpro application, we are facing errors.

The application is failing at this first statement itself "PFModel obj = new PFModel();"

The webservice works fine when it is tested through SOAPUI tool.

Please help us in resolve this problem.

Below is the error message

Exception on creation of service metadata for WS metadata destination 'EPDes' and WS interface 'MI_Employer_PeopleFinder_OB_Sync'. One possible reason is that the metadata destination 'EPDes' has not been properly configured; check configuration.

Root Cause

The initial exception that caused the request to fail, was:

java.io.IOException: com.sap.engine.lib.xml.util.NestedException: Element passed is not WSDLD Document !

at com.sap.engine.services.webservices.espbase.query.WSDLReader.checkForException(WSDLReader.java:100)

at com.sap.engine.services.webservices.espbase.query.WSQueryImpl.initialize(WSQueryImpl.java:312)

at com.sap.engine.services.webservices.espbase.query.WSQueryImpl.findWSInterfaces(WSQueryImpl.java:151)

at com.sap.engine.services.webservices.server.management.discovery.ServiceDiscoveryImpl.getWSDLUrl(ServiceDiscoveryImpl.java:71)

at com.sap.engine.services.webservices.espbase.client.dynamic.GenericServiceFactory.createService(GenericServiceFactory.java:128)

... 49 more

Detailed Error Information

Detailed Exception Chain

*com.sap.tc.webdynpro.model.webservice.exception.WSModelRuntimeException: *Exception on creation of service metadata for WS metadata destination 'EPDes' and WS** interface 'MI_Employer_PeopleFinder_OB_Sync'. One possible reason is that the metadata destination 'EPDes' has not been properly configured; check configuration.

at com.sap.tc.webdynpro.model.webservice.metadata.WSModelInfo.getOrCreateWsrService(WSModelInfo.java:440)

at com.sap.tc.webdynpro.model.webservice.metadata.WSModelInfo.readOperationsFromWSDL(WSModelInfo.java:372)

at com.sap.tc.webdynpro.model.webservice.metadata.WSModelInfo.importMetadataInternal(WSModelInfo.java:342)

at com.sap.tc.webdynpro.model.webservice.metadata.WSModelInfo.importMetadata(WSModelInfo.java:326)

at com.sap.tc.webdynpro.model.webservice.metadata.WSModelInfo$Cache.getModelInfo(WSModelInfo.java:199)

at com.sap.tc.webdynpro.model.webservice.metadata.WSModelInfo.getModelInfoFromCacheOrCreate(WSModelInfo.java:1035)

at com.sap.tc.webdynpro.model.webservice.metadata.WSModelInfo.getModelInfoFromCacheOrCreate(WSModelInfo.java:248)

at com.sap.tc.webdynpro.model.webservice.gci.WSTypedModel.<init>(WSTypedModel.java:41)

at com.pf.model.PFModel.<init>(PFModel.java:49)

at com.pf.test.PFController.wdDoInit(PFController.java:99)

at com.pf.test.wdp.InternalPFController.wdDoInit(InternalPFController.java:147)

at com.sap.tc.webdynpro.progmodel.generation.DelegatingCustomController.doInit(DelegatingCustomController.java:73)

at com.sap.tc.webdynpro.progmodel.controller.Controller.initController(Controller.java:215)

at com.sap.tc.webdynpro.progmodel.controller.Controller.init(Controller.java:200)

at com.sap.tc.webdynpro.progmodel.controller.Component.getCustomControllerInternal(Component.java:449)

at com.sap.tc.webdynpro.progmodel.controller.Component.getController(Component.java:378)

at com.sap.tc.webdynpro.progmodel.generation.DelegatingComponent.getPublicInterface(DelegatingComponent.java:181)

at com.pf.test.wdp.InternalTestCompView.wdGetPFControllerController(InternalTestCompView.java:157)

at com.pf.test.TestCompView.onActionexecuteWS(TestCompView.java:145)

at com.pf.test.wdp.InternalTestCompView.wdInvokeEventHandler(InternalTestCompView.java:138)

at com.sap.tc.webdynpro.progmodel.generation.DelegatingView.invokeEventHandler(DelegatingView.java:87)

at com.sap.tc.webdynpro.progmodel.controller.Action.fire(Action.java:67)

at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.doHandleActionEvent(WindowPhaseModel.java:420)

at com.sap.tc.webdynpro.clientserver.window.WindowPhaseModel.processRequest(WindowPhaseModel.java:132)

at com.sap.tc.webdynpro.clientserver.window.WebDynproWindow.processRequest(WebDynproWindow.java:335)

at com.sap.tc.webdynpro.clientserver.cal.AbstractClient.executeTasks(AbstractClient.java:143)

at com.sap.tc.webdynpro.clientserver.session.ApplicationSession.doProcessing(ApplicationSession.java:321)

at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessingStandalone(ClientSession.java:713)

at com.sap.tc.webdynpro.clientserver.session.ClientSession.doApplicationProcessing(ClientSession.java:666)

at com.sap.tc.webdynpro.clientserver.session.ClientSession.doProcessing(ClientSession.java:250)

at com.sap.tc.webdynpro.clientserver.session.RequestManager.doProcessing(RequestManager.java:149)

at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doContent(DispatcherServlet.java:62)

at com.sap.tc.webdynpro.serverimpl.defaultimpl.DispatcherServlet.doPost(DispatcherServlet.java:53)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)

at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.runServlet(HttpHandlerImpl.java:401)

at com.sap.engine.services.servlets_jsp.server.HttpHandlerImpl.handleRequest(HttpHandlerImpl.java:266)

at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:386)

at com.sap.engine.services.httpserver.server.RequestAnalizer.startServlet(RequestAnalizer.java:364)

at com.sap.engine.services.httpserver.server.RequestAnalizer.invokeWebContainer(RequestAnalizer.java:1039)

at com.sap.engine.services.httpserver.server.RequestAnalizer.handle(RequestAnalizer.java:265)

at com.sap.engine.services.httpserver.server.Client.handle(Client.java:95)

at com.sap.engine.services.httpserver.server.Processor.request(Processor.java:175)

at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:33)

at com.sap.engine.core.cluster.impl6.session.MessageRunner.run(MessageRunner.java:41)

at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)

at java.security.AccessController.doPrivileged(AccessController.java:215)

at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:102)

at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:172)

Caused by: java.io.IOException: com.sap.engine.lib.xml.util.NestedException: Element passed is not WSDLD Document !

at com.sap.engine.services.webservices.espbase.query.WSDLReader.checkForException(WSDLReader.java:100)

at com.sap.engine.services.webservices.espbase.query.WSQueryImpl.initialize(WSQueryImpl.java:312)

at com.sap.engine.services.webservices.espbase.query.WSQueryImpl.findWSInterfaces(WSQueryImpl.java:151)

at com.sap.engine.services.webservices.server.management.discovery.ServiceDiscoveryImpl.getWSDLUrl(ServiceDiscoveryImpl.java:71)

at com.sap.engine.services.webservices.espbase.client.dynamic.GenericServiceFactory.createService(GenericServiceFactory.java:128)

at com.sap.tc.webdynpro.model.webservice.metadata.WSModelInfo.getOrCreateWsrService(WSModelInfo.java:429)

... 48 more

Thanks,

Regards,

Aditya Metukul

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

Aditya, I guess you have created a scenario in XI and made a webservice in XI and trying to call it using Webdynpro model. When we started using XI we did the same and got similar errors and exceptions and we didn't get any positive answer to solve this issue, so we have used following workaround, instead of calling XI webservice, we call the scenario directly using HttpConnection class. Following code sample might help:


	// You will get message structure for request messages and response messages from your message mappings

	String str = "<SOAP-ENV:Envelope xmlns:SOAP-ENV=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/encoding/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">"
		+ "<SOAP-ENV:Body>"
		+ "<ns0:MT_OS_OUT xmlns:ns0=\"urn:sample:dev/xi\">"
		+ "<order_number>123497</order_number>"			
		+ "<payid>32165487</payid>"
		+ "</ns0:MT_OS_OUT>"
		+ "</SOAP-ENV:Body>"
		+ "</SOAP-ENV:Envelope>";

	String urlString = "http://<yourservername:port>/sap/xi/adapter_plain?service=<SENDER_SERVICE_NAME>&namespace=<NAME_SPACE>&interface=<MESSAGE_INTERFACE_NAME>		
		
	URL url = new URL(urlString);
	URLConnection connect = url.openConnection();
	HttpURLConnection conn = (HttpURLConnection) connect;
	System.out.println(str);

	conn.setDoInput(true);
	conn.setUseCaches(false);
	conn.setDefaultUseCaches(false);
	conn.setDoOutput(true);
	conn.setRequestProperty("Authorization", "Basic " + encode("<USERNAME>:<PASSWORD>"));
	conn.setRequestProperty("SOAPAction", "http://sap.com/xi/WebService/soap1.1");
	conn.setRequestMethod("POST");

	String convalue = conn.toString();
	OutputStreamWriter out =	new OutputStreamWriter(conn.getOutputStream());
	out.write(str);

	out.flush();
	out.close();

	System.out.println(conn.getResponseCode() +"-->"+ conn.getResponseMessage());

	BufferedReader in =	new BufferedReader(	new InputStreamReader(conn.getInputStream()));
	while ((input = in.readLine()) != null) {
		response = response + input;
	}		
	in.close();

You can pass user id password in URL String but it will make it insecure, encoding and setting Authorization property will help you secure your user id and password. encode is not an standard function but uses standard functions to encrypt, here is the implementation:

	private String encode (String source) {
	  BASE64Encoder enc = new sun.misc.BASE64Encoder();
	  return(enc.encode(source.getBytes()));
	 }	

I hope this will help and don't forget to replace words in <XXXX>, according to your environment.

Jawed Ali

Former Member
0 Kudos

Hi Javed,

The solution given by you looks like a good workaround. But I feel if we manage to publish the webservice in inspection.wsil, the problem will be solved i think.

We are trying to explore how to publish the web service in inspection.wsil in XI SYSTEM.

The below URL is configured for XI Desitnation of Portal Visual Admin

http://max-sap23:50000/inspection.wsil

The above doesn't have the web service defination.

If you manage to publish the webservice in inspection.wsil, the problem will be solved i think.

Let me know if you have any idea on how to publish a webservice in inspection.wsil of XI system.

Thanks,

Regards,

Aditya Metukul

Former Member
0 Kudos

Hi Aditya,

Let me know if anyone has a solution for this situation. Actually I'm creating a Metadata destination for each WSDL and I'm really apreciate create only one WSIL. My actuall webdynpro project has a lot of services using SAP PI and ESA and configurate one by one metadata destination is expanding a lot of work.

The execution destination for me isn't problem, we are using basic authentication one system user to all application, one excecution destination for ESA (in SAP ERP/ECC) and other for Z Service in SAP PI. Only in providers prefix url in the destination the other part of url i'm getting from UDDI.

Regards,

Cleiton.

Former Member
0 Kudos

hi Aditya

did u get any success in publishing web service in inspection.wsil??? i am also stuck at same point..

can u share the solution for good of all??

Regards,

Deepak Salokhe