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.







Reply via email to