首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >由StackOverflowException引起的DefaultCamelContext.start(),似乎是由骆驼进入无限循环引起的。

由StackOverflowException引起的DefaultCamelContext.start(),似乎是由骆驼进入无限循环引起的。
EN

Stack Overflow用户
提问于 2012-10-01 17:26:27
回答 2查看 1.6K关注 0票数 4

我已经查过这个了,还没有找到一个问题。我正在创建一个骆驼路径,它监视shapefiles文件夹(.shp)。下面的代码是实现骆驼路线的代码。

代码语言:javascript
运行
复制
final String filePath = settings.getSetting(GMTI_VOCAB.SHAPEFILE_PATH);
logger.debug("filePath={}", filePath);
final File file = new File(filePath);
if (file.mkdir())
{
  logger.warn("Shapefile path did not exist. Creating directory.");
}

logger.debug("Creating file route.");
context.addRoutes(new RouteBuilder()
{

    @Override
    public void configure() throws Exception
    {
        String path = String.format("file://%s?noop=true&include=.*shp$", file.getAbsolutePath());
        logger.debug("Route is: {}", path);
        from(path).bean(this, "process(${file:path})");
    }
 });
 logger.debug("Starting context");
 context.start();
 logger.info("Communicator started!");

当前,返回的"C:\Users\medderssc\gmti_intestor\shapefiles".只是"shapefile“,因此file.getAbsolutePath()返回了file.getAbsolutePath返回的结果路径是

代码语言:javascript
运行
复制
from("file://C:\Users\medderssc\gmti_intestor\shapefiles?noop=true&include=.*shp$").bean(this, "process(${file:path})");

context是一个DefaultCamelContext,camel是通过maven导入的,在POM中有以下条目:

代码语言:javascript
运行
复制
    <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-core</artifactId>
        <version>2.10.0</version>
    </dependency>

“通信器启动”永远不会输出,程序在此之前崩溃,告诉我在context.start()期间发生了错误。下面的堆栈跟踪显示了一个StackOverflowException。注意,堆栈本身重复了几次,这意味着camel本身正以某种方式进入某种无限递归循环。除了发布的代码之外,再也没有骆驼配置了。有人能帮忙吗?异常堆栈如下:

2012年10月1日上午9:33:50 AM com.saic.ogc.client.BaseClient createMessageFactory INFO:默认为内置消息工厂.2012年10月1日上午9:33:50 AM com.saic.ogc.client.BaseClient initTemplate INFO:设置拦截器!线程"main“java.lang.StackOverflowError中的异常 在org.apache.camel.model.RouteDefinition.toString(RouteDefinition.java:119) at java.lang.String.valueOf(未知来源) at java.lang.StringBuilder.append(未知来源) at java.util.AbstractCollection.toString(未知来源)在java.lang.String.valueOf(未知来源)在java.lang.StringBuilder.append(未知来源)在org.apache.camel.builder.RouteBuilder.toString(RouteBuilder.java:58) at org.apache.camel.builder.RouteBuilder.toString(RouteBuilder.java:58) at org。apache.camel.model.BeanDefinition.description(BeanDefinition.java:81) at org.apache.camel.model.BeanDefinition.toString(BeanDefinition.java:70) at java.lang.String.valueOf(未知来源) at java.lang.StringBuilder.append(未知来源)在java.util.AbstractCollection.toString(未知来源)在java.lang.String.valueOf(未知来源)在java.lang.StringBuilder.append(未知来源)在org.apache.camel.model.RouteDefinition.toString(RouteDefinition.java:119) at java.lang.String未知源(未知源)在org.apache.camel.model.RoutesDefinition.toString(RoutesDefinition.java:60) (未知源),org.apache.camel.builder.RouteBuilder.toString(RouteBuilder.java:58) (未知源),java.util.AbstractCollection.toString(未知源),java.lang.String.valueOf(未知源),java.lang.String.valueOf(未知源),java.lang.StringBuilder.append(未知源),.valueOf(未知源),.valueOf(未知源),java.lang.StringBuilder.append(未知源),java.util.AbstractCollection.toString(未知源),java.lang.String.valueOf(未知源),java.lang.String.valueOf(未知源),java.lang.StringBuilder.append(未知源),java.lang.StringBuilder.append(未知源),org.apache.camel.model.BeanDefinition.description(BeanDefinition.java:81) at org.apache.camel.model.BeanDefinition.description(BeanDefinition.java:81)(org.apache.camel.model)。BeanDefinition.toString(BeanDefinition.java:70) at java.lang.String.valueOf(未知来源) at java.lang.StringBuilder.append(未知来源) at java.util.AbstractCollection.toString(未知来源) at java.lang.String.valueOf(未知来源) at java.lang.StringBuilder.append(未知来源) at java.lang.StringBuilder.append at java.lang.String.valueOf(未知来源) at java.lang.StringBuilder.append(不明来源) at java.util.AbstractCollection。org.apache.camel.model.RoutesDefinition.toString(RoutesDefinition.java:60) at org.apache.camel.builder.RouteBuilder.toString(RouteBuilder.java:58) at org.apache.camel.model.BeanDefinition.description(BeanDefinition.java:81) at org.apache.camel.model.BeanDefinition.toString(BeanDefinition.java:70) at java.lang.String.valueOf(未知来源)在java。未知源(未知源)在org.apache.camel.model.RouteDefinition.toString(RouteDefinition.java:119) at lang.StringBuilder.append(未知源) at java.lang.StringBuilder.append (未知源)在java.util.AbstractCollection.toString(未知源)在java.lang.String.valueOf(未知源)在java.lang.StringBuilder.append(未知源)(未知源)在org.apache.camel.model.RoutesDefinition.toString(RoutesDefinition.java:60) at org.apache.camel.builder.RouteBuilder.toString(RouteBuilder.java:58) at org.apache.camel.model.BeanDefinition.description(BeanDefinition.java:81) at org.apache.camel.model.BeanDefinition.toString(BeanDefinition.java:70) at java.lang.String.valueOf(未知来源) at java.lang.StringBuilder.append(未知来源)在java.util.AbstractCollection.toString(未知来源)在java.lang.String.valueOf(未知来源)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-02 06:03:47

乍一看,问题似乎是您的.bean(this,...)指的是一个匿名类(new RouteBuilder()),它将尝试使用单独的类来运行configure() (因此是递归/sfo)...try.

票数 6
EN

Stack Overflow用户

发布于 2012-10-04 16:32:13

我也有过类似的问题。我有一个实现处理器的RouteBuilder (因为我太懒了)。结果这导致了无限的递归。解决方法是移动流程的实现(.)这是自己的课。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12678040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档