You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by tnk <ju...@gmail.com> on 2012/11/12 16:54:48 UTC

Problem with cxf web service invocation via nmr transport

Hello,

I have simple cxf endpoint (using NMR transport), configured as follows:

<cxf:cxfEndpoint id="camelCxfEndpoint"
		address="nmr:fatal:proc"
		wsdlURL="wsdl/hello.wsdl"
		serviceClass="test.HelloWorld"
		xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
	<cxf:properties>
		<entry key="dataFormat" value="POJO" />
		<entry key="loggingFeatureEnabled" value="true" />
	</cxf:properties>
</cxf:cxfEndpoint>

And the camel route implementing service:
<camel:route id="serviceRoute" errorHandlerRef="noErrorHandler">
	<camel:from uri="cxf:bean:camelCxfEndpoint" />
	<camel:process ref="fatalProcessor" /> (1)
</camel:route>
(1) FatalProcessor just throws Exception:
 public void process(Exchange exchange) throws Exception {
    	throw new Exception("oh no...");
}


I am trying to call web service via nmr using jaxws endpoint:
<jaxws:client id="client" 
	address="nmr:fatal:proc" 
	wsdlLocation="wsdl/hello.wsdl" 
	serviceClass="test.HelloWorld">
</jaxws:client>

Calling is simple:
 response = client.talk(new Talk());
 (types are generated from wsdl using cxf wsdl2java maven plugin)

>From the logs, I see, that soap fault is returned from cxf endpoint:

2012-11-12T17:36:39,001 | INFO  | p22364331-272424 | HelloWorld                      
| 167 - org.apache.cxf.bundle - 2.5.0.fuse-70-097 | Outbound Message
---------------------------
ID: 159
Response-Code: 500
Encoding: UTF-8
Content-Type: text/xml
Headers: {}
Payload: <soap:Envelope
xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><soap:Fault><faultcode>soap:Server</faultcode><faultstring>oh
no...</faultstring></soap:Fa
ult></soap:Body></soap:Envelope>

BUT no exception is returned from jaxws client invocation.
client.talk(new Talk()) service call ends up in nmr timeout and null is
returned (without exceptions)

Is it some kind of CXF NMR transport bug? When using http transport
everything works fine - org.apache.cxf.binding.soap.SoapFault is thrown from
jaxws client.




--
View this message in context: http://camel.465427.n5.nabble.com/Problem-with-cxf-web-service-invocation-via-nmr-transport-tp5722607.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: Problem with cxf web service invocation via nmr transport

Posted by tnk <ju...@gmail.com>.
Hi Willem,
I have enabled jaxws client logging feature and it doesn't receive any
response when soap fault without detail is returned from cxf service.
(when soap fault with detail is returned or successful response - everything
works fine)



--
View this message in context: http://camel.465427.n5.nabble.com/Problem-with-cxf-web-service-invocation-via-nmr-transport-tp5722607p5722636.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: Problem with cxf web service invocation via nmr transport

Posted by Willem jiang <wi...@gmail.com>.
Hi, 

Can you check the message that JAXWS client received by setting up the logging interceptor?
If the message is received, the client should throw the exception like the http transport does.

-- 
Willem Jiang

Red Hat, Inc.
FuseSource is now part of Red Hat
Web: http://www.fusesource.com | http://www.redhat.com
Blog: http://willemjiang.blogspot.com (http://willemjiang.blogspot.com/) (English)
          http://jnn.javaeye.com (http://jnn.javaeye.com/) (Chinese)
Twitter: willemjiang 
Weibo: willemjiang



On Monday, November 12, 2012 at 11:54 PM, tnk wrote:

> Hello,
> 
> I have simple cxf endpoint (using NMR transport), configured as follows:
> 
> <cxf:cxfEndpoint id="camelCxfEndpoint"
> address="nmr:fatal:proc"
> wsdlURL="wsdl/hello.wsdl"
> serviceClass="test.HelloWorld"
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
> <cxf:properties>
> <entry key="dataFormat" value="POJO" />
> <entry key="loggingFeatureEnabled" value="true" />
> </cxf:properties>
> </cxf:cxfEndpoint>
> 
> And the camel route implementing service:
> <camel:route id="serviceRoute" errorHandlerRef="noErrorHandler">
> <camel:from uri="cxf:bean:camelCxfEndpoint" />
> <camel:process ref="fatalProcessor" /> (1)
> </camel:route>
> (1) FatalProcessor just throws Exception:
> public void process(Exchange exchange) throws Exception {
> throw new Exception("oh no...");
> }
> 
> 
> I am trying to call web service via nmr using jaxws endpoint:
> <jaxws:client id="client" 
> address="nmr:fatal:proc" 
> wsdlLocation="wsdl/hello.wsdl" 
> serviceClass="test.HelloWorld">
> </jaxws:client>
> 
> Calling is simple:
> response = client.talk(new Talk());
> (types are generated from wsdl using cxf wsdl2java maven plugin)
> 
> From the logs, I see, that soap fault is returned from cxf endpoint:
> 
> 2012-11-12T17:36:39,001 | INFO | p22364331-272424 | HelloWorld 
> | 167 - org.apache.cxf.bundle - 2.5.0.fuse-70-097 | Outbound Message
> ---------------------------
> ID: 159
> Response-Code: 500
> Encoding: UTF-8
> Content-Type: text/xml
> Headers: {}
> Payload: <soap:Envelope
> xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><soap:Fault><faultcode>soap:Server</faultcode><faultstring>oh
> no...</faultstring></soap:Fa
> ult></soap:Body></soap:Envelope>
> 
> BUT no exception is returned from jaxws client invocation.
> client.talk(new Talk()) service call ends up in nmr timeout and null is
> returned (without exceptions)
> 
> Is it some kind of CXF NMR transport bug? When using http transport
> everything works fine - org.apache.cxf.binding.soap.SoapFault is thrown from
> jaxws client.
> 
> 
> 
> 
> --
> View this message in context: http://camel.465427.n5.nabble.com/Problem-with-cxf-web-service-invocation-via-nmr-transport-tp5722607.html
> Sent from the Camel - Users mailing list archive at Nabble.com (http://Nabble.com).