WSO2 DSS中的缓存设置

时间:2012-03-29 08:03:18

标签: caching wso2 wso2dss

我们在DSS中部署了不同的服务,我们有不同的缓存方式:

  • 无缓存
  • 1小时缓存
  • 1天缓存

有没有办法在不使用管理控制台的情况下直接将此缓存设置到每个dbs文件?

另一种方法是通过配置文件设置这三个缓存,然后从dbs文件中引用它们。

我们正在寻找的解决方案是不使用管理控制台。

1 个答案:

答案 0 :(得分:1)

确实可以通过配置文件为数据服务配置缓存,而无需使用管理控制台。每个dataservice都部署为axis2服务的形式。因此,您可以使用通常用于配置与axis2服务相关的参数的“services.xml”文件,以及稍微修改的dataservices。也就是说,如果您的dataservice的名称是“TestDS”,那么您必须将您的services.xml文件命名为“TestDS_services.xml”并将其放在dataservices部署目录中,该目录位于“DSS_HOME / repository / deployment / server” /数据服务”。然后,您可以包含一个缓存策略,该策略将您自己的值作为上述配置文件中的参数。另外需要注意的是,您可以在数据服务的三个级别进行缓存,即每个服务组/每个服务/每个操作。

示例services.xml如下所示。

<serviceGroup>
    <service name="TestDS">
        <!--parameter name="ServiceObjectSupplier">org.apache.axis2.engine.DefaultObjectSupplier</parameter-->
    <Description>Enabling caching through sevices.xml</Description>

    <operation name="op1">
        <messageReceiver class="org.wso2.carbon.dataservices.core.DBInOutMessageReceiver"/>
    <module ref="wso2caching"/>
        <wsp:Policy
            wsu:Id="WSO2CachingPolicy"
            xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
            xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
        <wsch:CachingAssertion xmlns:wsch="http://www.wso2.org/ns/2007/06/commons/caching">
        <wsp:Policy>
            <wsp:All>
            <wsch:XMLIdentifier>org.wso2.caching.digest.DOMHASHGenerator</wsch:XMLIdentifier>
            <wsch:ExpireTime>70000</wsch:ExpireTime>
            <wsch:MaxCacheSize>1000</wsch:MaxCacheSize>
            <wsch:MaxMessageSize>1000</wsch:MaxMessageSize>
            </wsp:All>
        </wsp:Policy>
        </wsch:CachingAssertion>
        </wsp:Policy>
    </operation>

    <operation name="op2">
        <messageReceiver class="org.wso2.carbon.dataservices.core.DBInOutMessageReceiver"/>
    <module ref="wso2caching"/>
        <wsp:Policy
            wsu:Id="WSO2CachingPolicy"
            xmlns:wsp="http://schemas.xmlsoap.org/ws/2004/09/policy"
            xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
        <wsch:CachingAssertion xmlns:wsch="http://www.wso2.org/ns/2007/06/commons/caching">
        <wsp:Policy>
            <wsp:All>
            <wsch:XMLIdentifier>org.wso2.caching.digest.DOMHASHGenerator</wsch:XMLIdentifier>
            <wsch:ExpireTime>600000</wsch:ExpireTime>
            <wsch:MaxCacheSize>1000</wsch:MaxCacheSize>
            <wsch:MaxMessageSize>1000</wsch:MaxMessageSize>
            </wsp:All>
        </wsp:Policy>
        </wsch:CachingAssertion>
        </wsp:Policy>
    </operation>
        <operation name="op3">
        </operation>

    </service>
  </serviceGroup>

将“data_service_name”_services.xml文件放在上述目录中后,您必须从axis2.xml配置文件中注释掉以下条目,该文件位于“DSS_HOME / repository / conf”目录中。

<listener class="org.wso2.carbon.core.deployment.DeploymentInterceptor">

现在您可以继续部署了。重新启动服务器,您将能够使上述功能正常工作。

注意:您还希望了解到,我们即将推出的DSS版本已在DSS中对此空间进行了大量改进。 (DSS 3.0.0)。

此致 Prabath