Apache Camel CxfRsEndpoint performInvocation 设置触发调用两次
Apache Camel CxfRsEndpoint performInvocation setting triggers invocation twice
我有一个带 cxf 端点的最小骆驼路线(在 RouteBuilder#configure 方法中):
CxfRsComponent cxfComponent = new CxfRsComponent(context);
CxfRsEndpoint serviceEndpoint = new CxfRsEndpoint("http:/localhost/rest", cxfComponent);
serviceEndpoint.addResourceClass(PersonService.class);
serviceEndpoint.setPerformInvocation(true);
from(serviceEndpoint).log("this is irrelevant");
问题是资源 class 的方法被调用了两次:
假设有一个 "PersonService#post" 方法:
public Person post(Person p){
p.setId(p.getId() + "_PersonService#post");
return p;
}
它被调用了两次:断点被击中两次,负载响应
{
"id" : "id_from_client"
}
是
{
"id": "id_from_client_PersonService#post_PersonService#post"
}
这是预期的行为吗?如果是,是否有只执行该方法一次的设置?这对我来说似乎是一个错误。
Camel 版本是 2.16.2 (maven: org.apache.camel:camel-cxf-transport:2.16.2)
CXF 版本为 3.1.4 (org.apache.cxf:cxf-rt-transports-http-jetty:3.1.4)
FWIW,我更改了我的配置以添加 "synchronous=true" 选项以及 "performInvocation=true" 并且双重调用消失了。我不确定这是否是它应该的行为方式,但现在它似乎可以正常工作。
<camel:from uri="cxfrs:bean:rsServer performInvocation=true&synchronous=true" />
我有一个带 cxf 端点的最小骆驼路线(在 RouteBuilder#configure 方法中):
CxfRsComponent cxfComponent = new CxfRsComponent(context);
CxfRsEndpoint serviceEndpoint = new CxfRsEndpoint("http:/localhost/rest", cxfComponent);
serviceEndpoint.addResourceClass(PersonService.class);
serviceEndpoint.setPerformInvocation(true);
from(serviceEndpoint).log("this is irrelevant");
问题是资源 class 的方法被调用了两次:
假设有一个 "PersonService#post" 方法:
public Person post(Person p){
p.setId(p.getId() + "_PersonService#post");
return p;
}
它被调用了两次:断点被击中两次,负载响应
{
"id" : "id_from_client"
}
是
{
"id": "id_from_client_PersonService#post_PersonService#post"
}
这是预期的行为吗?如果是,是否有只执行该方法一次的设置?这对我来说似乎是一个错误。
Camel 版本是 2.16.2 (maven: org.apache.camel:camel-cxf-transport:2.16.2) CXF 版本为 3.1.4 (org.apache.cxf:cxf-rt-transports-http-jetty:3.1.4)
FWIW,我更改了我的配置以添加 "synchronous=true" 选项以及 "performInvocation=true" 并且双重调用消失了。我不确定这是否是它应该的行为方式,但现在它似乎可以正常工作。
<camel:from uri="cxfrs:bean:rsServer performInvocation=true&synchronous=true" />