Pergunta

I have been trying to find out the exact reason for the error and this looks like a common error to many of them using Axis but i could not able to fix them with any thing which i was able to find on net.

I am able to see my service at

http://localhost:8080/axis2/services/listServices. when i hit the service epr on browser 

http://localhost:8080/axis2/services/AuthService, it is working fine also.

I tested the service using SoapUI and its working. But i am wondering why can't i see the wsdl when i click on the following link from the listServices page:

http://localhost:8080/axis2/services/AuthService?wsdl>. I get this error 

org.apache.axis2.AxisFault: Server does not have an epr for the wsdl ==>

https://localhost:8080/services/TestService?wsdl>
at org.apache.axis2.description.AxisService.getLocationURI(AxisService.java:1615)
at org.apache.axis2.description.AxisService.setPortAddress(AxisService.java:1498)
at org.apache.axis2.description.AxisService.printDefinitionObject(AxisService.java:1078)
at org.apache.axis2.description.AxisService.printUserWSDL(AxisService.java:1112)
at org.apache.axis2.description.AxisService.printWSDL(AxisService.java:1386)
at org.apache.axis2.transport.http.ListingAgent.handleWSDLRequest(ListingAgent.java:327)
at org.apache.axis2.transport.http.ListingAgent.processListService(ListingAgent.java:183)
at org.apache.axis2.transport.http.AxisServlet.doGet(AxisServlet.java:260)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at com.highradius.payrad.HeaderFilter.doFilter(HeaderFilter.java:182)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:947)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1009)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)

I tried protocal defined for EPR in original wsdl to match with the one defined in httpFrontendHostUrl parameter in axis2.xml which was not useful.

Thanks in Advance. Harika.

Foi útil?

Solução

After going through many articles i was able to fix the issue. There are very few sources available on net with relevant information and this is a very common issue.

I was able to fix this by setting the below attributes in services.xml file

"useOriginalwsdl" - false

"modifyUserWSDLPortAddress" - false

Outras dicas

I just had the same problem and resolved the issue. The problem was that the service did compare the hardcoded URL in the WSDL and the real URL under which the service was reachable. my WSDL definded the following:

<service name="MyService">
    <port name="MyServicePort" binding="so:MaServiceBinding">
        <soap:address location="http://my-service.de/webservice"/>
    </port>
</service>

but this URL did not match the actual URL that the service was using under localhost. Since in services.xml the option "useOriginalWsdl" was true the service did use this WSDL and was just telling me that I entered a wrong service endpoint. Changing the endpoint was resolving this issue.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top