Hi,
My comment inline
On 2010-11-3, at 下午7:58, Felipe Fraga wrote:
Hello,
Thanks again for one more answer. Unfortunately I am still getting the
error at 60 seconds. I can post the fault later (not at the office
right now), althouth the SOAPFault generated has "Read Timeout Error"
as FaultDetail.
First: The provider endpoint configuration does not have timeout
property. Is this correct? I think this may be the problem.
Yes, this is correct.
You need set underlying transport conduit timeout for the cxf bc
provider endpoint, in my previous answer I already point you the
details link[1] for http conduit and [2]for jms conduit.(I guess
you're using http transport so you only need read link[1])
Second:
The target application is running CXF and I have already configured
the conduit there, it just never ocurred to me to also do it in the
binding component. Anyway it's configured now.
You target application is server(the term used in cxf transport for
server side is destination, but not conduit), so yo shouldn't
configuration conduit for your server
My new xbean.xml looks like this:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:cxfbc="http://servicemix.apache.org/cxfbc/1.0"
xmlns:sso="http://br.com.domain/sso"
xmlns:http-conf="http://cxf.apache.org/transports/http/configuration"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://servicemix.apache.org/cxfbc/1.0
http://servicemix.apache.org/schema/servicemix-cxfbc-2010.01.xsd
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://cxf.apache.org/transports/http/configuration
http://cxf.apache.org/schemas/configuration/http-conf.xsd">
<http-conf:conduit name="*.http-conduit">
<http-conf:client Connection="Keep-Alive"
AllowChunking="false" ReceiveTimeout="90000" ConnectionTimeout="90000"
/>
</http-conf:conduit>
<cxfbc:consumer wsdl="classpath:SingleSignOnService.wsdl"
locationURI="http://0.0.0.0:8092/sso/services/SingleSignOnService"
targetService="sso:SingleSignOnService"
targetInterface="sso:SingleSignOnService"
timeout="90"
endpoint="SingleSignOnExternalEndpoint" />
<cxfbc:provider wsdl="classpath:SingleSignOnService.wsdl"
locationURI="http://localhost:8080/sso/services/SingleSignOnService
"
interfaceName="sso:SingleSignOnService"
service="sso:SingleSignOnService"
endpoint="SingleSignOnInternalEndpoint" />
</beans>
This isn't correct, you should add busCfg attribute for your cxf bc
provider and put the http:conduit configuration in the cxf busCfg
file, just like I show you in the link[3] and [4] from my previous
answer.
Freeman
Thanks again,
Felipe Fraga
On Mon, Nov 1, 2010 at 11:15 PM, Freeman Fang
<[email protected]> wrote:
Hi,
Could you post the fault you get?
If the timeout occur between cxfbc:provider and external server,
you need
set timeout for cxfbc:provider also.
As cxfbc:provider play the role as a client, so you need set
timeout for the
underlying transport(depend on you're using http or jms transport)
client
(we call it conduit for transport client in cxf),
[1] is the link how to set it for http transport
[2] is the link how to set it for jms transport
Actually we have a testcase to demonstrate how to specify underlying
transport timeout for cxfbc provider, [3] and [4] are related
configurations.
[1]http://cxf.apache.org/docs/client-http-transport-including-ssl-support.html
[2]http://cxf.apache.org/docs/jms-transport.html
[3]https://svn.apache.org/repos/asf/servicemix/components/bindings/servicemix-cxf-bc/trunk/src/test/resources/org/apache/servicemix/cxfbc/jms_transport.xml
[4]https://svn.apache.org/repos/asf/servicemix/components/bindings/servicemix-cxf-bc/trunk/src/test/resources/org/apache/servicemix/cxfbc/jms_test_timeout.xml
Hope all these helps.
Freeman
On 2010-11-1, at 下午11:46, Felipe Fraga wrote:
Hello,
I am using Fuse 4.2.0, so servicemix 4.2.0, although I have already
tried with the 4.3.0.
I am experiencing what seems to me a timeout problem. At exactly 60
seconds, the client talking to the bus get a Fault, but the targeted
application is still processing.
If I bypass the bus, everything works fine.
I am using CXF Binding Component. Both consumer and provider. They
are
both defined in the same service unit as follow:
<cxfbc:consumer wsdl="classpath:ElementService.wsdl" timeout="12000"
locationURI="http://0.0.0.0:8092/san-n1/services/ElementService"
targetService="sann1:ElementService"
targetInterface="sann1:ElementService"
endpoint="SANN1ElementServiceExternalEndpoint" />
<cxfbc:provider wsdl="classpath:ElementService.wsdl"
locationURI="http://localhost:8080/san-n1/services/ElementService"
interfaceName="sann1:ElementService" service="sann1:ElementService"
endpoint="SANN1ElementServiceInternalEndpoint" />
As you can see I have set the timeout property to the consumer but I
still get the fault. Are there any other timeouts? NMR maybe? Does
the
timeout property work? Am I missing something?
Google didn't point me to the solution unfortunately.
Thanks in advance.
Felipe Fraga
--
Freeman Fang
------------------------
FuseSource: http://fusesource.com
blog: http://freemanfang.blogspot.com
twitter: http://twitter.com/freemanfang
Apache Servicemix:http://servicemix.apache.org
Apache Cxf: http://cxf.apache.org
Apache Karaf: http://karaf.apache.org
Apache Felix: http://felix.apache.org
--
Freeman Fang
------------------------
FuseSource: http://fusesource.com
blog: http://freemanfang.blogspot.com
twitter: http://twitter.com/freemanfang
Apache Servicemix:http://servicemix.apache.org
Apache Cxf: http://cxf.apache.org
Apache Karaf: http://karaf.apache.org
Apache Felix: http://felix.apache.org