当前位置: 首页 > 知识库问答 >
问题:

Jboss熔断CXF请求/响应

包德业
2023-03-14

我试图在JBoss Fuse中为CXF-WS创建一个非常简单的服务,但我在响应消息上遇到了问题。请求被正确调用,spring-camel路由运行良好,但是响应总是包含一个空白的'SOAP body'标记。以下是我对该服务的操作:

  1. 使用wsdl2java.ext创建java对象模型
  2. 使用camel公开了CXF WS
  3. 调用camel路由中的处理器组件来创建响应消息。的消息类型与我仅使用生成的对象工厂创建接口时所期望的一样。
<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>
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)));
    }
}

如果我在这里遗漏了什么,请告诉我。

共有1个答案

钱照
2023-03-14

最后,这个问题被修复了,不幸的是,'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>
 类似资料:
  • 微服务里熔断是绝不可少的,而C#里最有名的就是Polly里,Uragano默认就采用了Polly。 启用熔断及全局策略配置 service.AddUragano(context.Configuration, builder => { builder.AddServer();

  • 熔断架构概述。 优先级路由架构概述。 可以为每个优先级的定义单独指定熔断设置。关于不同优先级如何使用,详见[配置指南]章节。 { "default": "{...}", "high": "{...}" } default (optional, object) 设置默认优先级的配置对象。 high (optional, object) 设置高优先级的配置对象。 优先级设置 { "max

  • 熔断架构概述 v1 API 文档 v2 API 文档 运行时配置 所有的断路设置都可以根据集群名称定义所有运行时配置。他们遵循以下命名规则circuit_breakers.<cluster_name>.<priority>.<setting>,其中cluster_name表示每个集群的名称,可以在Envoy配置文件中进行设置。也可用的运行时配置覆盖Envoy配置文件中设置的值。 返回 上一级

  • 熔断是分布式系统的重要组成部分。快速失败并尽快给下游施加压力,几乎总是好的。这是Envoy网格的主要优点之一,Envoy在网络级别实现强制断路限制,而不必独立配置和编写每个应用程序。Envoy支持各种类型的完全分布(不协调)的熔断: 群集最大连接数:Envoy将为上游群集中的所有主机建立的最大连接数。实际上,这仅适用于HTTP/1.1群集,因为HTTP/2使用到每个主机的单个连接。 群集最大挂起请

  • 问题内容: 我的jboss在尝试运行我的应用程序(春季mvc)时抛出了非描述性错误。它可以正常部署,并且此异常不会告诉我任何有用的信息,因此我真的不知道该怎么办。我无法调试,无法真正做任何事情: 从浏览器运行应用程序时,会发生以下情况: 问题答案: 当无法将参数分别强制转换为和时,就会抛出该错误。 这意味着两件事之一: 参数的类型错误(不太可能)或 某些过滤器使用的是这些类型的错误副本,并使用错误

  • 概述 除了流量控制以外,对调用链路中不稳定的资源进行熔断降级也是保障高可用的重要措施之一。一个服务常常会调用别的模块,可能是另外的一个远程服务、数据库,或者第三方 API 等。例如,支付的时候,可能需要远程调用银联提供的 API;查询某个商品的价格,可能需要进行数据库查询。然而,这个被依赖服务的稳定性是不能保证的。如果依赖的服务出现了不稳定的情况,请求的响应时间变长,那么调用服务的方法的响应时间也