hi
 
i am uisng the same http client. the only change is that the  http component
alone making the routing to destination service. so i tried with the
following code.......

This is my http connector code..... 


package ss.servicemix.components.http; 

import javax.jbi.JBIException; 
import javax.jbi.component.ComponentContext; 
import javax.jbi.messaging.InOnly; 
import javax.jbi.messaging.MessageExchange; 
import javax.jbi.messaging.InOut; 
import javax.jbi.messaging.MessagingException; 
import javax.jbi.messaging.NormalizedMessage; 
import javax.jbi.servicedesc.ServiceEndpoint; 
import javax.xml.namespace.QName; 



import org.apache.servicemix.MessageExchangeListener; 
import org.apache.servicemix.components.util.ComponentSupport; 
import org.apache.servicemix.jbi.resolver.EndpointChooser; 
import org.apache.servicemix.jbi.resolver.EndpointResolver; 
import org.apache.servicemix.jbi.resolver.InterfaceNameEndpointResolver; 
import org.apache.servicemix.jbi.resolver.NullEndpointFilter; 
import org.apache.servicemix.jbi.resolver.ServiceAndEndpointNameResolver; 
import org.apache.servicemix.jbi.resolver.ServiceNameEndpointResolver; 
import org.apache.servicemix.jbi.resolver.URIResolver; 
import org.mortbay.jetty.Connector; 
import org.mortbay.jetty.Server; 
import org.mortbay.jetty.bio.SocketConnector; 
import org.mortbay.jetty.handler.ContextHandler; 
import org.mortbay.jetty.servlet.ServletHandler; 
import org.mortbay.jetty.servlet.ServletHolder; 
import org.mortbay.jetty.servlet.ServletMapping; 
import org.mortbay.thread.BoundedThreadPool; 
import org.apache.servicemix.jbi.container.ActivationSpec; 
import org.apache.servicemix.jbi.container.SubscriptionSpec; 
import org.apache.servicemix.jbi.jaxp.SourceTransformer; 
import org.apache.servicemix.jbi.messaging.PojoMarshaler; 

/** 
 * An embedded Servlet engine to implement a HTTP connector 
 * 
 * @version $Revision: 410091 $ 
 */ 
