【发布时间】:2023-03-04 15:50:01
【问题描述】:
我正在尝试在 JBoss Fuse 中为 CXF-WS 创建一个非常简单的服务,但我遇到了响应消息的问题。请求被正确调用,spring-camel 路由工作正常,但响应始终包含一个空白的“SOAP Body”标签。这是我对服务所做的:
- 使用 wsdl2java.ext 创建 java 对象模型
- 使用骆驼暴露 CXF WS
- 调用骆驼路由中的处理器组件以创建响应消息。的消息类型与界面预期的一样,因为我仅使用生成的对象工厂创建它。
这是我创建的骆驼路线:
<camelContext xmlns="http://camel.apache.org/schema/spring" >
<!-- Define the CXF End-point -->
<endpoint id="bookMartEndpoint" uri="cxf:http://localhost:8200/OnlineBookMart">
<property key="serviceClass" value="org.jbossfusesamples.bookmart.BookMart" />
</endpoint>
<!-- Define the entity for bookmart set Query -->
<endpoint uri="sql:select * from bookmart" id="getBookQuery" >
<property key="dataSource" value="datasourceBean"/>
</endpoint>
<!-- Define the camel route -->
<route id="WSGateway" >
<from ref="bookMartEndpoint" />
<recipientList>
<simple>direct:${header.operationName}</simple>
</recipientList>
</route>
<!-- Implement the getBook operation -->
<route id="getBookRoute" >
<from uri="direct:getBook"/>
<log message="Route : direct -> getBook" />
<process ref="getBookProcessor" />
<log message="${body}" />
</route>
</camelContext>
这是为处理响应而创建的“getBookProcessor”组件
public class getBookProcessor implements Processor {
//create a logger instance
private static final Logger LOG = LoggerFactory.getLogger(getBookProcessor.class);
@Override
public void process(Exchange exchange) throws Exception {
LOG.info( "Processing getBook interface" );
//create a response element
BookType response = new BookType( );
response.setAuthor("Dummy");
response.setTitle("Dummy");
response.setIsbn("Dummy");
org.jbossfusesamples.book.ObjectFactory oFactory = new ObjectFactory( );
//create the response object from the object factory
exchange.getOut().setBody( (oFactory.createGetBookResponse(response)));
}
}
如果我在这里遗漏了什么,请告诉我。
【问题讨论】:
-
这个终于修好了,可惜'cxf-rt-transports-http-jetty'的版本和我的camel-cxf版本不兼容。一旦我更新了它,它就开始工作了。这是我的工作配置
标签: jboss apache-camel jbossfuse