After went through the example, I got the same conclusion as Christian did.

The issue was caused by CXF Bus can't load the http conduit rightly, you may let cxf bus to load it explicately by using spring configure that we showed to you, or you create the bus yourself.

Within Camel 2.2 we introduced a SpringBusFactoryBean[1] to avoid the classload issue that you may meet in OSGi environment.

Please check it out, and let me know if it can help you.

[1] https://cwiki.apache.org/CAMEL/how-to-avoid-importing-bunch-of-cxf-packages-when-start-up-the-camel-cxf-endpoint-from-osgi-platform-.html

Willem

Christian Schneider wrote:
 Hmm,

from what I understand you initialize the service proxy by instatiating the service client class. While this may work I would rather configure the service proxy in spring and inject the proxy into your bean. In any case I think the problem is that cxf is not initialized correctly. So at least you will have to do some imports. You could try a config similar to the wsdl first example from the cxf distribution. Take a look at the client-applicationContext.xml. I have attached the config below.

The sample is not designed for osgi though so I am not sure if classloading problems could cause more troubles. Btw. Is there a reason you use servicemix for this case? I normally do such implementations as wars in a plain tomcat. This environment is much easier to understand.

Greetings

Christian


Am 20.08.2010 00:08, schrieb Roland Villemoes:
Hi,

Sounds so nice that this should be easy to fix. I really hope that's true.

I have attached the source part of the bundle (/src) that contains the
spring part as well as the webservice proxy etc.

http://camel.465427.n5.nabble.com/file/n2641609/src2.zip src2.zip

Thanks a lot.
------------------

<beans xmlns="http://www.springframework.org/schema/beans";
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
    xmlns:context="http://www.springframework.org/schema/context";
    xmlns:jaxws="http://cxf.apache.org/jaxws";
    xmlns:customer="http://customerservice.example.com/";
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd
        http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd
        http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.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-extension-http.xml" />

<!--
Define a cxf endpoint based on client stub generated from a wsdl. It
        is important to provide serviceName and endpointName so the wsdl is
        not needed at runtime. As far as I know the serviceName and
endpointName do not have to have a special convention but it is good
        practice to use the service namespace and Service Interface name in
        the names
    -->
<jaxws:client id="customerService"
        serviceName="customer:CustomerServiceService"
        endpointName="customer:CustomerServiceEndpoint"
        address="http://localhost:9090/CustomerServicePort";
        serviceClass="com.example.customerservice.CustomerService">
</jaxws:client>

<bean id="tester" class="com.example.customerservice.client.CustomerServiceTester">
<property name="customerService" ref="customerService"></property>
</bean>
</beans>
---------------------


Reply via email to