public class HttpConnector extends HttpInOutBinding implements
MessageExchangeListener { 
    private Connector listener = new SocketConnector(); 
    
        /** 
         * The maximum number of threads for the Jetty SocketListener. It's
set 
         * to 256 by default to match the default value in Jetty. 
         */ 
        private int maxThreads = 256; 
        private transient EndpointResolver destinationResolver; 

    private Server server; 
    private String host; 
    private int port; 
    
  
    



    /** 
     * Constructor 
     * 
     * @param host 
     * @param port 
     */ 
    public HttpConnector(String host, int port) { 
        this.host = host; 
        this.port = port; 
    } 

    /*public HttpConnector() { 
    
        
    } 
*/ 
    /** 
     * Constructor 
     * 
     * @param listener 
     */ 
    public HttpConnector(Connector listener) { 
        this.listener = listener; 
    } 

    
    
    /********This i added inside the code***********************/ 
    
    public static final QName SERVICE = 
        new QName("http://servicemix.org/example/";, "http"); 
     public static final String ENDPOINT = "http"; 

     private EndpointResolver resolver; 
     private String[] resolverElements; 

     public HttpConnector() 
     { 
          
          
     } 

     public EndpointResolver getResolver() 
     { 
        return resolver; 
     } 

     public void setResolver(EndpointResolver resolver) 
     { 
         System.out.println("xml resolver111111111------->"+resolver); 
        this.resolver = resolver; 
      
     } 
     public void setResolverElements(String[] resolverElements) 
     { 
    this.resolverElements = resolverElements; 
    resolver = new ServiceNameEndpointResolver(new
QName(resolverElements[0],resolverElements[1])); 
  
     } 
      
     public void settingdestination() throws JBIException{ 
          
          ComponentContext context1 = getContext(); 
         try { 
             InOnly exchange =
context1.getDeliveryChannel().createExchangeFactory().createInOnlyExchange(); 
             ServiceEndpoint destination =null;       
              
            
             if (resolver != null) 
             {System.out.println("destination--->"+destination); 
             System.out.println("resolver---->"+resolver); 
         destination = resolver.resolveEndpoint(getContext(), 
                                                       exchange, 
                                                      
NullEndpointFilter.getInstance()); 
                
             } 
             if (destination != null) 
             { 
                // lets explicitly specify the destination - otherwise 
                // we'll let the container choose for us 
                 System.out.println("destination"+destination); 
                exchange.setEndpoint(destination); 
             } 
            
             exchange.setService(new QName("http://servicemix.org/example/";,
"receiver")); 
             exchange.setInterfaceName(new
QName("http://servicemix.org/example/";, "receiver")); 
         } catch (MessagingException e) { 
             // TODO Auto-generated catch block 
             e.printStackTrace(); 
         } 
        
      
     } 

       
/**************************************************************************/ 
    
    /** 
     * Called when the Component is initialized 
     * 
     * @param cc 
     * @throws JBIException 
     */ 
    public void init(ComponentContext cc) throws JBIException { 
        super.init(cc); 
        //should set all ports etc here - from the naming context I guess ? 
        if (listener == null) { 
            listener = new SocketConnector(); 
        } 
        listener.setHost("localhost"); 
        listener.setPort(8555); 
        server = new Server(); 
        BoundedThreadPool btp = new BoundedThreadPool(); 
        btp.setMaxThreads(getMaxThreads()); 
        server.setThreadPool(btp); 
        
    } 
    
    /** 
     * start the Component 
     * 
     * @throws JBIException 
     */ 
    public void start() throws JBIException { 
        server.setConnectors(new Connector[] { listener }); 
        ContextHandler context = new ContextHandler(); 
        context.setContextPath("/"); 
        ServletHolder holder = new ServletHolder(); 
        holder.setName("jbiServlet"); 
        holder.setClassName(BindingServlet.class.getName()); 
        ServletHandler handler = new ServletHandler(); 
        handler.setServlets(new ServletHolder[] { holder }); 
        System.out.println("inside server"); 
        ServletMapping mapping = new ServletMapping(); 
        mapping.setServletName("jbiServlet"); 
        mapping.setPathSpec("/*"); 
        handler.setServletMappings(new ServletMapping[] { mapping }); 
        context.setHandler(handler); 
        server.setHandler(context); 
        context.setAttribute("binding", this); 
        try { 
            
           settingdestination(); 
            
            server.start();     
          
        } 
        catch (Exception e) { 
            throw new JBIException("Start failed: " + e, e); 
        } 
    } 

    
  
    
    
    /** 
     * stop 
     */ 
    public void stop() throws JBIException { 
        try { 
            if (server != null) { 
                server.stop(); 
            } 
        } 
        catch (Exception e) { 
            throw new JBIException("Stop failed: " + e, e); 
        } 
    } 

    /** 
     * shutdown 
     */ 
    public void shutDown() throws JBIException { 
        super.shutDown(); 
        server = null; 
    } 


    // Properties 
   
//------------------------------------------------------------------------- 
    public int getPort() { 
        return port; 
    } 

    public void setPort(int port) { 
        this.port = port; 
    } 

    public Server getServer() { 
        return server; 
    } 

    public void setServer(Server server) { 
        this.server = server; 
    } 

    public String getHost() { 
        return host; 
    } 

    public void setHost(String host) { 
        this.host = host; 
    } 

        public int getMaxThreads() { 
                return maxThreads; 
        } 

        public void setMaxThreads(int maxThreads) { 
                this.maxThreads = maxThreads; 
        } 
          public void onMessageExchange(MessageExchange exchange)  throws
MessagingException { 
              // As we send in-only MEPS, we will only 
              // receive DONE or ERROR status 
              System.out.println("inside on message exchange"); 
              
             try{ 
          
           SourceTransformer sourceTransformer= new SourceTransformer(); 
           NormalizedMessage message = exchange.getMessage("in");     
          
System.out.println("%%%%%%%%%%%%%%%%%%"+sourceTransformer.toString(message.getContent()));
 
          
          
          } 
          catch(Exception e){} 
            done(exchange); 
        
          } 
} 


 when i start the server there is no error when i build my http client im
getting the following error.. 

:INFO:  jetty 6.0.0beta17 
:INFO:  Started SocketConnector @ localhost:8555 
:WARN:  EXCEPTION 
javax.servlet.ServletException: Failed to process JBI request:
javax.jbi.messaging.MessagingException: Could not find route for exchange:
MessageExchange[ 
  id: ID:AD0063-TRNG1-1265-1159335121209-2:1 
  status: Active 
  role: provider 
  in: <?xml version="1.0" encoding="UTF-8"?><ns1:getQuote
xmlns:ns1="urn:xmethods-delayed-quotes"
xmlns:se="http://schemas.xmlsoap.org/soap/envelope/";
xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance";
se:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/";> 
  <symbol xsi:type="xsd:string">IBM</symbol> 
</ns1:getQuote> 
] for service: null and interface: null 
        at
ss.servicemix.components.http.BindingServlet.doPost(BindingServlet.java:78) 
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:615) 
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:688) 
        at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:423) 
        at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:355) 
        at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:567) 
        at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:119) 
        at org.mortbay.jetty.Server.handle(Server.java:248) 
        at
org.mortbay.jetty.HttpConnection.handlerRequest(HttpConnection.java:360) 
        at
org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:628)
 
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:611) 
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:197) 
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:288) 
        at
org.mortbay.jetty.bio.SocketConnector$Connection.run(SocketConnector.java:180) 
        at
org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:475)




-- 
View this message in context: 
http://www.nabble.com/Route-not-found-for-exchange-error-tf2343562.html#a6523146
Sent from the ServiceMix - User mailing list archive at Nabble.com.

Reply via email to