【问题标题】:WSO2 API Manager /services/... throw a NullPointerExceptionWSO2 API 管理器 /services/... 抛出 NullPointerException
【发布时间】:2015-12-14 20:45:39
【问题描述】:

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

https://localhost:9443/services/weather/1.0.0/*?q=Amsterdam

我得到以下错误页面返回:

> 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 目录中的日志文件,但它们没有显示任何错误。

【问题讨论】:

    标签: wso2 wso2-am synapse


    【解决方案1】:

    您正在尝试从 servlet 端口 9443 访问服务。尝试使用 8280 port 。但是,APIM 中的 API 端点并不像您提到的那样。检查official WSO2 documentation中给出的示例

    【讨论】:

    • Enpoint 看起来类似于 [1] [1]localhost:8280/youtube/1.0.0/top_rated
    • 谢谢@vanji。我在 WSO2 tomcat 服务器前面使用 IIS 作为反向代理,所以我弄乱了 api-manager.xml 文件中的 <GatewayEndpoint> 值,因为它显示了商店中的本地 IP 地址。我恢复了原始值并添加了一个 IIS 重写规则,让我的外部 API 调用路由 (https://api.mydomain.com/...) 到内部 localhost:8243 地址(即 https 端口,而不是:8280 http 端口)和一个传出规则来转换响应内容中的 localhost:8243 URL 回https://api.mydomain.com/...
    • 查看 [1] 中的这篇文章以了解反向代理。 [1]jenananthan.wordpress.com/2015/05/12/…
    • 您的文章描述了 Nginx 反向代理背后的 Wso2 esb。我正在使用 Internet Information Server (IIS) 后面的 wso2 API Manager 作为反向代理,并让它正常工作。所以我真的不明白这篇文章如何为答案增加价值。
    猜你喜欢
    • 1970-01-01
    • 2017-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-03
    • 2019-10-28
    • 2016-05-20
    相关资源
    最近更新 更多