cancel
Showing results for 
Search instead for 
Did you mean: 

Error While generating Web Service Proxy using Web Service Action in MII 12

Former Member
0 Kudos

Hi All,

We are using the Web Service action block in BLS transaction to call a web service from an external legacy system. When we provide the WSDL in the action block configuration and click Next we can see the Port and Operation of the web service which we have selected and finally clicked on Finish. On clicking Finish it is giving an error "[Fatal Error] :-1:-1: Premature end of file." and no web service request/response structures are being generated.

The WSDL file is attached herwith. Please check and provide the solution. We are using MII 12.2 SP02 with latest patch.

An error message is also added to the NetWeaver log as below:

XmlProxy Error: Premature end of file.

[EXCEPTION]

org.xml.sax.SAXParseException: Premature end of file.

at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:264)

at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:292)

at com.sap.lhcommon.schema.XmlHelper.loadDocument(XmlHelper.java:38)

at com.sap.lhcommon.schema.XmlHelper.loadDocumentNS(XmlHelper.java:28)

at com.sap.lhcommon.webservice.SoapMessage.getExampleXmlAsBytes(SoapMessage.java:103)

at com.sap.xmii.servlet.XmlProxy.service(XmlProxy.java:204)

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

at com.sap.engine.services.servlets_jsp.server.runtime.FilterChainImpl.runServlet(FilterChainImpl.java:162)

at com.sap.engine.services.servlets_jsp.server.runtime.FilterChainImpl.doFilter(FilterChainImpl.java:81)

at com.sap.xmii.system.SecurityFilter.doFilter(SecurityFilter.java:96)

at com.sap.engine.services.servlets_jsp.server.runtime.FilterChainImpl.doFilter(FilterChainImpl.java:73)

at com.sap.xsrf.filter.XSRFProtectorFilter.doFilter(XSRFProtectorFilter.java:62)

at com.sap.engine.services.servlets_jsp.server.runtime.FilterChainImpl.doFilter(FilterChainImpl.java:73)

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

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

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

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

at com.sap.engine.services.servlets_jsp.filters.DSRWebContainerFilter.process(DSRWebContainerFilter.java:48)

at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)

at com.sap.engine.services.servlets_jsp.filters.ServletSelector.process(ServletSelector.java:84)

at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)

at com.sap.engine.services.servlets_jsp.filters.ApplicationSelector.process(ApplicationSelector.java:244)

at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)

at com.sap.engine.services.httpserver.filters.WebContainerInvoker.process(WebContainerInvoker.java:78)

at com.sap.engine.services.httpserver.chain.HostFilter.process(HostFilter.java:9)

at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)

at com.sap.engine.services.httpserver.filters.ResponseLogWriter.process(ResponseLogWriter.java:60)

at com.sap.engine.services.httpserver.chain.HostFilter.process(HostFilter.java:9)

at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)

at com.sap.engine.services.httpserver.filters.DefineHostFilter.process(DefineHostFilter.java:27)

at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)

at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)

at com.sap.engine.services.httpserver.filters.MonitoringFilter.process(MonitoringFilter.java:29)

at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)

at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)

at com.sap.engine.services.httpserver.filters.MemoryStatisticFilter.process(MemoryStatisticFilter.java:43)

at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)

at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)

at com.sap.engine.services.httpserver.filters.DSRHttpFilter.process(DSRHttpFilter.java:42)

at com.sap.engine.services.httpserver.chain.ServerFilter.process(ServerFilter.java:12)

at com.sap.engine.services.httpserver.chain.AbstractChain.process(AbstractChain.java:78)

at com.sap.engine.services.httpserver.server.Processor.chainedRequest(Processor.java:428)

at com.sap.engine.services.httpserver.server.Processor$FCAProcessorThread.process(Processor.java:247)

at com.sap.engine.services.httpserver.server.rcm.RequestProcessorThread.run(RequestProcessorThread.java:45)

at com.sap.engine.core.thread.execution.Executable.run(Executable.java:122)

at com.sap.engine.core.thread.execution.Executable.run(Executable.java:101)

at com.sap.engine.core.thread.execution.CentralExecutor$SingleThread.run(CentralExecutor.java:327)

The wsdl file is as follows:

<wsdl:definitions

targetNamespace="urn:cat.cis.mesassembly.server.service.pod"

xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

xmlns:tns="http://pod.service.server.mesassembly.cis.cat"

xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:apachesoap="http://xml.apache.org/xml-soap"

xmlns:intf="urn:cat.cis.mesassembly.server.service.pod"

xmlns:impl="urn:cat.cis.mesassembly.server.service.pod"

xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding"

>

<wsdl:types>

<schema targetNamespace="http://pod.service.server.mesassembly.cis.cat"

xmlns="http://www.w3.org/2001/XMLSchema">

<import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>

<complexType name="ProductionOrderDetailsInput">

<sequence>

<element name="detailsString" type="xsd:base64Binary"/>

<element name="productionOrderNumber" nillable ="true" type="xsd:string"/>

<element name="fullExplosionFlag" type="xsd:string"/>

</sequence>

</complexType>

<complexType name="ProductionOrderDetailsReceipt">

<sequence>

<element name="errorMessage" nillable="true" type="xsd:string"/>

<element name="valid" type="xsd:boolean"/>

</sequence>

</complexType>

</schema>

</wsdl:types>

<wsdl:message name="processOrderDetailsResponse">

<wsdl:part name="podReturn" type="tns:ProductionOrderDetailsReceipt" />

