【问题标题】:Jboss Fuse CXF Request/ResponseJboss Fuse CXF 请求/响应
【发布时间】:2023-03-04 15:50:01
【问题描述】:

我正在尝试在 JBoss Fuse 中为 CXF-WS 创建一个非常简单的服务,但我遇到了响应消息的问题。请求被正确调用,spring-camel 路由工作正常,但响应始终包含一个空白的“SOAP Body”标签。这是我对服务所做的:

  1. 使用 wsdl2java.ext 创建 java 对象模型
  2. 使用骆驼暴露 CXF WS
  3. 调用骆驼路由中的处理器组件以创建响应消息。的消息类型与界面预期的一样,因为我仅使用生成的对象工厂创建它。

这是我创建的骆驼路线:

<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


【解决方案1】:

终于修复了,不幸的是'cxf-rt-transports-http-jetty'的版本与我的camel-cxf版本不兼容。一旦我更新了它,它就开始工作了。这是我的工作配置

   <dependency>
        <groupId>org.apache.camel</groupId>
        <artifactId>camel-cxf</artifactId>
        <version>2.15.1.redhat-620133</version>
    </dependency>
    <dependency>
        <groupId>org.apache.cxf</groupId>
        <artifactId>cxf-rt-transports-http-jetty</artifactId>
        <version> 3.0.6</version>
    </dependency>

【讨论】:

    猜你喜欢
    • 2013-08-22
    • 1970-01-01
    • 2014-10-25
    • 2018-10-22
    • 2014-02-22
    • 1970-01-01
    • 2014-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多