camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Willem Jiang <willem.ji...@gmail.com>
Subject Re: CXFRS Routing in 2.2.0 does not behave like in 2.0.0
Date Mon, 29 Mar 2010 02:56:02 GMT
Hi Jejo,

httpClientAPI will use the message header with Exchange.HTTP_URI to 
generate the request URI, the proxyClient API will build up the request 
URI by checking the service class.

After digging the code for a while, I found the key of your issue, and 
did a quick fix[1] for it.

[1]http://svn.apache.org/viewvc?rev=928575&view=rev

jejmaster wrote:
> Hi Willem,
> 
> I think there is a problem with the httpClientAPI.  I was able to make it
> work when I set it to false and make it use the proxyClientAPI. 
> 
> What is the difference between the two API's? How come using the
> httpClientAPI seems that it doesn't create the URL correctly? 
> 
> Regards,
> Jejo
> 
> 
> 
> willem.jiang wrote:
>> Can you create a JIRA[1] with a small test case to reproduce the error?
>> I will dig this error when I get time today.
>> BTW, can you also check the log to see if the CXFRS server starts rightly
>> ?
>>
>> Willem
>>
>> jejmaster wrote:
>>> I already tried Camel 2.3-SNAPSHOT and the behavior is still the same as
>>> the
>>> version 2.2. Anyway, here's the logs whenever i tried to invoke the
>>> restRouter.
>>>
>>>
>>> org.apache.cxf.phase.PhaseInterceptorChain doDefaultLogging
>>> WARNING: Interceptor for {http://localhost:8080/services/rest}WebClient
>>> has
>>> thrown exception, unwinding now
>>> org.apache.cxf.interceptor.Fault: Could not send Message.
>>> .
>>> .
>>> .
>>> Caused by: java.io.IOException: IOException invoking
>>> http://localhost:8080/services/rest/restRouter/textServiceRest/getPersonById/1:
>>> HTTP response '404: Not Found'
>>>
>>>
>>> willem.jiang wrote:
>>>> Hi,
>>>>
>>>> Can you try to use the latest Camel 2.3.0-SNAPSHOT? I just remembered I 
>>>> fixed a bus related issue[1] last month.
>>>>
>>>> [1]https://issues.apache.org/activemq/browse/CAMEL-2465
>>>>
>>>> Willem
>>>>
>>>> jejmaster wrote:
>>>>> Okay so here's how i defined my applicationContext for camel routing.
>>>>> By
>>>>> the
>>>>> way, I am using both Soap And REST as router endpoints for this.
>>>>>
>>>>> applicationContext-camel.xml
>>>>>
>>>>>
>>>>> <beans xmlns="http://www.springframework.org/schema/beans"
>>>>> 	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>>> xmlns:jaxws="http://cxf.apache.org/jaxws"
>>>>> 	xmlns:cxf="http://camel.apache.org/schema/cxf"
>>>>> xmlns:util="http://www.springframework.org/schema/util"
>>>>> 	xmlns:jaxrs="http://cxf.apache.org/jaxrs"
>>>>> 	xsi:schemaLocation="
>>>>>             http://www.springframework.org/schema/beans
>>>>> http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
>>>>>             http://camel.apache.org/schema/cxf
>>>>> http://camel.apache.org/schema/cxf/camel-cxf.xsd
>>>>> 			http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
>>>>> 		    http://camel.apache.org/schema/spring
>>>>> http://camel.apache.org/schema/spring/camel-spring.xsd 
>>>>> 		    http://www.springframework.org/schema/util
>>>>> http://www.springframework.org/schema/util/spring-util-2.0.xsd
>>>>> 		    http://cxf.apache.org/jaxrs
>>>>> http://cxf.apache.org/schemas/jaxrs.xsd">
>>>>>
>>>>> 	<import resource="classpath:META-INF/cxf/cxf.xml" />
>>>>> 	<import resource="classpath:META-INF/cxf/cxf-extension-soap.xml"
/>
>>>>> 	<import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
>>>>> 	<import
>>>>> resource="classpath:META-INF/cxf/cxf-extension-jaxrs-binding.xml"
>>>>> />
>>>>> 	
>>>>> 	<!-- SOAP  -->
>>>>>
>>>>> 	<cxf:cxfEndpoint id="soapRouter" address="/soapRouter"
>>>>> 		serviceClass="com.project.service.TestManager"
>>>>> endpointName="s:TestManagerImplPort"
>>>>> 		serviceName="s:TestService" xmlns:s="http://impl.service.test.com/"

>>>>> />
>>>>>
>>>>> 	<cxf:cxfEndpoint id="soapEndpoint"
>>>>> 		address="http://localhost:8080/services/testService"
>>>>> wsdlURL="http://localhost:8080/services/testService?wsdl"
>>>>> 		serviceClass="com.project.service.TestManager"
>>>>> endpointName="s:TestManagerImplPort"
>>>>> 		serviceName="s:TestService" xmlns:s="http://impl.service.test.com/"
>>>>> />
>>>>> 	
>>>>> 	 <!-- REST -->
>>>>> 	<cxf:rsServer id="restRouter" address="/restRouter/"	
>>>>>       serviceClass="com.project.service.impl.TestManagerImpl"   />
>>>>>       
>>>>>     <cxf:rsClient id="restEndpoint"
>>>>> address="http://localhost:8080/services/rest"
>>>>>       serviceClass="com.project.service.impl.TestManagerImpl" />
>>>>> 	  
>>>>> 	
>>>>> 	
>>>>> 	<!-- CAMEL CONTEXT -->
>>>>> 	<camelContext id="camel"
>>>>> xmlns="http://camel.apache.org/schema/spring">
>>>>> 		<route>
>>>>> 			<from uri="cxf:bean:soapRouter" />
>>>>> 			<to uri="cxf:bean:soapEndpoint" />
>>>>> 		</route>
>>>>> 		
>>>>> 		<route>
>>>>> 			<from uri="cxfrs:bean:restRouter"/>
>>>>> 			<to uri="cxfrs:bean:restEndpoint"/>
>>>>> 		</route>
>>>>> 	</camelContext>
>>>>> </beans>
>>>>>
>>>>>
>>>>> Thanks.
>>>>>
>>>>>
>>>>>
>>>>> willem.jiang wrote:
>>>>>> You are using CXFServlet transport, can I have a look at your hole

>>>>>> application context configuration?
>>>>>> It may relate to CXF Bus configuration.
>>>>>>
>>>>>> Willem
>>>>>>
>>>>>> jejmaster wrote:
>>>>>>> Hello,
>>>>>>>
>>>>>>> Currently, I tried to upgrade Camel version from 2.0.0 to 2.2.0
and
>>>>>>> CXF
>>>>>>> version to 2.2.2 to 2.2.6. In 2.0.0, I have a CXFRS Endpoints
and
>>>>>>> Route
>>>>>>> as
>>>>>>> follows:
>>>>>>>
>>>>>>> <cxf:rsServer id="restRouter" address="/restRouter/"
>>>>>>> serviceClass="com.project.service.impl.ServiceManagerImpl" />
>>>>>>>
>>>>>>> <cxf:rsClient id="restEndpoint"
>>>>>>> address="http://localhost:8080/services/rest"
>>>>>>> serviceClass="com.project.service.impl.ServiceManagerImpl" />
>>>>>>>
>>>>>>> <route>
>>>>>>>      <from uri="cxfrs:bean:restRouter"/>
>>>>>>>      <to uri="cxfrs:bean:restEndpoint"/>
>>>>>>> </route>
>>>>>>>
>>>>>>>
>>>>>>> Upon invoking the restRouter, it causes an error which roots
to 404
>>>>>>> not
>>>>>>> found "http://localhost:8080/services/rest/restRouter/<Path...>".
It
>>>>>>> seems
>>>>>>> that the address restEndpoint Address is being appended by the
>>>>>>> restRouter's
>>>>>>> address. Thus, making the invocation fails. 
>>>>>>>
>>>>>>> I would like to know what should be the fix here. Is this a current
>>>>>>> limitation with camel 2.2.0 and CXF 2.2.6? 
>>>>>>>
>>>>>>> I have created an issue at
>>>>>>> https://issues.apache.org/activemq/browse/CAMEL-2575.
>>>>>>>
>>>>>>> Thanks in advance.
>>>>>>>
>>>>>>>
>>>>
>>
>>
> 


Mime
View raw message