2 Replies Latest reply on Apr 1, 2011 8:48 AM by Greg Davidson

    camel route to external web service

    Greg Davidson Newbie

      We are  trying to do this:



      FUSE ESB container

      CXF-Provider ---> OSGI NMR -

      > Camel route -

      > external web service


      In the example above the CXF-Provider is a cxf endpoint we expose to our enterprise,

      we only expose 1 endpoint....all soap requests will go through this endpoint.

      Based on the content we will route to different endpoints on the OSG-NMR, then

      push the request on to our existing "external" web services. 


      The last piece of the POC (proof of concept) is to pick up the message off

      of the OSGI-NMR and send to an external web service.


      Example camel/spring file:



      This does get routed, however it's not putting the soap operation on the request,

      we are getting this error, maybe this isn't the way to address external web services

      from OSG-NMR?


      faultCode: Client.NoSOAPAction


      faultString: no SOAPAction header!




           stackTrace:no SOAPAction header!

           at org.apache.axis.transport.http.AxisServlet.getSoapAction(AxisServlet.java:1013)

           at org.apache.axis.transport.http.AxisServlet.doPost(AxisServlet.java:678)

           at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)

           at org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327)

           at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

           at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)

           at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)

           at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)

           at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)

           at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)

           at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)

           at org.apache.catalina.valves.FastCommonAccessLogValve.invoke(FastCommonAccessLogValve.java:482)

           at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)

           at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)

           at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)

           at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)

           at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)

           at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)

           at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)

           at java.lang.Thread.run(Thread.java:595)




      I have implemented this USE CASE using the JaxWsProxyFactoryBean in code, but

      thought I would try sending to an external web service via the OSGI-NMR.

        • 1. Re: camel route to external web service
          Willem Jiang Master

          I'm not sure how you implement the CXF-Provider ?

          It's looks like you are not using the CXF-BC component.



          • 2. Re: camel route to external web service
            Greg Davidson Newbie

            Correct, we are using a <jaxws:endpoint> java-first to expose this web service.  My thought from reading a lot of the documentation and the webinars...if we are new to FUSE/Servicemix, we should use OSGI and not the JBI NMR.


            So, in this case the <jaxws:endpoint> (CXF provider) includes our security (wss4jSecurityInterceptor) and some of our internal business logic before routing to all of our web services.  We want to provide ONE endpoint for all web service consumers to go, then we route to the appropriate web service based on the content.


            I can call all our existing web services in code using (JaxWsProxyFactoryBean)....but was thinking it might be better to route via the OSG-NMR...but unsure if this is the correct way or not?




            Edited by: gmdavidson62 on Apr 1, 2011 8:47 AM