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

Camel CXF:肥皂客户端超时

陶高扬
2023-03-14

我正在使用CamelCXFendpoint连接到我的soap服务器。我想为客户端的请求添加超时。我正在为此使用continuationTimeout选项。但它不起作用。请求超时,而不等待我配置的时间。

下面是我的endpoint配置。

<camel-cxf:cxfEndpoint id="tmAPIWSEndpoint" address="http://IN2NPDCEDB01:8088/webservices/services/TransportationManager"
            wsdlURL="/wsdl/TransportationManager.wsdl"
            endpointName="cis:TransportationManagerPort"
            serviceName="cis:TransportationManagerService"
            xmlns:cis="http://www.i2.com/cis"
            continuationTimeout="60000">
        <camel-cxf:properties>
            <entry key="dataFormat" value="MESSAGE"/>
            <entry key="username" value="XXX"/>
            <entry key="password" value="XXX"/>
        </camel-cxf:properties>
    </camel-cxf:cxfEndpoint>

共有2个答案

仇迪
2023-03-14

以下是以编程方式执行此操作的方法:

HelloWorld hello = (HelloWorld) context.getBean("helloService");
org.apache.cxf.endpoint.Client client = ClientProxy.getClient(hello);
HTTPConduit httpConduit = (HTTPConduit) client.getConduit();
HTTPClientPolicy httpClientPolicy = new HTTPClientPolicy();
httpClientPolicy.setConnectionTimeout(5000);
httpClientPolicy.setAllowChunking(false);
httpClientPolicy.setReceiveTimeout(5000);
httpConduit.setClient(httpClientPolicy);
System.out.println(hello.getHelloWorldAsString("Everyone"));

(我用的是思必驰)

<bean id="helloService"
    class="soap.timeout.demo.client.jaxws.HelloWorld"
    factory-bean="helloServiceFactory" factory-method="create"/>
<bean id="helloServiceFactory"
    class="org.apache.cxf.jaxws.JaxWsProxyFactoryBean">
    <property name="serviceClass" value="soap.timeout.demo.client.jaxws.HelloWorld"/>
    <property name="address" value="http://localhost:9999/ws/hello"/>
</bean>
陆栋
2023-03-14

你的问题不是很清楚,因为没有camel路线,所以我看不出你是在Camel内部创建SOAP服务,还是作为客户端从Camel调用SOAP服务。根据你发送的一点点信息,看起来你正在创建一个客户。

根据camel CXF文档

    < li>continuationTimeout:此选项用于设置CXF continuation timeout,当CXF服务器使用Jetty或Servlet传输时,默认情况下可在CxfConsumer中使用。(在Camel 2.14.0之前,CxfConsumer只是将continuation timeout设置为0,表示continuation suspend操作永不超时。)

请注意,这与 CXF 服务器设置有关,而不是与客户端设置相关。您正在使用此属性,但我不认为这是您要找的。

如果您参考 Apache CXF 客户端设置文档页面,您将在那里找到以下说明:

  • 连接超时:指定客户端在超时之前尝试建立连接的时间量(以毫秒为单位)。默认值为 30000(30 秒)。0 指定客户端将继续尝试无限期地打开连接。
  • 接收超时:指定客户端在超时之前等待响应的时间量(以毫秒为单位)。默认值为 60000。0 指定客户端将无限期等待。

如果你访问CXF留档页面,那里有很多例子。

 类似资料:
  • 我试图在JAVA中找到一个简单的(ha)SOAP示例,其中包含一个工作服务,但我发现的任何示例都不工作。 我已经试过这个例子中的这个,但是它不起作用,它要求我输入一个正斜杠,但是它已经输入了,没有任何反应。 有人知道我可以下载/请求和修改的SOAP示例链接吗? 谢谢你的帮助。

  • 我在一个独立的java应用程序中使用apache cxf client 3.2.2来调用一些soap Web服务。 试图在单向操作中获取soap故障代码和故障字符串,但没有成功。 我定义了一个自定义拦截器,但它永远不会到达handleMessage 定制拦截器的代码 } 我遇到的异常是MessageSenderEndingInterceptor(处于PREPARE\u SEND阶段)。 它正在抛出

  • 问题内容: 有什么方法可以使用soap-rpc Web服务,以便通过共享接口生成客户端?宁静的Web服务以这种方式进行操作,但是基于soap的情况又如何呢?您是否总是需要使用Axis或CXF之类的工具来生成存根和代理,还是有可以动态设置的东西? 谢谢。 编辑#1: 为了澄清,我正在寻找做这样的事情: 通用接口: 该公共接口已经可以用于创建服务器端组件。我的问题是: 客户端可以使用这种类型的通用接口

  • 我在CentOS机器上启用标题中提到的模块时遇到了一些问题。 百胜安装php-mCrypt/php-soc/php-mysql工作正常,并提到它们已经安装,重新启动Apache后,似乎它们没有启用。 例如,我无法定位mcrypt.so,运行php--ini会给出: 这是在我放置extension=mcrypt之后。所以在php中。伊尼。

  • 问题内容: 尝试指定自定义的肥皂标题。不知道如何填充SoapEnvelope.headerOut属性。 到目前为止我的代码? 这是标题WSDL提取… 问题答案: headerOut是您需要构建的Element []。 像这样 然后将其添加到数组中。

  • 我正在使用Apache HTTP客户端联系外部服务。这项服务可能需要几个小时(如果不是更长的话)才能产生响应。我尝试了一些不同的方法,但要么以套接字结束,要么以读取超时结束。我刚刚尝试使用RequestConfig将套接字和连接超时设置为0,根据文档,这应该是无限的,但请求总是在1小时后返回。有什么想法吗?