【问题标题】:wso2am deployment overrides database, API's are lostwso2am 部署覆盖数据库,API 丢失
【发布时间】:2017-05-11 09:55:05
【问题描述】:

我在 linux 系统上使用 wso2 api-manager 02.01.00。 Api-Manager 部署在文件夹 A。数据库 (h2) 部署在文件夹 B 中,文件夹 B 不在文件夹 A 中。/repository/conf/datasources/master-datasources.xml 中的数据源正确指向文件夹中的数据库B. 我是这样配置的,因为如果有部署,我想保留数据库。 (因为少数开发人员正在使用 API-Manager,他们不想丢失他们的数据。)但似乎,如果有 api-manager-depoyment,则 WSO2AM_DB.h2.db 是新创建的。我认为这是因为我查看了 DB-Size。我从 WSO2AM_DB.h2.db 的 1750KB 大小开始。我在管理器中发布了一个视图 API,大小增加到 2774KB。然后我做了一个部署,大小恢复到 1750KB。 效果是 API-Store/Publisher 说“还没有发布 APIS”。 但我可以在 Application Subscriptions 和 Carbon Resources 的 /_system/governance/apimgt/applicationdata/provider/admin 中看到 APIS。 我试图用this 强制建立一个新的索引,但它并没有改变任何东西。 我可以在任何地方配置,在开始时不应该创建/操作数据库吗?

同时我真的很想不解决这个问题。

也许你可以帮助我。

感谢您的宝贵时间。

【问题讨论】:

  • 部署由配置管理工具完成。对于每次安装,WSO 目录都会被删除并被新的更改/补丁覆盖(在文件夹 A 中)。

标签: database deployment overriding wso2-am


【解决方案1】:

WSO2 不建议在 H2 数据库上运行。需要使用生产型数据库如mysql、oracle等,H2仅供试用。

基本上,WSO2 服务器将数据存储在数据库中并使用文件系统。对于这种部署,您需要执行以下操作。

  1. 指向外部数据库。如果您将其用于演示目的,您仍然可以使用当前模式(H2 数据库)。

  2. 使用dep-sync。需要保留 WSO2_HOME/repository/deployment/server 位置下的内容。您可以使用基于 SVN 的 dep-sync 或 rsync。基本思想是,对于新部署,您需要拥有先前部署的数据。

  3. Solr 索引保存。如果系统中有成百上千个 API,索引将需要时间。为避免这种情况,您可以将 WSO2_HOME/solr 的内容复制到新部署中。

【讨论】:

  • 管理工具不支持您建议的方式。但我尝试了附近的方法。存储库/部署/服务器位置已移至文件夹 B。指向它的配置文件已编辑。如果我添加 APIS,我可以在 B 中的新位置找到它们,它们会显示在 UI 中。但问题是一样的。如果我进行部署,UI 中的 API 将被删除/未显示。但它们存在于存储库/部署/服务器/...和碳资源中。我还尝试强制建立新的索引和 solr 下创建新的文件,但这并不能解决问题。
  • 有时我可以取回我的 API,它们都显示在 UI 中,但我不知道是什么操作导致了这种情况。大多数情况下它们不会显示。
  • 顺便说一下,服务器启动抛出 OperationNotSupportedException [2017-05-18 14:35:20,492]-[DEBUG]-[org.springframework.jndi.JndiTemplate]-[]-[]- []-[]-[Could not close JNDI InitialContext] javax.naming.OperationNotSupportedException: Context is read only at org.apache.naming.NamingContext.checkWritable(NamingContext.java:967) 但我读到应该没问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-05
  • 2016-10-10
  • 2017-07-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多