Hi,

I created one webservice in the OSGI format and installed it in the
servicemix.
The webservice worked fine and i was able to send and receive requests
through SoapUI software.

I tried to add some apache camel code inside this so that i can send a
string to a file.

The implementation is as follows
This is my webservice implementation class.

package com.webservice.calculator;

import java.util.logging.Logger;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
import javax.xml.bind.annotation.XmlSeeAlso;
import javax.xml.ws.RequestWrapper;
import javax.xml.ws.ResponseWrapper;

import org.apache.camel.CamelContext;
import org.apache.camel.Component;
import org.apache.camel.Endpoint;
import org.apache.camel.Exchange;
import org.apache.camel.Producer;
import org.apache.camel.ProducerTemplate;
import org.apache.camel.component.file.FileComponent;
import org.apache.camel.component.log.LogComponent;
import org.apache.camel.impl.DefaultCamelContext;

import com.progress.pso.payments_api.PaymentsApi;

/**
 * This class was generated by Apache CXF 2.2.5
 * Tue Dec 01 17:46:59 IST 2009
 * Generated source version: 2.2.5
 * 
 */

@javax.jws.WebService(
                      serviceName = "CalculatorService",
                      portName = "CalculatorSoapPort",
                      targetNamespace = "http://calculator.webservice.com";,
                      wsdlLocation =
"file:/D:/harbeer/Maven_Project/payment-web-service-osgi/src/main/resources/wsdl/Calculator.wsdl",
                      endpointInterface =
"com.webservice.calculator.CalculatorPortType")
                      
public class CalculatorPortTypeImpl implements CalculatorPortType {

    private static final Logger LOG =
Logger.getLogger(CalculatorPortTypeImpl.class.getName());
    private PaymentsApi paymentApi;
    private CamelContext camel;
    private ProducerTemplate template;

    
    public CalculatorPortTypeImpl() throws Exception {
        camel = new DefaultCamelContext();
        template = camel.createProducerTemplate();
        camel.addComponent("file", new FileComponent());
        camel.start();
    }
    
    public void setPaymentApi(PaymentsApi paymentApi) {
        this.paymentApi = paymentApi;
    }

    /* (non-Javadoc)
     * @see
com.webservice.calculator.CalculatorPortType#subtractNumbers(java.math.BigInteger
 
inputOne ,)java.math.BigInteger  inputTwo )*
     */
    public java.math.BigInteger subtractNumbers(java.math.BigInteger
inputOne,java.math.BigInteger inputTwo) { 
        try {
                sendToCamelFile("harbeer");
            return paymentApi.subtractNumbers(inputOne, inputTwo);
        } catch (Exception ex) {
            ex.printStackTrace();
            throw new RuntimeException(ex);
        }
    }

    
    private void sendToCamelFile(String name) {
        try {
                
            // get the log component
            Component component = camel.getComponent("file");

            Endpoint endpoint =
component.createEndpoint("file:///D:/harbeer");
            Exchange exchange = endpoint.createExchange();
            exchange.getIn().setBody(name);
            exchange.getIn().setHeader(FileComponent.HEADER_FILE_NAME,
"harbeer.txt");

            // now we want to send the exchange to this endpoint and we then
need a producer
            // for this, so we create and start the producer.
            Producer producer = endpoint.createProducer();
            System.out.println(producer);
            producer.start();
            System.out.println(name);
            producer.process(exchange);
            producer.stop();

        } catch (Exception e) {
            // we ignore any exceptions and just rethrow as runtime
            throw new RuntimeException(e);

        }

    }

}

I installed this new webservice implementation inside servicemix 4 as an
osgi bundle.
I got following exception when i called webservice method subtractNumbers();


Caused by: org.apache.camel.NoTypeConversionAvailableException: No type
converte
r available to convert from type: class
org.apache.camel.component.file.FileMess
age to the required type: java.io.InputStream with value FileMessage:
D:\harbeer

        at
org.apache.camel.impl.converter.DefaultTypeConverter.doConvertTo(Defa
ultTypeConverter.java:147)
        at
org.apache.camel.impl.converter.DefaultTypeConverter.convertTo(Defaul
tTypeConverter.java:90)
        at
org.apache.camel.impl.converter.DefaultTypeConverter.convertTo(Defaul
tTypeConverter.java:86)
        at
org.apache.camel.impl.MessageSupport.getBody(MessageSupport.java:85)
        at
org.apache.camel.impl.MessageSupport.getBody(MessageSupport.java:52)
        at
org.apache.camel.util.ExchangeHelper.getMandatoryInBody(ExchangeHelpe
r.java:130)
        at
org.apache.camel.component.file.FileProducer.process(FileProducer.jav
a:78)
        at
org.apache.camel.component.file.FileProducer.process(FileProducer.jav
a:61)
        at
com.webservice.calculator.CalculatorPortTypeImpl.sendToCamelFile(Calc
ulatorPortTypeImpl.java:129)
        ... 31 more

Please help if i am missing some thing.

With Regards
Harbeer Kadian
-- 
View this message in context: 
http://old.nabble.com/Getting-error-when-using-Apache-camel-inside-servicemix.-tp26635823p26635823.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.

Reply via email to