After some tries it seems to me that the servicemix-http consumer requires a
targetService. But I don't know how to define the service for the camel
component (can't find it in the xsd definition...).

-- I say that because I have an error when I don't precise the targetService
for the servicemix-http (javax.jbi.management.DeploymentException:
targetInterface, targetService or targetUri should be specified).



Fly13DW wrote:
> 
> 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-tp23745527p23765314.html
Sent from the ServiceMix - User mailing list archive at Nabble.com.

Reply via email to