我有一个简单的驼峰路由,它接收传入消息,然后调用处理器,处理器将主体更改为Java对象,并通过CXF-SOAP将其发送回客户端。
@Component
public class DcToAspResponseRoute extends AspRouteBuilder {
@Autowired
DcToAspResponseProcessor processor;
@Override
public void configure() throws Exception {
final RouteDefinition routeDefinition = createRouteDefinition("{{asp.generic.route}}",
RouteId.DC_TO_ASP_RESPONSE_ROUTE.getRouteId());
routeDefinition
.process(processor)
}
}
处理器如下:
@Component
public class DcToAspResponseProcessor implements Processor {
@Autowired
// protected for unit testing
protected ObjectFactory objectFactory;
@Override
public void process(Exchange exchange) throws Exception {
Response response = objectFactory.createResponse();
response.setResponse(ResponseType.SUCCESS);
exchange.getIn().setBody(response, Response.class);
}
}
我的问题发生在网上:
exchange.getIn().setBody(response, Response.class);
当我尝试将上面实例化的POJO Java对象设置到主体上,而不是将其设置为exchange主体上的Java POJO对象时,POJO将转换为it XML格式,如下所示:
Exchange[Message: <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Response xmlns="http://xxx.yyy.zzz/2008">
<response>Success</response>
</Response>
]
由于这种转换,我相信当CXF试图从exchange中整理出SOAP响应时,它会意识到这是一个“无效”的主体,并忽略它,因此返回到空主体SOAP响应下面,而不是填充响应:
<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope">
<soap:Body/>
</soap:Envelope>
有人能帮我吗?我对想法迷路了!非常感谢您的帮助。
希望这将帮助任何人在未来。。。事实证明,它是一个导致这种行为的bug,已降级到CXF-v3.1.0,现在它可以正常工作了。
问题内容: 使用jersey jersey.java.net当URI中没有接受标头或.xml后缀时,如何将JSON设置为默认序列化而不是XML? 问题答案: 您可以在@Produces批注中为每种媒体类型分配质量索引。如果可以同时允许XML和JSON,则可以执行以下操作以使Jersey偏爱JSON:
我有一堆XML文档(源),需要将它们转换为具有不同结构(目标)的POJO。我的第一个明显的想法是使用JAXB和XSLT的组合。然而,在一些问题上,我不确定这是否合适。 我无法访问源的XSD。 我不需要目标作为XML结构,而只需要作为POJOs。 然后我想创建一个映射表,比如。 然而,这将导致大量“映射”代码,特别是在涉及复杂数据类型的情况下。 你对我如何实施这一点有什么建议吗?
问题内容: 是否有任何理由在属性文件上使用XML进行Log4J配置? 问题答案: 在此博客中,对这两种方法的优点进行了有趣的讨论。以下部分是该博客的引文: 可以通过属性文件或XML文件定义属性。Log4j查找名为log4j.xml的文件,然后查找名为log4j.properties的文件。 两者都必须放在src文件夹中 。 该属性文件比XML文件更详细。XML还要求将log4j.dtd放置在源文件
问题内容: 我们都知道Java在(被认为是“常用” )范围内为数字缓存(以及一些其他类型)。 缓存的设计如下: 我知道可以通过为JVM提供参数来扩展值: 我不明白的是为什么我们不允许覆盖该值? 请注意,我并不是想找到一种解决方法,而是要理解为什么出于某些晦涩的原因而不允许这样做。 问题答案: 发现对此已经存在未解决的RFP。 乔·达西(Joe Darcy)对这个问题发表了评论: 可以想象也可以缓存
如何为取自变量而不是文件的log4j2应用xml配置?
问题内容: 我正在一个JavaScript项目上,只是想知道为什么对象实例不继承和其他方法,而不必调用超类(superobject?)方法。 我看过了MDN文档,实际上有“非标准”属性方法。 但这些已被弃用。为什么要转向方法? 在我看来,类似的东西比更好。对于其他一些Object方法,我也会说同样的话。 问题答案: 这是为了避免发生冲突-通常情况下,对象的问题不具有所需值的属性。 JS中的对象通常