【问题标题】:wso2 am: cannot import APIs from 1.9.0 or 1.10.0 to 1.10.0wso2 am:无法将 API 从 1.9.0 或 1.10.0 导入到 1.10.0
【发布时间】:2016-07-13 00:10:58
【问题描述】:

我从 wso2 am 1.9.0 导出了一个 API 包(.zip 格式),后来我使用这个包将 API 导入到 wso2 1.10.0 安装。它失败并显示以下错误消息,特别是“java.lang.NoSuchMethodError: org.wso2.carbon.context.CarbonContext.getCurrentContext()Lorg/wso2/carbon/context/CarbonContext;”: p>

==> .../repository/logs/wso2-apigw-errors.log <==

2016-07-12 04:51:59,823 [-] [http-nio-9443-exec-44] ERROR AbstractFaultChainInitiatorObserver 错误处理时发生错误,放弃!

org.apache.cxf.interceptor.Fault:org.wso2.carbon.context.CarbonContext.getCurrentContext()Lorg/wso2/carbon/context/CarbonContext;

在 org.apache.cxf.service.invoker.AbstractInvoker.createFault(AbstractInvoker.java:170) ...

在 org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58) ...

在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

在 org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

在 java.lang.Thread.run(Thread.java:745)

原因:java.lang.NoSuchMethodError: org.wso2.carbon.context.CarbonContext.getCurrentContext()Lorg/wso2/carbon/context/CarbonContext;

在 apim.restful.importexport.utils.AuthenticatorUtil.authorizeUser(AuthenticatorUtil.java:88)

在 apim.restful.importexport.APIService.importAPI(APIService.java:171)

在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)

在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

在 java.lang.reflect.Method.invoke(Method.java:606)

在 org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:188)

在 org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:104)

...还有 43 个

我正在使用 api-import-export-v0.9.1 从 wso2 am 1.9.0 到 1.10.0 导入/导出 API。

这里有什么问题?为什么“NoSuchMethodError: org.wso2.carbon.context.CarbonContext.getCurrentContext()”?我是否使用了正确的导入/导出工具/版本?除了 WSO2 网站中的之外,还有关于它的任何 WIKI/文档吗?提前感谢您的任何提示。

有人让 API 导入工作吗?我还从 wso2 am 1.10.0 导出 API 并导入到同一个 1.10.0 am 服务器,它失败并出现相同的“java.lang.NoSuchMethodError: org.wso2.carbon.context.CarbonContext.getCurrentContext ()Lorg/wso2/carbon/context/CarbonContext".

【问题讨论】:

    标签: wso2 wso2-am


    【解决方案1】:

    我们成功使用了这个工具和WSO2 API Cloud。您可以参考 Cloud 文档中的文档。 https://docs.wso2.com/display/APICloud/Migrate+your+APIs+between+Environments

    AFAIK,此工具不能用于在两个不同版本的 WSO2 API Manager 之间导入导出 API。我没有在doc 中看到这一点。即如果您从 1.9.1 导出,则无法将其导入到 1.10.0。我认为原因是api更改等。

    我寻找了一些显示版本不兼容的证据。但是,我找不到。

    【讨论】:

    • 感谢您的信息。实际上,我也按照docs.wso2.com/display/APICloud/… 的说明进行操作。太糟糕的 WSO2 文档没有提到不兼容,太糟糕了你不能将 API 从 1.9.0 迁移到 1.10.0,想想如果你有成千上万的 API 在生产中!对于企业应用程序来说,这确实是一种不可接受的做法。也许解决方案隐藏在他们的“高级”支持中,但这种策略可能会扼杀这个开源项目——评估 WSO2 的人在选择 WSO2 之前会三思而后行。
    • 导入/导出工具的目的是跨不同环境迁移api。即从您的开发到测试,从测试到生产等。因此,它希望在导出和导入的环境中使用相同的版本。我已经与团队核实了这一点。他们将更新文档。与此同时,他们也在努力支持跨不同版本的导入/导出。开源代码随着反馈而发展。我们不能指望一开始就有最终的解决方案:)
    • 此外,目前,跨不同版本迁移的答案是迁移工具/组件。我看到你也对此提出了一些担忧。但是,事实是,商业支持中没有隐藏任何东西。 WSO2 没有免费和商业版本。一切都包含在免费提供的发行版中。
    • 感谢阿米拉的更新。是否有一个文档清楚地描述了如何将 API 从 1.9.0 迁移到 1.10.0 的步骤,***由真实测试支持并且真的有效?当前的 wso2 am 1.10.0 迁移步骤无法从 1.9.0 迁移 API。我按照说明进行操作,但没有。我的看法是,当用户升级时,你必须有一个迁移路径来迁移数据。请将此作为首要任务之一。没有人会使用升级后不会迁移数据的产品,尤其是企业应用
    • 我知道升级的官方文档是docs.wso2.com/display/AM1100/…。我相信您的部署是单节点的。如果是这样,根据我的经验,升级应该不难。需要注意的一件重要事情是,最好有一个部署副本并在该环境中尝试升级。不幸的是,很难通过 stackoverflow 帮助解决这个问题。我知道升级有效,因为我和我的团队一起为wso2.com/cloud/api-cloud
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-04
    相关资源
    最近更新 更多