WSO2 API管理器/服务/。。。抛出NullPointerException

WSO2 API管理器/服务/。。。抛出NullPointerException,wso2,wso2-am,synapse,Wso2,Wso2 Am,Synapse,我在Windows 2012 R2服务器上运行WSO2 API管理器,所有仪表板URL都类似https://localhost:9443/store,https://localhost:9443/carbon,https://localhost:9443/publisher工作正常。但当我配置和部署(在carbon.super租户中)示例WeatherAPI web服务并尝试通过/services/…URL访问它时,即: https://localhost:9443/services/weath

我在Windows 2012 R2服务器上运行WSO2 API管理器,所有仪表板URL都类似
https://localhost:9443/store
https://localhost:9443/carbon
https://localhost:9443/publisher
工作正常。但当我配置和部署(在carbon.super租户中)示例WeatherAPI web服务并尝试通过
/services/…
URL访问它时,即:

https://localhost:9443/services/weather/1.0.0/*q=阿姆斯特丹

我返回了以下错误页面:

> HTTP Status 500 - 
> 
> 
> type Exception report
> 
> message 
> 
> description The server encountered an internal error that prevented it
> from fulfilling this request.
> 
> exception  org.apache.axis2.AxisFault
>   org.apache.axis2.AxisFault.makeFault(AxisFault.java:430)
>   org.wso2.carbon.core.transports.CarbonServlet.doGet(CarbonServlet.java:155)
>   javax.servlet.http.HttpServlet.service(HttpServlet.java:735)
>   javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
>   org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:61)
>   org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:128)
>   org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:68)
>   javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
>   org.wso2.carbon.tomcat.ext.servlet.DelegationServlet.service(DelegationServlet.java:68)
>   org.wso2.carbon.tomcat.ext.filter.CharacterSetFilter.doFilter(CharacterSetFilter.java:61)
> 
> 
> 
> root cause  java.lang.NullPointerException
>   org.apache.synapse.rest.RESTUtils.getFullRequestPath(RESTUtils.java:80)
>   org.apache.synapse.rest.API.canProcess(API.java:179)
>   org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:79)
>   org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:64)
>   org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:220)
>   org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:83)
>   org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
>   org.apache.axis2.transport.http.util.RESTUtil.invokeAxisEngine(RESTUtil.java:144)
>   org.apache.axis2.transport.http.util.RESTUtil.processURLRequest(RESTUtil.java:139)
>   org.apache.axis2.transport.http.AxisServlet$RestRequestProcessor.processURLRequest(AxisServlet.java:837)
>   org.wso2.carbon.core.transports.CarbonServlet.handleRestRequest(CarbonServlet.java:303)
>   org.wso2.carbon.core.transports.CarbonServlet.doGet(CarbonServlet.java:152)
>   javax.servlet.http.HttpServlet.service(HttpServlet.java:735)
>   javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
>   org.eclipse.equinox.http.servlet.internal.ServletRegistration.service(ServletRegistration.java:61)
>   org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:128)
>   org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:68)
>   javax.servlet.http.HttpServlet.service(HttpServlet.java:848)
>   org.wso2.carbon.tomcat.ext.servlet.DelegationServlet.service(DelegationServlet.java:68)
>   org.wso2.carbon.tomcat.ext.filter.CharacterSetFilter.doFilter(CharacterSetFilter.java:61)
当我在租户中创建自己的web服务并将其部署时,会出现相同的错误。所以我可能误解了一些东西,但不知道该去哪里找。
/services/…
下面的所有路径似乎都返回此错误页。我检查了
[WSO2]/repository/logs
目录中的日志文件,但它们没有显示任何错误。

您正在尝试从servlet端口9443访问服务。试试这个。但是,APIM中API的端点与您提到的不同。检查

中给出的示例,Enpoint看起来类似于[1][1]Thanke@vanji。我在WSO2 tomcat服务器前面使用IIS作为反向代理,因此我在
api manager.xml
文件中乱动了
值,因为它显示了存储中的本地IP地址。我还原了原始值并添加了IIS重写规则,以允许外部API调用路由(
https://api.mydomain.com/...
)到内部localhost:8243地址(即https端口,而不是:8280 http端口)以及将响应内容中的localhost:8243 URL转换回
https://api.mydomain.com/...
查看[1]中的这篇文章,了解反向代理。[1] 您的文章描述了Nginx反向代理背后的wso2esb。我正在使用互联网信息服务器(IIS)后面的wso2 API管理器作为反向代理,并使其正常工作。所以我真的不明白这篇文章是如何给答案增加价值的。