Thank you for your help. It is not exactly right but it helped me to see
where was my mistake.
from("jbi:myService/my-service-http-endpoint").to("log:in_message"); isn't
working.I just mess up when I post the content of the xbean.xml from in-http-bc (1b). My file is: <beans xmlns:http="http://servicemix.apache.org/http/1.0" xmlns:myService="http://www.servicemix.org/example"> <http:consumer service="myService:my-service-http" endpoint="myService:my-service-http-endpoint" targetService="myService/my-service-camel" targetEndpoint="camel-in" locationURI="http://0.0.0.0:8192/example" defaultMep="http://www.w3.org/2004/08/wsdl/in-out" /> </beans> Here is something I don't understand: if I want to create a jbi route from the consumer. <My_supposition> To me, the message is coming from the external world to "http://0.0.0.0:8192/example", using the endpoint "myService:my-service-http-endpoint" and the service "myService:my-service-http". Then, once received by HTTP SU, it is send to the targetService "myService/my-service-camel" throught the endpoint "camel-in". So camel-in should be the name of the endpoint used for camel SU entry, and myService/my-service-camel his service. </My_supposition> Is this supposition right? it seems to work when I put : from("jbi:service:myService/my-service-http").to("log:tutorial"); but an error is traced in servicemix console : WARN - HttpComponent - Target service (myService/my-service-camel) and endpoint (camel-in) specified, but no matching endpoint found. Only the service will be used for routing. WARN - DefaultBroker - ServiceName (myService/my-service-camel) specified for routing, but can't find it registered Can you help me understanding what is the comportment of this http consumer? Jean-Baptiste Onofré wrote: > > Hi, > > Answer in line: > >> 1) the http su: >> I used this tutorial >> (http://cwiki.apache.org/SM/704-intermediate-configuring-the-http-consumer-su.html) >> 1a) I change the name in the pom.xml to "Wsdl distant :: IN HTTP SU" and >> add >> the dependency: >> <dependency> >> <groupId>org.apache.servicemix</groupId> >> <artifactId>servicemix-core</artifactId> >> <version>${servicemix-version}</version> >> </dependency> > > Be careful, if you want to use the HTTP component, you need to add the > servicemix-http dependency in your pom.xml like this: > <dependency> > <groupId>org.apache.servicemix</groupId> > <artifactId>servicemix-http</artifactId> > <version>2009.01</version> > </dependency> > > Basicly, you don't need the servicemix-core dependency in your SU. > >> >> 1b) And then I set the xbean.xml to: >> <beans xmlns:http="http://servicemix.apache.org/http/1.0" >> xmlns:ex="http://www.servicemix.org/example"> >> >> <http:endpoint service="myService:my-service-http" >> endpoint="myService:my-service-http-endpoint" >> targetService="myService:my-service-camel" >> targetEndpoint="camel-in" >> locationURI="http://0.0.0.0:8181/myService" /> >> >> </beans> >> >> by the way, I have a question in my mind : >> 1c) what is the difference between http:endpoint and http:consumer ? (I >> tried to use http:endpoint but it wasn't working) > > The HTTP component supports two kinds of endpoint: the old fashion and > the new one. > > The old fashion uses the http:endpoint notation and the component role > is defined using the role attribute (consumer or provider). You can find > the old fashion documentation here: > http://servicemix.apache.org/servicemix-http.html. > This usage should be deprecated soon. > > On the other hand, the new fashion uses http:consumer and http:provider > notation and define the component role. > You can find the new fashion documentation here: > http://servicemix.apache.org/servicemix-http-new-endpoints.html. > > In your case, I think that the usage of the http:endpoint is not correct > as you haven't define the role attribute. > >> >> ------------------------------------------------------------ >> >> 2) the camel se: >> I used this tutorial >> (http://servicemix.apache.org/32-using-the-camel-java-dsl-for-the-first-time.html) >> 2a) I change the name in the pom.xml to "Wsdl distant :: CAMEL SE SU" >> 2b) I change the camel-context.xml with : >> <camelContext id="camel" >> xmlns="http://activemq.apache.org/camel/schema/spring"> >> <package>org.apache.servicemix.test3</package> >> </camelContext> >> 2c) I change the org.apache.servicemix.test3.MyRouteBuilder.java >> I add the line from("ex:httphandler").to("log:tutorial"); in the >> configure >> method (just to test the two components) >> >> ------------------------------------------------------------ >> >> 3a) I create the Service assembly >> TestWsdlDistant3> mvn archetype:create >> -DarchetypeArtifactId=servicemix-service-assembly >> -DarchetypeGroupId=org.apache.servicemix.tooling >> -DartifactId=wsdl-distant-sa >> 3b) I add the http and camel SU dependencies in the pom.xml file >> <dependency> >> <groupId>org.apache.servicemix.test3</groupId> >> <artifactId>in-http-bc</artifactId> >> <version>1.0-SNAPSHOT</version> >> </dependency> >> <dependency> >> <groupId>org.apache.servicemix.test3</groupId> >> <artifactId>camel-su</artifactId> >> <version>1.0-SNAPSHOT</version> >> </dependency> >> > Be careful, in the camel se doesn't need to have your http SU in > dependency. The routing between the Camel SE and the HTTP BC will be > made by the container (SMX) using JBI routing. > >> ------------------------------------------------------------ >> >> I run mvn install and I try to deploy the application >> >> I had the following error at deployment: >> org.apache.camel.NoSuchEndpointException: No endpoint could be found for: >> ex:httphandler >> >> So I tryed to add >> xmlns:ex="http://www.servicemix.org/example" >> in the camel-context (2b) either in the bean and the camelContext >> elements >> but it didn't work. >> Then, reading some topics, I tried to add the HTTP dependency into the >> camel >> pom.xml (2a). didn't work neither. >> >> I saw that you were talking about classpath definition but I just can't >> figure out: >> How (meaning when) can I indicate the "ex:httphandler" import for camel >> SU? >> >> I hope I was clear... Thank you for you help > > In your case, you have defined a http endpoint (consumer) > myService:my-service-http-endpoint. > This endpoint is deployed into SMX as a JBI endpoint. > > Your Camel route should wait for message coming from this endpoint. So > it should look like: > from("jbi:myService/my-service-http-endpoint").to("log:in_message"); > > This route listens message coming from your HTTP endpoint (deployed into > SMX as a JBI endpoint) and put this message into the in_message log. > > I hope it's clear :) > > Regards > JB > >> >> >> the complete stackTrace is : >> <loc-message>Could not deploy xbean service unit</loc-message> >> </msg-loc-info> >> </task-status-msg> >> <exception-info> >> <nesting-level>1</nesting-level> >> <msg-loc-info> >> <loc-token/> >> <loc-message>No endpoint could be >> found for: ex:httphandler</loc-message> >> >> <stack-trace><![CDATA[org.apache.camel.NoSuchEndpointException: No >> endpoint >> could be found for: ex:httphandler >> at >> org.apache.camel.util.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:54) >> at >> org.apache.camel.model.RouteType.resolveEndpoint(RouteType.java:100) >> at >> org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:102) >> at >> org.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:108) >> at >> org.apache.camel.model.FromType.resolveEndpoint(FromType.java:73) >> at >> org.apache.camel.impl.DefaultRouteContext.getEndpoint(DefaultRouteContext.java:77) >> at org.apache.camel.model.RouteType.addRoutes(RouteType.java:214) >> at org.apache.camel.model.RouteType.addRoutes(RouteType.java:90) >> at >> org.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:537) >> at >> org.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:529) >> at >> org.apache.camel.spring.SpringCamelContext.doStart(SpringCamelContext.java:149) >> at >> org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:47) >> at >> org.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:103) >> at >> org.springframework.context.event.SimpleApplicationEventMulticaster$1.run(SimpleApplicationEventMulticaster.java:78) >> at >> org.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:49) >> at >> org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:76) >> at >> org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:275) >> at >> org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:737) >> at >> org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:384) >> at >> org.apache.servicemix.common.xbean.AbstractXBeanDeployer.deploy(AbstractXBeanDeployer.java:86) >> at >> org.apache.servicemix.camel.CamelSpringDeployer.deploy(CamelSpringDeployer.java:71) >> at >> org.apache.servicemix.common.BaseServiceUnitManager.doDeploy(BaseServiceUnitManager.java:88) >> at >> org.apache.servicemix.common.BaseServiceUnitManager.deploy(BaseServiceUnitManager.java:69) >> at >> org.apache.servicemix.jbi.framework.DeploymentService.deployServiceAssembly(DeploymentService.java:508) >> at >> org.apache.servicemix.jbi.framework.AutoDeploymentService.updateServiceAssembly(AutoDeploymentService.java:353) >> at >> org.apache.servicemix.jbi.framework.AutoDeploymentService.updateArchive(AutoDeploymentService.java:256) >> at >> org.apache.servicemix.jbi.framework.AutoDeploymentService.monitorDirectory(AutoDeploymentService.java:667) >> at >> org.apache.servicemix.jbi.framework.AutoDeploymentService.access$800(AutoDeploymentService.java:62) >> at >> org.apache.servicemix.jbi.framework.AutoDeploymentService$1.run(AutoDeploymentService.java:631) >> at java.util.TimerThread.mainLoop(Timer.java:512) >> at java.util.TimerThread.run(Timer.java:462) >> ]]></stack-trace> >> </msg-loc-info> >> </exception-info> >> </task-result-details> >> </component-task-result-details> >> </component-task-result> >> </jbi-task-result> >> </jbi-task> >> >> at >> org.apache.servicemix.jbi.framework.ManagementSupport.failure(ManagementSupport.java:125) >> at >> org.apache.servicemix.jbi.framework.ManagementSupport.failure(ManagementSupport.java:111) >> at >> org.apache.servicemix.jbi.framework.DeploymentService.deployServiceAssembly(DeploymentService.java:543) >> at >> org.apache.servicemix.jbi.framework.AutoDeploymentService.updateServiceAssembly(AutoDeploymentService.java:353) >> ... 6 more >> >> >> >> >> Fly13DW wrote: >>> Thank you for your answer. >>> >>> I create the project as said in the tutorial: >>>> mvn archetype:create -DarchetypeGroupId=org.apache.servicemix.tooling >>>> -DarchetypeArtifactId=servicemix-project-root >>>> -DgroupId=org.apache.servicemix.test3 -DartifactId=TestWsdlDistant3 >>> ------------------------------------------------------------ >>> >>> Then I create a HTTP SU consumer into the new created folder: >>> TestWsdlDistant3> mvn archetype:create >>> -DarchetypeGroupId=org.apache.servicemix.tooling >>> -DarchetypeArtifactId=servicemix-http-consumer-service-unit >>> -DgroupId=org.apache.servicemix.test3 -DartifactId=in-http-bc >>> the Camel SU (the SE, I think?): >>> TestWsdlDistant3> mvn archetype:create >>> -DarchetypeGroupId=org.apache.servicemix.tooling >>> -DarchetypeArtifactId=servicemix-camel-service-unit >>> -DgroupId=org.apache.servicemix.test3 -DartifactId=camel-su >>> and finally the CXF SU provider: >>> TestWsdlDistant3> mvn archetype:create >>> -DarchetypeGroupId=org.apache.servicemix.tooling >>> -DarchetypeArtifactId=servicemix-cxf-bc-service-unit >>> -DgroupId=org.apache.servicemix.test3 -DartifactId=out-cxf-bc >>> >>> ------------------------------------------------------------ >>> >>> I try mvn install (just to see if everything is ok) >>> >>> I have a Build failed and these error messages : >>> error: error reading >>> D:\Users\itmaster\.m2\repository\org\springframework\spring-support\2.0.6\spring-support-2.0.6.jar; >>> error in opening zip file >>> error: error reading >>> D:\Users\itmaster\.m2\repository\xerces\xerces\2.0.2\xerces-2.0.2.jar; >>> error in opening zip file >>> >>> so I just try to delete these files and build again and I have the same >>> error with another one: >>> [INFO] Unable to find resource 'xerces:xerces:jar:2.0.2' in repository >>> apache (http://people.apache.org/repo/m2-ibiblio-rsync-repository) >>> Downloading: >>> http://servicemix.org/m2-repo/xerces/xerces/2.0.2/xerces-2.0.2.jar >>> 1K downloaded (spring-support-2.0.6.jar) >>> 1K downloaded (xerces-2.0.2.jar) >>> [WARNING] *** CHECKSUM FAILED - Checksum failed on download: local = >>> '000fe85014f41d2570499c0f861c6e98665499ec'; remote = '<!-- >>> >>> top.location="http://servicemix.org/?fp=kXHnDH0xDZIfzlzX%2BEMg2aI8qPN9TqlzHEvrAIivMgIVV8vmkUBX4h5fLLjpt9HdKiETENFLeq7LkY2rrQCF2FHRwxbQ0JOI5XstHCqgtkjkneSsbkG9g5TREzkc6g28z%2B3I&cifr=1"; >>> /* >>> --> >>> <script' - RETRYING >>> Downloading: >>> http://servicemix.org/m2-repo/org/springframework/spring-support/2.0.6/spring-support-2.0.6.jar >>> [WARNING] *** CHECKSUM FAILED - Checksum failed on download: local = >>> 'd8139c47cb24b298407e36191473fa0a5ab8bbdd'; remote = '<!-- >>> >>> top.location="http://servicemix.org/?fp=kXHnDH0xDZIfzlzX%2BEMg2aI8qPN9TqlzHEvrAIivMgG0LVtTK53YbqdD8EHCEuJyd%2BkjnjI2WBtsvlBX76VzTsAnUF%2FzL%2BaLUNTBFrTXZaMDt3sXM13kSMp4Y56EJ3DCJUDA&cifr=1"; >>> /* >>> --> >>> <script' - RETRYING >>> Downloading: >>> http://servicemix.org/m2-repo/xerces/xerces/2.0.2/xerces-2.0.2.jar >>> 1K downloaded (spring-support-2.0.6.jar) >>> 1K downloaded (xerces-2.0.2.jar) >>> [WARNING] *** CHECKSUM FAILED - Checksum failed on download: local = >>> 'f080208aea8ead70f558a477b75823eb2edf0528'; remote = '<!-- >>> >>> top.location="http://servicemix.org/?fp=kXHnDH0xDZIfzlzX%2BEMg2aI8qPN9TqlzHEvrAIivMgV6gYeVlYjq3NS%2BzAEK8w9wFtV%2FHPf%2BrPQZdHtrGqJHtifNu99Ejea0M8k2UkVu6zZn%2FCpaMZLYESTRe7Gfw%2FqxB90c&cifr=1"; >>> /* >>> --> >>> <script' - IGNORING >>> [WARNING] *** CHECKSUM FAILED - Checksum failed on download: local = >>> '6bdc54056ba8980e25701c351629116897ace8ee'; remote = '<!-- >>> >>> top.location="http://servicemix.org/?fp=kXHnDH0xDZIfzlzX%2BEMg2aI8qPN9TqlzHEvrAIivMgRsfuksEv7MO3Rr1LS8rmxCcpQDTTFBgZnvXuESeWVrUW%2BLbGYnJsDy3WYHVnKIan6zcl7W08M%2Bmm6a3rJd0s20huUO&cifr=1"; >>> /* >>> --> >>> <script' - IGNORING >>> >>> (and the same for spring-support). >>> I think this means that the source is not available. >>> Do I have to modify some configuration (resource server)? >>> Does someone have a hint? >>> >>> Regards, >>> Cedric >>> >>> >>> >>> Gert Vanthienen wrote: >>>> L.S., >>>> >>>> First of all, welcome to ServiceMix! ;) >>>> >>>> If you want to receive the non-soap XML message using a HTTP POST, an >>>> HTTP consumer endpoint would be the ideal solution there. For >>>> invoking the external endpoint, you could use an HTTP provider >>>> endpoint but we would generally recommend using the servicemix-cxfbc, >>>> because it is specifically geared towards dealing with web services. >>>> >>>> Once you have these two set up, you could actually choose any >>>> component that best suits your needs : servicemix-bean if you want to >>>> use a POJO, servicemix-saxon if you are going for XSL, ... My >>>> personal favorite/recommendation would be to use Camel inbetween the >>>> two endpoints: it has excellent EIP and POJO support and there are >>>> components available for XSL, EL, ... to help you build the >>>> transformations. >>>> >>>> So in a nutshell, I think the best solution for you would be: >>>> HTTP consumer -> Camel route -> CXF provider >>>> >>>> Regards, >>>> >>>> Gert Vanthienen >>>> ------------------------ >>>> Open Source SOA: http://fusesource.com >>>> Blog: http://gertvanthienen.blogspot.com/ >>>> >>>> >>>> >>>> 2009/5/27 Fly13DW <[email protected]>: >>>>> Hello, >>>>> >>>>> I'm new with Apache ServiceMix, and I'm asking questions concerning >>>>> the> >>>>> architecture I should use. >>>>> 1) I have a XML message as entry (no-SOAP) >>>>> <message>msg</message> >>>>> 2) This message has to be converted to be passed to an external Web >>>>> Service, >>>>> using SOAP. >>>>> 3) The Web Service returns a SOAP message that has to be converted >>>>> back >>>>> to >>>>> XML >>>>> >>>>> I thought I use the servicemix-http for the Binding Component (1), and >>>>> maybe >>>>> the servicemix-jsr181 (2). >>>>> My questions are : >>>>> - do you think there is a better Binding Component (1) to do this job? >>>>> - my servicemix-jsr181 will use a java pojo. Do I have to do a call to >>>>> the >>>>> Web Service in this implemented class, or should I use another >>>>> architecture? >>>>> >>>>> thank you for your answers >>>>> -- >>>>> View this message in context: >>>>> http://www.nabble.com/components-to-use-for-an-XML-to-SOAP-request-tp23745527p23745527.html >>>>> Sent from the ServiceMix - User mailing list archive at Nabble.com. >>>>> >>>>> >>>> >>>> ----- >>>> --- >>>> Gert Vanthienen >>>> http://gertvanthienen.blogspot.com >>>> >>> >> > > -- View this message in context: http://www.nabble.com/components-to-use-for-an-XML-to-SOAP-request-tp23745527p23762708.html Sent from the ServiceMix - User mailing list archive at Nabble.com.
