【发布时间】:2020-04-17 07:46:28
【问题描述】:
WSO2 API 管理器版本:2.6.0
此链接表明可以从 SOAP 端点生成 REST API: https://docs.wso2.com/display/AM260/Generate+REST+APIs+from+SOAP+Backends
但是当我选择 Generate REST APIs 选项时,WSO2 APIM 不会在 Design API 部分的 API Definitions 下生成操作,如中所述wso2 文档, 相反,此 API 部分显示带有 Test URI 按钮
的 WSDL URL当我点击“开始创建”按钮时,我可以看到一个 INFO 日志,上面写着
INFO - SOAPOperationBindingUtils 在 WSDL 中找不到 SOAP 操作
请就如何使用 SOAP wsdl 生成 REST API 提出建议
以下是用于生成 REST API 的 WSDL
<definitions xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:tns="http://www.r2services.com" xmlns:wsam="http://www.w3.org/2007/05/addressing/metadata" xmlns:wsp="http://www.w3.org/ns/ws-policy" xmlns:wsp1_2="http://schemas.xmlsoap.org/ws/2004/09/policy" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.r2services.com" name="CompanyService">
<types>
<xsd:schema>
<xsd:import namespace="http://www.r2services.com" schemaLocation="http://localhost:8080/r2ws/updateCompany?xsd=1" />
</xsd:schema>
</types>
<message name="updateCompany">
<part name="parameters" element="tns:updateCompany" />
</message>
<message name="updateCompanyResponse">
<part name="parameters" element="tns:updateCompanyResponse" />
</message>
<message name="R2Exception">
<part name="fault" element="tns:R2Exception" />
</message>
<message name="Exception">
<part name="fault" element="tns:Exception" />
</message>
<portType name="CompanyService">
<operation name="updateCompany">
<input wsam:Action="http://www.r2services.com/updateCompany" message="tns:updateCompany" />
<output wsam:Action="http://www.r2services.com/CompanyService/updateCompanyResponse" message="tns:updateCompanyResponse" />`enter code here`
<fault message="tns:R2Exception" name="R2Exception" wsam:Action="http://www.r2services.com/CompanyService/updateCompany/Fault/R2Exception" />
<fault message="tns:Exception" name="Exception" wsam:Action="http://www.r2services.com/CompanyService/updateCompany/Fault/Exception" />
</operation>
</portType>
<binding name="UpdateCompanyServicePortBinding" type="tns:CompanyService">
<soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
<operation name="updateCompany">
<soap12:operation soapAction="http://www.r2services.com/updateCompany" />
<input>
<soap12:body use="literal" />
</input>
<output>
<soap12:body use="literal" />
</output>
<fault name="R2Exception">
<soap12:fault name="R2Exception" use="literal" />
</fault>
<fault name="Exception">
<soap12:fault name="Exception" use="literal" />
</fault>
</operation>
</binding>
<service name="CompanyService">
<port name="UpdateCompanyServicePort" binding="tns:UpdateCompanyServicePortBinding">
<soap12:address location="http://localhost:8080/r2ws/updateCompany" />
</port>
</service>
</definitions>
点击开始创建按钮时,我也观察到错误
[2019-12-30 11:57:50,011] 信息 - SOAPOperationBindingUtils 在 WSDL 中找不到 SOAP 操作 [2019-12-30 11:57:50,115] 错误 - 添加:jag org.mozilla.javascript.EcmaError:TypeError:无法从 null 读取属性“长度”(/publisher/site/blocks/item-design/ajax/add .jag#227) 在 org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3687) 在 org.mozilla.javascript.ScriptRuntime.constructError(ScriptRuntime.java:3665) 在 org.mozilla.javascript.ScriptRuntime.typeError(ScriptRuntime.java:3693) 在 org.mozilla.javascript.ScriptRuntime.typeError2(ScriptRuntime.java:3712) 在 org.mozilla.javascript.ScriptRuntime.undefReadError(ScriptRuntime.java:3725) 在 org.mozilla.javascript.ScriptRuntime.getObjectProp(ScriptRuntime.java:1483) 在 org.jaggeryjs.rhino.publisher.site.blocks.item_design.ajax.c0._c_anonymous_5(/publisher/site/blocks/item-design/ajax/add.jag:227) 在 org.jaggeryjs.rhino.publisher.site.blocks.item_design.ajax.c0.call(/publisher/site/blocks/item-design/ajax/add.jag) 在 org.mozilla.javascript.optimizer.OptRuntime.call0(OptRuntime.java:23) 在 org.jaggeryjs.rhino.publisher.site.blocks.item_design.ajax.c0._c_script_0(/publisher/site/blocks/item-design/ajax/add.jag:54) 在 org.jaggeryjs.rhino.publisher.site.blocks.item_design.ajax.c0.call(/publisher/site/blocks/item-design/ajax/add.jag) 在 org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:394) 在 org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:3091) 在 org.jaggeryjs.rhino.publisher.site.blocks.item_design.ajax.c0.call(/publisher/site/blocks/item-design/ajax/add.jag) 在 org.jaggeryjs.rhino.publisher.site.blocks.item_design.ajax.c0.exec(/publisher/site/blocks/item-design/ajax/add.jag) 在 org.jaggeryjs.scriptengine.engine.RhinoEngine.execScript(RhinoEngine.java:567) 在 org.jaggeryjs.scriptengine.engine.RhinoEngine.exec(RhinoEngine.java:273) 在 org.jaggeryjs.jaggery.core.manager.WebAppManager.exec(WebAppManager.java:588) 在 org.jaggeryjs.jaggery.core.manager.WebAppManager.execute(WebAppManager.java:508) 在 org.jaggeryjs.jaggery.core.JaggeryServlet.doPost(JaggeryServlet.java:29) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:650) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:731) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 在 org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:743) 在 org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:485) 在 org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:377) 在 org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:337) 在 org.jaggeryjs.jaggery.core.JaggeryFilter.doFilter(JaggeryFilter.java:21) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 在 org.wso2.carbon.ui.filters.cache.ContentTypeBasedCachePreventionFilter.doFilter(ContentTypeBasedCachePreventionFilter.java:53) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 在 org.apache.catalina.filters.HttpHeaderSecurityFilter.doFilter(HttpHeaderSecurityFilter.java:124) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:498) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 在 org.wso2.carbon.identity.context.rewrite.valve.TenantContextRewriteValve.invoke(TenantContextRewriteValve.java:80) 在 org.wso2.carbon.identity.authz.valve.AuthorizationValve.invoke(AuthorizationValve.java:91) 在 org.wso2.carbon.identity.auth.valve.AuthenticationValve.invoke(AuthenticationValve.java:65) 在 org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.java:99) 在 org.wso2.carbon.tomcat.ext.valves.CarbonTomcatValve$1.invoke(CarbonTomcatValve.java:47) 在 org.wso2.carbon.webapp.mgt.TenantLazyLoaderValve.invoke(TenantLazyLoaderValve.java:57) 在 org.wso2.carbon.event.receiver.core.internal.tenantmgt.TenantLazyLoaderValve.invoke(TenantLazyLoaderValve.java:48) 在 org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:47) 在 org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:62) 在 org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:159) 在 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:962) 在 org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:57) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:445) 在 org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1115) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:637) 在 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1775) 在 org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1734) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) 在 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) 在 java.lang.Thread.run(Thread.java:748)
【问题讨论】:
-
仍在等待听到有关此问题的建议/帮助。请建议