运行 spring 与 zookeeper 集成时出现异常
Exception while running spring integration with zookeeper
当我 运行宁 spring 将 SFTP 与 zookeeper 集成时:将文件元数据放入元数据存储时遇到问题。我在下面提到了代码。
下面是我的配置
<beans:bean id="compositeFilter"
class="org.springframework.integration.file.filters.ChainFileListFilter">
<beans:constructor-arg >
<beans:set>
<beans:bean
class="org.springframework.integration.sftp.filters.SftpRegexPatternFileListFilter">
<beans:constructor-arg value="^.*\.(dat|DAT)$" />
</beans:bean>
<beans:bean
class="org.springframework.integration.sftp.filters.SftpPersistentAcceptOnceFileListFilter">
<beans:constructor-arg name="store"
ref="metadataStore" />
<beans:constructor-arg value="filterprefix" />
</beans:bean>
</beans:set>
</beans:constructor-arg>
</beans:bean>
<beans:bean id="zookeeperClient"
class="org.springframework.integration.zookeeper.config.CuratorFrameworkFactoryBean">
<beans:constructor-arg value="${zookeeper.server.uri}" />
</beans:bean>
<beans:bean id="metadataStore"
class="org.springframework.integration.zookeeper.metadata.ZookeeperMetadataStore">
<beans:constructor-arg ref="zookeeperClient" />
<beans:property name="root" value="/metaDataStore" />
</beans:bean>
下面是我得到的异常跟踪。当我 运行 上面的程序出现以下错误时。
Caused by:
Caused by: java.lang.IllegalArgumentException: Invalid path string "/AtdFaureciaMetaDataStore/.." caused by relative paths not allowed @27
at org.apache.curator.utils.PathUtils.validatePath(PathUtils.java:102)
at org.apache.curator.utils.PathUtils.validatePath(PathUtils.java:37)
at org.apache.curator.utils.ZKPaths.fixForNamespace(ZKPaths.java:105)
at org.apache.curator.framework.imps.NamespaceImpl.fixForNamespace(NamespaceImpl.java:104)
at org.apache.curator.framework.imps.CuratorFrameworkImpl.fixForNamespace(CuratorFrameworkImpl.java:599)
at org.apache.curator.framework.imps.CreateBuilderImpl.forPath(CreateBuilderImpl.java:458)
at org.apache.curator.framework.imps.CreateBuilderImpl.forPath(CreateBuilderImpl.java:44)
at org.springframework.integration.zookeeper.metadata.ZookeeperMetadataStore.createNode(ZookeeperMetadataStore.java:257)
at org.springframework.integration.zookeeper.metadata.ZookeeperMetadataStore.putIfAbsent(ZookeeperMetadataStore.java:119)
考虑使用 ChainFileListFilter
而不是 CompositeFileListFilter
:
**
* The {@link CompositeFileListFilter} extension which chains the result
* of the previous filter to the next one. If a filter in the chain returns
* an empty list, the remaining filters are not invoked.
*
* @param <F> The type that will be filtered.
*
* @author Artem Bilan
* @author Gary Russell
*
* @since 4.3.7
*
*/
public class ChainFileListFilter<F> extends CompositeFileListFilter<F> {
它不会将丢弃的文件传递给链中的下一个过滤器。
另一方面,为 SftpPersistentAcceptOnceFileListFilter
考虑一些非空的 prefix
以避免相对路径错误。
当我 运行宁 spring 将 SFTP 与 zookeeper 集成时:将文件元数据放入元数据存储时遇到问题。我在下面提到了代码。 下面是我的配置
<beans:bean id="compositeFilter"
class="org.springframework.integration.file.filters.ChainFileListFilter">
<beans:constructor-arg >
<beans:set>
<beans:bean
class="org.springframework.integration.sftp.filters.SftpRegexPatternFileListFilter">
<beans:constructor-arg value="^.*\.(dat|DAT)$" />
</beans:bean>
<beans:bean
class="org.springframework.integration.sftp.filters.SftpPersistentAcceptOnceFileListFilter">
<beans:constructor-arg name="store"
ref="metadataStore" />
<beans:constructor-arg value="filterprefix" />
</beans:bean>
</beans:set>
</beans:constructor-arg>
</beans:bean>
<beans:bean id="zookeeperClient"
class="org.springframework.integration.zookeeper.config.CuratorFrameworkFactoryBean">
<beans:constructor-arg value="${zookeeper.server.uri}" />
</beans:bean>
<beans:bean id="metadataStore"
class="org.springframework.integration.zookeeper.metadata.ZookeeperMetadataStore">
<beans:constructor-arg ref="zookeeperClient" />
<beans:property name="root" value="/metaDataStore" />
</beans:bean>
下面是我得到的异常跟踪。当我 运行 上面的程序出现以下错误时。
Caused by:
Caused by: java.lang.IllegalArgumentException: Invalid path string "/AtdFaureciaMetaDataStore/.." caused by relative paths not allowed @27
at org.apache.curator.utils.PathUtils.validatePath(PathUtils.java:102)
at org.apache.curator.utils.PathUtils.validatePath(PathUtils.java:37)
at org.apache.curator.utils.ZKPaths.fixForNamespace(ZKPaths.java:105)
at org.apache.curator.framework.imps.NamespaceImpl.fixForNamespace(NamespaceImpl.java:104)
at org.apache.curator.framework.imps.CuratorFrameworkImpl.fixForNamespace(CuratorFrameworkImpl.java:599)
at org.apache.curator.framework.imps.CreateBuilderImpl.forPath(CreateBuilderImpl.java:458)
at org.apache.curator.framework.imps.CreateBuilderImpl.forPath(CreateBuilderImpl.java:44)
at org.springframework.integration.zookeeper.metadata.ZookeeperMetadataStore.createNode(ZookeeperMetadataStore.java:257)
at org.springframework.integration.zookeeper.metadata.ZookeeperMetadataStore.putIfAbsent(ZookeeperMetadataStore.java:119)
考虑使用 ChainFileListFilter
而不是 CompositeFileListFilter
:
**
* The {@link CompositeFileListFilter} extension which chains the result
* of the previous filter to the next one. If a filter in the chain returns
* an empty list, the remaining filters are not invoked.
*
* @param <F> The type that will be filtered.
*
* @author Artem Bilan
* @author Gary Russell
*
* @since 4.3.7
*
*/
public class ChainFileListFilter<F> extends CompositeFileListFilter<F> {
它不会将丢弃的文件传递给链中的下一个过滤器。
另一方面,为 SftpPersistentAcceptOnceFileListFilter
考虑一些非空的 prefix
以避免相对路径错误。