WSO2 - svnClientBundle.jar在不活动后进入休眠状态并且不恢复功能

时间:2014-10-30 20:46:20

标签: java svn wso2 wso2-am

我已经使用基于SVN的部署同步设置了分布式,集群的WSO2 API Manager 1.6.0环境。 SVN Jar将在启动时执行,并为SVN存储库添加任何新增功能。

TID: [0] [AM] [2014-10-30 14:52:57,790]  INFO {org.apache.synapse.rest.API} -  Initializing API: admin--TestAPI_Phil:v0.1 {org.apache.synapse.rest.API}
TID: [0] [AM] [2014-10-30 14:52:57,798]  INFO {org.apache.synapse.deployers.APIDeployer} -  API named 'admin--TestAPI_Phil:v0.1' has been deployed from file : /opt/wso2am-1.6.0/repository/deployment/server/synapse-configs/default/api/admin--TestAPI_Phil_v0.1.xml {org.apache.synapse.deployers.APIDeployer}

然而,几分钟后,svnClientBundle jar执行其工作,它会进入休眠状态,并且在更新时不会重新激活,即使Store / Publisher表示网关已更新:

TID: [0] [AM] [2014-10-30 15:21:06,965]  INFO {org.apache.synapse.rest.API} -  Initializing API: admin--TestAPI-2:v0.1 {org.apache.synapse.rest.API}
TID: [0] [AM] [2014-10-30 15:21:20,115]  INFO {org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask} -  Sent [SynchronizeRepositoryRequest{tenantId=-1234, tenantDomain='carbon.super', messageId=a3e77858-985d-4616-9b50-d6c9b47c0bf2}] {org.wso2.carbon.core.deployment.CarbonDeploymentSchedulerTask}

网关不会选择被推出的新API。我如何让WSO2意识到有更新或脚本使用svnClientBundle-1.0.0.jar定期检查SVN存储库?我应该制作一个BeanShell脚本吗?

带有完整日志输出的GitHub Gists位于:https://gist.github.com/predatorian3/024193918330af2140bb

我也跟着他的文件:
https://docs.wso2.com/display/AM140/SVN-Based+Deployment+Synchronizer
https://docs.wso2.com/display/CLUSTER420/SVN-based+Deployment+Synchronizer
https://docs.wso2.com/display/CLUSTER420/Clustering+API+Manager#ClusteringAPIManager-Installingandconfiguringthedatabases

基于SVN的Deployment Sync和Clustering API管理器的文档冲突并且说svnClientBundle-1.0.0.jar需要位于不同的位置。

1 个答案:

答案 0 :(得分:1)

正如您从文档[1]中看到的那样,必须始终将svnClientBundle-1.0.0.jar复制到<PRODUCT_HOME>/repository/components/dropins目录。

Deployment Synchronizer依赖于群集消息,因此您需要确保产品群集正常运行。如您所见,服务器将在服务器启动时检出工件。之后,只有在服务器收到群集消息时才会更新工件。

产品集群应与[2]中提到的域相同。我们建议使用wka会员制。

请先启动您的wka成员,然后启动其他服务器。您必须在wka成员的日志中看到“加入”消息。如果您没有看到,<AM_HOME>/repository/conf/axis2/axis2.xml中的群集配置一定有问题。请确保在群集配置中使用IP地址。

我在日志中看不到加入消息。请检查您的配置。

请参考文档以集群网关[3]。由于您没有使用ELB,因此您必须避免将ELB详细信息添加到axis2.xml。

例如,如果您有两个网关节点,则以下是axis2.xml中所需的配置

网关1:

<clustering class="org.wso2.carbon.core.clustering.hazelcast.HazelcastClusteringAgent" enable="true">
    <parameter name="membershipScheme">wka</parameter>
    <parameter name="domain">wso2.am.domain</parameter>
    <parameter name="localMemberHost">192.168.10.1</parameter>
    <parameter name="localMemberPort">4100</parameter>
    <parameter name="properties">
        <property name="backendServerURL" value="https://${hostName}:${httpsPort}/services/"/>
        <property name="mgtConsoleURL" value="https://${hostName}:${httpsPort}/"/>
    </parameter>
    <members>
    </members>
</clustering>

网关2:

<clustering class="org.wso2.carbon.core.clustering.hazelcast.HazelcastClusteringAgent" enable="true">
    <parameter name="membershipScheme">wka</parameter>
    <parameter name="domain">wso2.am.domain</parameter>
    <parameter name="localMemberHost">192.168.10.2</parameter>
    <parameter name="localMemberPort">4101</parameter>
    <parameter name="properties">
        <property name="backendServerURL" value="https://${hostName}:${httpsPort}/services/"/>
        <property name="mgtConsoleURL" value="https://${hostName}:${httpsPort}/"/>
    </parameter>
    <members>
        <member>
              <hostName>192.168.10.1</hostName>
              <port>4100</port>
        </member>
    </members>
</clustering>

我希望这会有所帮助。

[1] https://docs.wso2.com/display/CLUSTER420/SVN-based+Deployment+Synchronizer

[2] https://docs.wso2.com/display/CLUSTER420/Clustering+API+Manager#ClusteringAPIManager-ConfiguringtheAPIPublisherandAPIStoretobeonthesameclusterdomain

[3] https://docs.wso2.com/display/CLUSTER420/Clustering+the+Gateway