如何配置FileEntityStoreService

时间:2018-01-13 12:24:37

标签: apache-zest

我正在尝试使用File EntityStore,因为切片为零,我在激活时遇到异常。

我认为配置存在问题,但我希望默认值为1。

我缩小到这个集会:

import org.apache.polygene.api.common.Visibility;
import org.apache.polygene.api.structure.Application;
import org.apache.polygene.bootstrap.Energy4Java;
import org.apache.polygene.entitystore.file.assembly.FileEntityStoreAssembler;
import org.apache.polygene.index.rdf.assembly.RdfNativeSesameStoreAssembler;
import org.apache.polygene.library.fileconfig.FileConfigurationAssembler;

public class FileStoreException {
    public static void main(String[] args) throws Exception {
        Energy4Java polygene = new Energy4Java();
        Application application = polygene.newApplication(factory -> factory.newApplicationAssembly(
                module -> {
                    new FileConfigurationAssembler()
                            .visibleIn(Visibility.application)
                            .assemble(module);

                    new FileEntityStoreAssembler()
                            .withConfig(module, Visibility.application)
                            .assemble(module);

                    new RdfNativeSesameStoreAssembler()
                            .withConfig(module, Visibility.application)
                            .assemble(module);

                    module.defaultServices();
                })
        );
        application.activate();
    }
}

stacktrace的结束:

Caused by: java.lang.ArithmeticException: / by zero
    at method "get" of FileEntityStoreService:FileEntityStoreService in module [Module 1] of layer [Layer 1].(:0)
    at org.apache.polygene.entitystore.file.FileEntityStoreMixin.getDataFile(FileEntityStoreMixin.java:277)
    at org.apache.polygene.entitystore.file.FileEntityStoreMixin.getDataFile(FileEntityStoreMixin.java:328)
    at org.apache.polygene.entitystore.file.FileEntityStoreMixin.get(FileEntityStoreMixin.java:138)
    at org.apache.polygene.spi.entitystore.helpers.JSONMapEntityStoreMixin.entityStateOf(JSONMapEntityStoreMixin.java:193)
    ... 14 more

我正在使用3.0.0版本,而且我在linux上。

1 个答案:

答案 0 :(得分:0)

添加FileConfigurationAssembler给我的错误印象是我的配置已完成。

我很难找到一个使用FileEntityStoreAssembler的程序集的工作示例,所以这里是一个:

Application application = polygene.newApplication(factory -> factory.newApplicationAssembly(
        module -> {
            ModuleAssembly config = module.layer().module("Config");
            config.defaultServices();
            new MemoryEntityStoreAssembler().assemble(config);

            config.entities(FileEntityStoreConfiguration.class);
            new FileEntityStoreAssembler()
                    .withConfig(config, Visibility.application)
                    .assemble(module);


            new RdfNativeSesameStoreAssembler()
                    .withConfig(config, Visibility.application)
                    .assemble(module);

            module.defaultServices();
        })
);

并配置它:

config.forMixin(FileEntityStoreConfiguration.class)
        .declareDefaults()
        .directory().set("/home/user/appdata/");