</wsdl:message>

<wsdl:message name="processOrderDetailsRequest">

<wsdl:part name="input" type="tns:ProductionOrderDetailsInput" />

</wsdl:message>

<wsdl:portType name="PodService">

<wsdl:operation name="ProcessOrderDetails" parameterOrder="input">

<wsdl:input message="impl:processOrderDetailsRequest"

name="processOrderDetailsRequest"/>

<wsdl:output message="impl:processOrderDetailsResponse"

name="processOrderDetailsResponse"/>

</wsdl:operation>

</wsdl:portType>

<wsdl:binding name="ProdOrderDetailsSoapBinding" type="impl:PodService">

<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

<wsdl:operation name="ProcessOrderDetails">

<soap:operation soapAction="http://pod.service.server.mesassembly.cis.cat/NewOperation"/>

<wsdl:input name="processOrderDetailsRequest">

<soap:body use="literal" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:cat.cis.mesassembly.server.service.pod" />

</wsdl:input>

<wsdl:output name="processOrderDetailsResponse">

<soap:body use="literal" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:cat.cis.mesassembly.server.service.pod" />

</wsdl:output>

</wsdl:operation>

</wsdl:binding>

<wsdl:service name="PodService_Service">

<wsdl:port binding="impl:ProdOrderDetailsSoapBinding" name="ProdOrderDetails">

<soap:address location="http:/localhost:8080/MESAssembly/services/ProdOrderDetails"/>

</wsdl:port>

</wsdl:service>

</wsdl:definitions>

Accepted Solutions (0)

Answers (1)

Answers (1)

Former Member
0 Kudos

The WSDL file is as follows:

<?xml version="1.0" encoding="UTF-8"?>

<wsdl:definitions

targetNamespace="urn:cat.cis.mesassembly.server.service.pod"

xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"

xmlns:tns="http://pod.service.server.mesassembly.cis.cat"

xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"

xmlns:xsd="http://www.w3.org/2001/XMLSchema"

xmlns:apachesoap="http://xml.apache.org/xml-soap"

xmlns:intf="urn:cat.cis.mesassembly.server.service.pod"

xmlns:impl="urn:cat.cis.mesassembly.server.service.pod"

xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding"

>

<wsdl:types>

<schema targetNamespace="http://pod.service.server.mesassembly.cis.cat"

xmlns="http://www.w3.org/2001/XMLSchema">

<import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>

<complexType name="ProductionOrderDetailsInput">

<sequence>

<element name="detailsString" type="xsd:base64Binary"/>

<element name="productionOrderNumber" nillable ="true" type="xsd:string"/>

<element name="fullExplosionFlag" type="xsd:string"/>

</sequence>

</complexType>

<complexType name="ProductionOrderDetailsReceipt">

<sequence>

<element name="errorMessage" nillable="true" type="xsd:string"/>

<element name="valid" type="xsd:boolean"/>

</sequence>

</complexType>

</schema>

</wsdl:types>

<wsdl:message name="processOrderDetailsResponse">

<wsdl:part name="podReturn" type="tns:ProductionOrderDetailsReceipt" />

</wsdl:message>

<wsdl:message name="processOrderDetailsRequest">

<wsdl:part name="input" type="tns:ProductionOrderDetailsInput" />

</wsdl:message>

<wsdl:portType name="PodService">

<wsdl:operation name="ProcessOrderDetails" parameterOrder="input">

<wsdl:input message="impl:processOrderDetailsRequest"

name="processOrderDetailsRequest"/>

<wsdl:output message="impl:processOrderDetailsResponse"

name="processOrderDetailsResponse"/>

</wsdl:operation>

</wsdl:portType>

<wsdl:binding name="ProdOrderDetailsSoapBinding" type="impl:PodService">

<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

<wsdl:operation name="ProcessOrderDetails">

<soap:operation soapAction="http://pod.service.server.mesassembly.cis.cat/NewOperation"/>

<wsdl:input name="processOrderDetailsRequest">

<soap:body use="literal" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:cat.cis.mesassembly.server.service.pod" />

</wsdl:input>

<wsdl:output name="processOrderDetailsResponse">

<soap:body use="literal" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:cat.cis.mesassembly.server.service.pod" />

</wsdl:output>

</wsdl:operation>

</wsdl:binding>

<wsdl:service name="PodService_Service">

<wsdl:port binding="impl:ProdOrderDetailsSoapBinding" name="ProdOrderDetails">

<soap:address location="http:/localhost:8080/MESAssembly/services/ProdOrderDetails"/>

</wsdl:port>

</wsdl:service>

</wsdl:definitions>

agentry_src
Active Contributor
0 Kudos

The HTTP Post action block can also be used for executing web service calls and sometimes works better (or is less restrictive) for that purpose. It might be worthwhile to try it in this other action block before going back to the Web Service one.

Regards,

Mike

Former Member
0 Kudos

Yes Mike,

You are right that HTTP Post is less restrictive, but our client insists on using Web Services and this is just a sample Webservice to start up with and we are facing this "Premature End of File" Issue in it. Does the wsdl itself has some issue or is it something at MII end?

Regards,

Satpreet Singh

agentry_src
Active Contributor
0 Kudos

Not to get into too much nitpicking, but you are only using the HTTP Post to invoke the webservice from MII. It is still a web service call regardless of the mechanism used to invoke it. Besides, the customer should not be making decisions at that level of detail.

Good luck,

Mike

Former Member
0 Kudos

Does the WSDL shows up in Internet Browser /SoapUI?