public class MyInterceptor extends AbstractSoapInterceptor {
//..... some variables
@Override
public void handleMessage(SoapMessage message) throws Fault {
//..some logic and then setting a variable
message.getExchange().put("Foo", "Bar");
}
}
...下面的类是骆驼处理器,它最终被调用:
public class MyCamelProcessor implements Processor {
@Override
public void process(Exchange exchange) throws Exception {
//how can I read information from CXF Intercptor here?
//how can I read "Foo" value?
}
}
我知道Apache CXF使用的Exchange类与Camel使用的Exchange不同,但是这两种集成技术之间应该有一种传递信息的方式?
最后,我解决了它如何遵循:
在我的上下文中,我有一个带有camel-cxf组件的使用者服务,它被路由到处理器。
Camel中的CxfEndpoint类有一个调用SetInInterceptors的方法:
public void setInInterceptors(List<org.apache.cxf.interceptor.Interceptor<? extends org.apache.cxf.message.Message>> interceptors)
因此,如果我们在bean定义文件中定义下一个:
...
<cxf:cxfEndpoint id="consumerId"
address="/myservice"
serviceClass="com.example.service.MyServiceSEI">
<cxf:inInterceptors>
<ref bean="myInterceptor"/>
</cxf:inInterceptors>
</cxf:cxfEndpoint>
<bean id="myInterceptor" class="com.example.interceptors.MyInterceptor" />
然后,在我们的自定义拦截器中,我们可以设置映射中的任何变量
...
import org.apache.cxf.binding.soap.SoapMessage;
import org.apache.cxf.binding.soap.interceptor.AbstractSoapInterceptor;
...
public class MyInterceptor extends AbstractSoapInterceptor {
public MyInterceptor() {
super(Phase.RECEIVE);
}
@Override
public void handleMessage(SoapMessage message) throws Fault {
//..some logic and then setting a variable
message.getExchange().put("Foo", "Bar");
}
}
最后,我们可以使用org.apache.cxf.message.Message类获取处理器中的变量,这与Exchange.getin()方法使用的org.apache.camel.Message不同
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.cxf.message.Message;
import org.apache.camel.component.cxf.common.message.CxfConstants;
public class MyCamelProcessor implements Processor {
@Override
public void process(Exchange exchange) throws Exception {
//how can I read information from CXF Intercptor here?
//how can I read "Foo" value?
Message cxfMessage = exchange.getIn().getHeader(CxfConstants.CAMEL_CXF_MESSAGE, Message.class);
String foo = (String) cxfMessage.getExchange().get("Foo");
// read message from camel context
org.apache.camel.Message inMessage = exchange.getIn();
...
}
}
问题内容: 我已经编写了这个jQuery ajax方法,在下面调用了webmethod。除了作为用户对象的参数具有空字段之外,调用进行得很好。我在调试时可以在firebug中看到值,但它们无法通过webmethod中的User对象参数 我试图从jQuery方法传递给Webmethod的两个值是“ UserID”(Guid)和“ About”(字符串),它们都是User类的属性,但在服务端,是Use
我搜索如何将springboot参数传递给spring批处理作业的解决方案,然后在我的Writer中获得参数的值。当我在writer中加载键时,键仍然为空。有人能帮帮我吗? 下面是我的批处理代码配置 还有我的作家 }
我试图将一个参数从命令行传递到java类。我关注了这篇文章:http://gradle.1045684.n5.nabble.com/gradle-application-plugin-question-td5539555.html,但是代码对我来说不起作用(也许它不适合JavaExec?)。以下是我所尝试的: 上面硬编码的args值的输出是: 任何关于如何将命令行参数传递给gradle的指针都很感
问题内容: 我想将值传递给javascript。如果可能的话,我该怎么办?如何在后备bean中接收它们? 问题答案:
问题内容: 我们已经设置了一些参数来在Jenkins中执行构建(使用简单的“参数化构建”设置)。作业被设置为Maven测试。有没有办法以编程方式将这些参数传递到我们的Java代码中?我们需要基于通过Jenkins设置的参数来执行某些更新功能。 问题答案: 是的,您可以通过Maven执行将Jenkins参数传递给Java代码,如下所示: 请注意, $ JOB_PARAM_1 将捕获Jenkins上设
问题内容: 我有3个版本:A-是控制流量的主版本B-注释者版本C- 将在BI要向A添加String参数后执行,因此用户将手动输入一些String,但我不确定如何我可以将此参数传递给B吗?可以说这是我的构建流程: build(“ B”)build(“ C”)我不知道如何将参数传递到B,我应该从构建流程还是从B构建配置中做到这一点,我该怎么做。 预先感谢亚历克斯 问题答案: 像这样: https://