小编Jan*_*anx的帖子

Apache Camel如何用于监控文件更改?

我想监视给定目录中的所有文件以进行更改,即更新的时间戳.这个用例对于使用文件组件的Camel来说似乎很自然,但我似乎找不到配置此行为的方法.

一个uri喜欢:

file:/some/directory
Run Code Online (Sandbox Code Playgroud)

将使用提供的目录中的文件,但将删除它们.

一个uri喜欢:

file:/some/directory?noop=true
Run Code Online (Sandbox Code Playgroud)

在添加每个文件或路由启动时消耗每个文件一次.

令人惊讶的是,没有一个选项

consumeOnChange=true
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的方法来监控文件更改而不是在使用后删除文件?

file apache-camel

14
推荐指数
1
解决办法
1万
查看次数

为什么特性中的具体函数实现被编译为桥接Scala 2.9.x中的方法而不是2.8.x中的方法?

在2.9.0之前的Scala版本中,traits中的具体函数实现被编译为常规方法.从2.9.x开始,它们被编译为桥接方法.我试图找到这种变化背后的原因,因为它对许多流行的Java框架(如Spring和Jersey)的用户产生了负面影响.

请考虑以下Scala代码:

trait Speaks {
  def speak() = {
    println("woof")
  }
}

class Dog extends Speaks {
  def wag() = {
    println("wag wag")
  }
}
Run Code Online (Sandbox Code Playgroud)

当使用scalac版本2.8.1编译Dog类并使用javap进行反编译时,"speak"和"wag"函数的结果如下所示:

public void speak();
    flags: ACC_PUBLIC
    Code:
      stack=1, locals=1, args_size=1
         0: aload_0       
         1: invokestatic  #11                 // Method Speaks$class.speak:(LSpeaks;)V
         4: return        
      LineNumberTable:
        line 7: 0

public void wag();
    flags: ACC_PUBLIC
    Code:
      stack=2, locals=1, args_size=1
         0: getstatic     #18                 // Field scala/Predef$.MODULE$:Lscala/Predef$;
         3: ldc           #20                 // String wag wag
         5: invokevirtual #24                 // Method scala/Predef$.println:(Ljava/lang/Object;)V
         8: return        
      LineNumberTable: …
Run Code Online (Sandbox Code Playgroud)

spring jvm scala jersey

11
推荐指数
1
解决办法
205
查看次数

使用lift-json将Json值提取为Map

lift-json的文档表明我应该能够调用'values'来将我当前的JObject结构作为一个vanilla Scala Map.这种方法对我不起作用,因为'values'的返回类型是json.Values而不是Map,如示例所示.我究竟做错了什么?是否需要隐式导入才能完成此转换?

scala> val json = parse("""{"k1":"v1","k2":"v2"}""")         
json: net.liftweb.json.package.JValue = JObject(List(JField(k1,JString(v1)), JField(k2,JString(v2))))

scala> json.values                                  
res4: json.Values = Map((k1,v1), (k2,v2))

scala> res4.get("k1")                                        
<console>:18: error: value get is not a member of json.Values
   res4.get("k1")
Run Code Online (Sandbox Code Playgroud)

json scala deserialization

6
推荐指数
1
解决办法
6010
查看次数

标签 统计

scala ×2

apache-camel ×1

deserialization ×1

file ×1

jersey ×1

json ×1

jvm ×1

spring ×1