“内存中”是Mule中objectstore模块的默认配置吗?

时间:2015-02-02 23:43:32

标签: mule

我认为Mule中objectstore模块的默认配置是In-Memory(http://mulesoft.github.io/mule-module-objectstore/mule/objectstore-config.html#config

我在我的应用程序中配置了这样的对象库:

<objectstore:config name="sourceConfigStore" entryTtl="60000" ></objectstore:config>

我从java组件中引用商店,如下所示:

    ObjectStoreModule objectStore = (ObjectStoreModule) eventContext.getMuleContext().getRegistry().lookupObject("sourceConfigStore");

    objectStore.store((String)sourceConfig.get("url"), sourceConfig, true);

这大部分都有效,除了我今天发现这是在我收到以下错误时将文件写入磁盘:

Message               : Unable to create a canonical file for parent: C:\git-ucd\.mule\.mule\edus-esb-rss-aggregator\objectstore and child: DEFAULT_PARTITION\news.ucdavis.edu/xml/getnews.php?type=category&categories=General+Interest&format=rss.obj (org.mule.api.MuleRuntimeException)
Code                  : MULE_ERROR--2
--------------------------------------------------------------------------------
Exception stack is:
1. Invalid argument (java.io.IOException)
  java.io.WinNTFileSystem:-2 (null)
2. Unable to create a canonical file for parent: C:\git-ucd\.mule\.mule\edus-esb-rss-aggregator\objectstore and child: DEFAULT_PARTITION\news.ucdavis.edu/xml/getnews.php?type=category&categories=General+Interest&format=rss.obj (org.mule.api.MuleRuntimeException)
  org.mule.util.FileUtils:402 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/MuleRuntimeException.html)
3. Unable to create a canonical file for parent: C:\git-ucd\.mule\.mule\edus-esb-rss-aggregator\objectstore and child: DEFAULT_PARTITION\news.ucdavis.edu/xml/getnews.php?type=category&categories=General+Interest&format=rss.obj (org.mule.api.MuleRuntimeException) (org.mule.api.store.ObjectStoreException)
  org.mule.util.store.PartitionedPersistentObjectStore:278 (http://www.mulesoft.org/docs/site/current3/apidocs/org/mule/api/store/ObjectStoreException.html)
--------------------------------------------------------------------------------
Root Exception stack trace:
java.io.IOException: Invalid argument
    at java.io.WinNTFileSystem.canonicalize0(Native Method)
    at java.io.Win32FileSystem.canonicalize(Win32FileSystem.java:414)
    at java.io.File.getCanonicalPath(File.java:618)
    + 3 more (set debug level logging or '-Dmule.verbose.exceptions=true' for everything)

所以,我的问题是objectstore模块的默认行为是否实际上是使用内存存储。如果是这种情况,我想我的下一个问题是“我如何使用上面的配置和代码覆盖默认行为?”

1 个答案:

答案 0 :(得分:1)

默认实现在内存中。 如果您从Mule工作室运行您的应用程序,那么在默认情况下,MuleStudio中的情况并非如此,它会将事物保存到文件中。这就是为什么在常规选项卡中的运行配置中,您可以选择在每次运行中删除这些文件。

在任何情况下,强制内存的最简单方法是这样的:

<objectstore:all-keys config-ref="_defaultInMemoryObjectStore"/>