Hi again, sorry, I have made a mistake in the Camel route example (thanks to Gert).
The URL in Camel should specify service, endpoint or interface. It should use the full namespace URI, not only the prefix. So, a Camel JBI URL looks like jbi:service:http://my.namespace.uri/myService or jbi:endpoint:http://my.namespace.uri/myService/my-service-http-endpoint.
Regards JB 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 addthe 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.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.------------------------------------------------------------ 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.javaI add the line from("ex:httphandler").to("log:tutorial"); in the configuremethod (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>------------------------------------------------------------ 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 elementsbut it didn't work.Then, reading some topics, I tried to add the HTTP dependency into the camelpom.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 helpIn 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 JBthe 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 endpointcould be found for: ex:httphandler atorg.apache.camel.util.CamelContextHelper.getMandatoryEndpoint(CamelContextHelper.java:54)at org.apache.camel.model.RouteType.resolveEndpoint(RouteType.java:100) atorg.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:102)atorg.apache.camel.impl.DefaultRouteContext.resolveEndpoint(DefaultRouteContext.java:108) at org.apache.camel.model.FromType.resolveEndpoint(FromType.java:73)atorg.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) atorg.apache.camel.impl.DefaultCamelContext.startRouteDefinitions(DefaultCamelContext.java:537)atorg.apache.camel.impl.DefaultCamelContext.doStart(DefaultCamelContext.java:529)atorg.apache.camel.spring.SpringCamelContext.doStart(SpringCamelContext.java:149)at org.apache.camel.impl.ServiceSupport.start(ServiceSupport.java:47) atorg.apache.camel.spring.SpringCamelContext.onApplicationEvent(SpringCamelContext.java:103)atorg.springframework.context.event.SimpleApplicationEventMulticaster$1.run(SimpleApplicationEventMulticaster.java:78)atorg.springframework.core.task.SyncTaskExecutor.execute(SyncTaskExecutor.java:49)atorg.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:76)atorg.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:275)atorg.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:737)atorg.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:384)atorg.apache.servicemix.common.xbean.AbstractXBeanDeployer.deploy(AbstractXBeanDeployer.java:86)atorg.apache.servicemix.camel.CamelSpringDeployer.deploy(CamelSpringDeployer.java:71)atorg.apache.servicemix.common.BaseServiceUnitManager.doDeploy(BaseServiceUnitManager.java:88)atorg.apache.servicemix.common.BaseServiceUnitManager.deploy(BaseServiceUnitManager.java:69)atorg.apache.servicemix.jbi.framework.DeploymentService.deployServiceAssembly(DeploymentService.java:508)atorg.apache.servicemix.jbi.framework.AutoDeploymentService.updateServiceAssembly(AutoDeploymentService.java:353)atorg.apache.servicemix.jbi.framework.AutoDeploymentService.updateArchive(AutoDeploymentService.java:256)atorg.apache.servicemix.jbi.framework.AutoDeploymentService.monitorDirectory(AutoDeploymentService.java:667)atorg.apache.servicemix.jbi.framework.AutoDeploymentService.access$800(AutoDeploymentService.java:62)atorg.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> atorg.apache.servicemix.jbi.framework.ManagementSupport.failure(ManagementSupport.java:125)atorg.apache.servicemix.jbi.framework.ManagementSupport.failure(ManagementSupport.java:111)atorg.apache.servicemix.jbi.framework.DeploymentService.deployServiceAssembly(DeploymentService.java:543)atorg.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-suand 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 readingD:\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 backto 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.htmlSent from the ServiceMix - User mailing list archive at Nabble.com.----- --- Gert Vanthienen http://gertvanthienen.blogspot.com
