There should be some nightly snapshots available on the maven repo http://people.apache.org/repo/m2-snapshot-repository/
The distribution is available at http://people.apache.org/repo/m2-snapshot-repository/org/apache/servicemix/apache-servicemix/3.2-incubating-SNAPSHOT/apache-servicemix-3.2-incubating-20070503.120612-25.tar.gz But you will need the code and look at the unit tests, as this is not really documented yet. On 5/15/07, gauravsonline <[EMAIL PROTECTED]> wrote:
Hi Gnodet, Yes thats what I did. Created a jms-provider and a http-consumer in one SA (i have used the bridge-protocol example) and jms-consumer with the endpoints of the target service in the other SA. So the flow is like I post the xml messsage thru a client to the http-consumer and the message is pushed in the queue thru the jms-producer. Now the jms-consumer pulls the message out and calls the web service. This is basically a routing of the message, if I am not wrong. Now, the problem is how can i push a message object into the queue? As you responded, that the mashaling BC's are still not released so I will have to get the source from the SVN directly. Let me see if I can do something with it. If you can help me in placing the build then that would be great. Thanks... Gaurav gnodet wrote: > > If you know how to send an HTTP request to a JMS queue, > doing the opposite is quite easy. You just need to exchange > the endpoint roles so that you will end up with an jms consumer > and an http provider. > > Now, if you really need to send an object, you should use the new > endpoints > that have not been released yet (download the svn sources and build the > trunk > version). The servicemix-jms BC defines two new endpoints > <jms:consumer /> > and > <jms:provider /> > Take a look at the code, and you will see the ConsumerMarshaler and > ProviderMarhsaler > interfaces that you can implement to override the transformation from JMS > <-> JBI. > You will be able to put your custom marhsaling code there. > > On 5/15/07, gauravsonline <[EMAIL PROTECTED]> wrote: >> >> >> Hi, >> >> Thanks for your response. >> >> gnodet wrote: >> > >> > Now, if you want to call an external HTTP service, you need to link the >> > JMS endpoint to an HTTP endpoint. Take a look at the bridge example >> > in the servicemix distribution (and the turorial on the web site), they >> > are >> > really related to that (though it's from HTTP to JMS, but the same >> things >> > apply). >> > >> >> This part I have done already. I am able to post an xml message to the >> queue >> and called a web service. >> >> Now, the second part of it is to post the message object. >> >> gnodet wrote: >> > >> > Which onMessage are you talking about ? >> > Currently, the JMS BC mainly expects an xml and you can route the >> > exchange to jsr181 which will unmarshall it and call the pojo. >> > If you want to use a java object in the JMS message, you will have >> > to marshal it to xml on the BC side. >> > >> >> We know from J2EE that an MDB has a onMessage() method which is triggered >> when a message is pushed into the queue. We can have the business logic >> in >> this method for calling the target web service. My requiremnt is to >> implement the same thing using servicemix. But till now I just know about >> how to push the xml message in the jms of servicemix using http-consumer >> and >> then using then jms-provider retrieveing the messages from the queue and >> invoking the jsr-181 web service. >> >> I hope this makes the picture much clear. >> >> I have read that we can convert the message object into xml. This comes >> built-in with activemq. But how to create the SU for it. I also think of >> doing a transormation from messgae object to xml. But I do not know how >> to >> do it. Plz help... >> >> Thanks... >> >> >> gnodet wrote: >> > >> > Which onMessage are you talking about ? >> > Currently, the JMS BC mainly expects an xml and you can route the >> > exchange to jsr181 which will unmarshall it and call the pojo. >> > If you want to use a java object in the JMS message, you will have >> > to marshal it to xml on the BC side. >> > If you don't have a real need for using a java object inside the JMS >> > message, >> > I'd really recommand using xml if possible inside ServiceMix. >> > Now, if you want to call an external HTTP service, you need to link the >> > JMS endpoint to an HTTP endpoint. Take a look at the bridge example >> > in the servicemix distribution (and the turorial on the web site), they >> > are >> > really related to that (though it's from HTTP to JMS, but the same >> things >> > apply). >> > >> > On 5/14/07, gauravsonline <[EMAIL PROTECTED]> wrote: >> >> >> >> >> >> Hi Gert, >> >> >> >> Thanks for the help. With little effort I got evertything working at >> my >> >> end. >> >> Moreover the resolution was also very precise and easy to understand. >> >> >> >> Now, suppose my queue receives a message in the object form of type >> >> "Message" and I want to typecast it to the required type. Then, >> after >> >> that >> >> I will invoke a webservice and pass that object as thep parameter for >> the >> >> operation (think this would be RPC call). e.g. I am posting messages >> of >> >> type >> >> class A in the queue (here i will use jms producer), then jms consumer >> >> will >> >> retrieve the messages of type class A. No some how I want the >> >> onMessage(Message msg) method to be trigerred. The parameter msg will >> be >> >> type casted to type class A and then I will call a webservice (i think >> it >> >> would be RPC using service stubs) which takes this obect of type A as >> a >> >> parameter. >> >> >> >> I was looking at the Active MQ implemenattion of it. have cerating >> >> queries >> >> related to it. >> >> >> >> 1. How can I invoke the onMessage() method throgh the jms consumer >> >> service >> >> unit? >> >> 2. How can i invoke the jsr-181 service from inside the onMessage() >> >> method? >> >> >> >> Can I implement such a scenario with in service mix end-to-end. Plz >> >> guide. >> >> >> >> Thanks. >> >> >> >> >> >> >> >> Gert Vanthienen wrote: >> >> > >> >> > L.S., >> >> > >> >> > OK, so you have implemented and deployed a web service using the >> >> JSR-181 >> >> > component. This results in an internal endpoint for >> ServiceMix. This >> >> > means that the service is accessible within the ESB itself. If you >> >> want >> >> > to make the service available to the outside world, you'll have to >> add >> >> an >> >> > external endpoint (e.g. a JMS or HTTP consumer) for the same >> >> service. So >> >> > if you just want to route between your JMS queue and the JSR-181 >> >> endpoint, >> >> > you create only one JMS consumer endpoint with the same service name >> to >> >> > connect the external endpoint with the internal endpoint and you >> don't >> >> > need any of the intermediary HTTP endpoint definitions. If you want >> to >> >> > have multiple external endpoints (e.g. file poller, http consumer, >> ftp >> >> > poller, ...), you can create them and specify >> >> targetService/targetEndpoint >> >> > attributes to specify the routing to the internal endpoint. >> >> > >> >> > In your example, you've also added an HTTP provider endpoint. This >> is >> >> a >> >> > way to make an external web service available in the ESB (thus >> >> resulting >> >> > in another internal endpoint) and that's where your code sample >> fails >> >> > (duplicate internal endpoint names). >> >> > >> >> > Does this clarify the internal/external endpoint issue for you? >> >> > >> >> > Gert >> >> > >> >> > gauravsonline wrote: >> >> >> >> >> >> Hi Gert, >> >> >> >> >> >> I have created the consumer-jms-su and the provider-http-su and SA >> for >> >> it >> >> >> (call it as SA_retrieve). Before that I would like to explain what >> I >> >> have >> >> >> done till now. I have created the bridge example in SMX for sending >> >> the >> >> >> messages to the queue. I have also created a JSR 181 web service >> for >> >> >> echoing some message with http-consumer-su and >> jsr181-wsdl-first-su. >> >> >> >> >> >> I am able to deploy the SA_retrieve and the bridge example. I am >> able >> >> to >> >> >> send messages to the queue and then the SA_retrieve is able to >> >> retrieve >> >> >> the messages. The message is displyed in the SMX console and queue >> >> >> encount value is checked from JMX console. >> >> >> >> >> >> Now in order to make them all work together, I am deploying the SA >> in >> >> >> order like this bridge example, echo WS, and then the SA_retrieve >> WS. >> >> >> When I deploy the SA_retrieve WS it throws exceptions saying that >> the >> >> >> "EchoService" service name and the "EchoPort" endpoint are already >> >> >> registered to soem internal service. As you told to give the same >> >> service >> >> >> name and the endpoint as in the wsdl. But this is creating problem. >> >> For >> >> >> your reference I am attaching the configuration of all the SA for >> your >> >> >> refence: >> >> >> >> >> >> SA_retrieve: >> >> >> ========= >> >> >> consumer-jms-su: xbean.xml >> >> >> ---------------------------------- >> >> >> <beans xmlns:jms="http://servicemix.apache.org/jms/1.0" >> >> >> xmlns:test="http://motorola.com/test/test_amq"> >> >> >> >> >> >> <!-- START SNIPPET: consumer --> >> >> >> <jms:endpoint service="test:MyConsumerService" >> >> >> endpoint="jms" >> >> >> role="consumer" >> >> >> destinationStyle="queue" >> >> >> jmsProviderDestinationName="bridge.output" >> >> >> connectionFactory="#connectionFactory" >> >> >> >> defaultMep="http://www.w3.org/2004/08/wsdl/in-out" >> >> >> defaultOperation="test:Echo" /> >> >> >> <!-- END SNIPPET: consumer --> >> >> >> >> >> >> <jms:endpoint service="test:MyConsumerService" >> >> >> endpoint="jms+soap" >> >> >> targetInterfaceName="test:MyConsumerInterface" >> >> >> role="consumer" >> >> >> destinationStyle="queue" >> >> >> jmsProviderDestinationName="bridge.output" >> >> >> connectionFactory="#connectionFactory" >> >> >> soap="true" >> >> >> >> defaultMep="http://www.w3.org/2004/08/wsdl/in-out" >> >> /> >> >> >> >> >> >> <bean id="connectionFactory" >> >> >> class="org.apache.activemq.ActiveMQConnectionFactory"> >> >> >> <property name="brokerURL" value="tcp://localhost:61616" /> >> >> >> </bean> >> >> >> </beans> >> >> >> >> >> >> provider-http-su: xbean.xml >> >> >> ---------------------------------- >> >> >> <beans xmlns:http="http://servicemix.apache.org/http/1.0" >> >> >> xmlns:test="http://motorola.com/test/test_amq"> >> >> >> >> >> >> <http:endpoint xmlns:echo="http://motorola.com/test/echo" >> >> >> service="echo:EchoService" >> >> >> endpoint="EchoPort" >> >> >> role="provider" >> >> >> locationURI="http://localhost:9999/echo/" >> >> >> defaultMep=" http://www.w3.org/2004/08/wsdl/in-out" >> >> >> soap="true" >> >> >> wsdlResource="classpath:echo.wsdl"/> >> >> >> >> >> >> </beans> >> >> >> Actually I have kept the wsdl at the path, so its that way. >> >> >> >> >> >> JSR181 WS: >> >> >> ======== >> >> >> jsr181-su: xbean.xml >> >> >> -------------------------- >> >> >> <beans xmlns:jsr181="http://servicemix.apache.org/jsr181/1.0"> >> >> >> >> >> >> <classpath> >> >> >> <location>.</location> >> >> >> </classpath> >> >> >> >> >> >> <jsr181:endpoint >> >> pojoClass="com.motorola.test.echo.EchoServiceImpl" >> >> >> wsdlResource="classpath:echo.wsdl" >> >> >> style="document" /> >> >> >> >> >> >> </beans> >> >> >> >> >> >> jsr181-su: echo.wsdl >> >> >> ------------------------- >> >> >> <?xml version="1.0" encoding="UTF-8"?> >> >> >> <wsdl:definitions >> xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" >> >> >> xmlns:tns="http://motorola.com/test/echo" >> >> >> xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" >> >> >> xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="echo" >> >> >> targetNamespace="http://motorola.com/test/echo"> >> >> >> <wsdl:types> >> >> >> <xsd:schema >> >> >> targetNamespace="http://motorola.com/test/echo"> >> >> >> <xsd:element name="Echo"> >> >> >> <xsd:complexType> >> >> >> <xsd:sequence> >> >> >> <xsd:element name="in" >> >> >> type="xsd:string"></xsd:element> >> >> >> </xsd:sequence> >> >> >> </xsd:complexType> >> >> >> </xsd:element> >> >> >> <!--<xsd:element name="EchoResponse"> >> >> >> <xsd:complexType> >> >> >> <xsd:sequence> >> >> >> <xsd:element >> >> name="out" >> >> >> type="xsd:string"/> >> >> >> </xsd:sequence> >> >> >> </xsd:complexType> >> >> >> </xsd:element>--> >> >> >> </xsd:schema> >> >> >> </wsdl:types> >> >> >> >> >> >> <wsdl:message name="echoRequest"> >> >> >> <wsdl:part element="tns:Echo" name="in"/> >> >> >> </wsdl:message> >> >> >> <wsdl:message name="echoResponse"> >> >> >> <wsdl:part type="xsd:boolean" name="out"/> >> >> >> </wsdl:message> >> >> >> >> >> >> <wsdl:portType name="EchoPortType"> >> >> >> <wsdl:operation name="echo"> >> >> >> <wsdl:input message="tns:echoRequest"/> >> >> >> <wsdl:output message="tns:echoResponse"/> >> >> >> </wsdl:operation> >> >> >> </wsdl:portType> >> >> >> >> >> >> <wsdl:binding name="EchoBinding" type="tns:EchoPortType"> >> >> >> <soap:binding style="document" >> >> >> transport="http://schemas.xmlsoap.org/soap/http"/> >> >> >> <wsdl:operation name="echo"> >> >> >> <soap:operation >> >> >> soapAction="http://motorola.com/test/echo/echo"/> >> >> >> <wsdl:input> >> >> >> <soap:body use="literal"/> >> >> >> </wsdl:input> >> >> >> <wsdl:output> >> >> >> <soap:body use="literal"/> >> >> >> </wsdl:output> >> >> >> </wsdl:operation> >> >> >> </wsdl:binding> >> >> >> >> >> >> <wsdl:service name="EchoService"> >> >> >> <wsdl:port binding="tns:EchoBinding" >> name="EchoPort"> >> >> >> <soap:address >> >> >> location="http://0.0.0.0:9999/echo"/> >> >> >> </wsdl:port> >> >> >> </wsdl:service> >> >> >> </wsdl:definitions> >> >> >> >> >> >> consumer-http-su: xbean.xml >> >> >> --------------------------------- >> >> >> <beans xmlns:http="http://servicemix.apache.org/http/1.0" >> >> >> xmlns:test="http://motorola.com/test/echo"> >> >> >> >> >> >> <http:endpoint service="test:EchoService" >> >> >> endpoint="EchoPort" >> >> >> role="consumer" >> >> >> locationURI="http://0.0.0.0:9999/echo/" >> >> >> defaultMep=" http://www.w3.org/2004/08/wsdl/in-out" >> >> >> soap="true" /> >> >> >> >> >> >> </beans> >> >> >> >> >> >> So I am using the same values for http:endpoint >> >> >> service="test:EchoService", endpoint="EchoPort" in my echo service >> >> >> consumer-http-su and in the provider-http-su of SA_reteive SA which >> is >> >> >> retrieving the messages. This duplicay is giving the problem. >> >> >> >> >> >> Please help, as I am not able to figure out to define the proper >> >> routing >> >> >> of the messages beteen SU and across SA. >> >> >> >> >> >> Regards, >> >> >> Gaurav >> >> >> >> >> >> >> >> >> Gert Vanthienen wrote: >> >> >>> >> >> >>> Guarav, >> >> >>> >> >> >>> Is this the only change that is necessary in the XSL file to >> switch >> >> to >> >> >>> version 2.0? >> >> >>> >> >> >>> For what the saxon dependency is concerned: >> >> >>> The previous version of the page used the >> >> >>> servicemix-lwcontainer-service-unit archetype to create the >> >> >>> bridge-xslt-su. I have changed that to use >> >> >>> servicemix-saxon-xslt-service-unit and that one should >> automatically >> >> put >> >> >>> the correct dependency in there to start with. >> >> >>> >> >> >>> Gert >> >> >>> >> >> >>> gauravsonline wrote: >> >> >>>> Thank you so much. Would like to suggest two more small changes, >> >> though >> >> >>>> not >> >> >>>> important but it would make the things more concrete. >> >> >>>> >> >> >>>> Actually in the XSLT SU, the xsl:stylesheet version is "1.0", >> which >> >> >>>> should >> >> >>>> be "2.0". If not the case then servicemix gives a warning that >> >> "saxon >> >> >>>> engine >> >> >>>> is 2.0 but the stylesheet version is 1.0". >> >> >>>> >> >> >>>> Secondly, the saxon dependency has to be added in the pom.xml >> file >> >> for >> >> >>>> XSLT >> >> >>>> SU. >> >> >>>> >> >> >>>> <dependencies> >> >> >>>> <dependency> >> >> >>>> <groupId>org.apache.servicemix</groupId> >> >> >>>> <artifactId>servicemix-saxon</artifactId> >> >> >>>> <version>3.1-incubating-SNAPSHOT</version> >> >> >>>> </dependency> >> >> >>>> </dependencies> >> >> >>>> >> >> >>>> Hope this makes sense. As of know I just have these many changes >> >> only. >> >> >>>> >> >> >>>> Also thanks for ur reply on the second use case. I will now work >> on >> >> >>>> that. >> >> >>>> >> >> >>>> Regards.... >> >> >>>> Gaurav >> >> >>>> >> >> >>>> >> >> >>>> Gert Vanthienen wrote: >> >> >>>> >> >> >>>>> L.S., >> >> >>>>> >> >> >>>>> >> >> >>>>> First of all, I have changed >> >> >>>>> >> >> >> http://cwiki.apache.org/confluence/display/SM/Creating+a+protocol+bridge. >> >> >>>>> Could you check if all necessary changes have been done? This >> page >> >> >>>>> will >> >> >>>>> get replicated to the main site after a while... >> >> >>>>> >> >> >>>>> For your second use case: if you do not need any transformations >> on >> >> >>>>> the >> >> >>>>> message content, you can create a service assembly with two >> service >> >> >>>>> units: >> >> >>>>> - one SU based on servicemix-jms, defining the JMS consumer >> >> endpoint >> >> >>>>> to >> >> >>>>> read messages from a JMS queue (cfr. >> >> >>>>> http://incubator.apache.org/servicemix/servicemix-jms.html for >> >> >>>>> configuration options) >> >> >>>>> - the other SU based on servicemix-http, defining the HTTP >> provider >> >> >>>>> endpoint which points to your webservice (cfr. >> >> >>>>> http://incubator.apache.org/servicemix/servicemix-http.htmlfor >> >> >>>>> configuration options) >> >> >>>>> >> >> >>>>> Beware that the service/endpoint name of you HTTP provider >> endpoint >> >> >>>>> should match the names defined in your webservice's WSDL. You >> can >> >> >>>>> either use the same service/endpoint name on your JMS endpoint >> or >> >> use >> >> >>>>> the targetService/targetEndpoint attributes to do the routing. >> >> >>>>> >> >> >>>>> >> >> >>>>> Regards, >> >> >>>>> >> >> >>>>> Gert >> >> >>>>> >> >> >>>>> gauravsonline wrote: >> >> >>>>> >> >> >>>>>> HI, >> >> >>>>>> Thanks for your help. Actualy just now I resolved the problem. >> >> >>>>>> The problem was in the xslt-su. The archtyope by default >> generates >> >> >>>>>> the >> >> >>>>>> servicemix.xml file and in the example code its xbean.xmlfile. >> So >> >> >>>>>> just >> >> >>>>>> renaming the file from servicemix.xml to xbean.xml. The saxon >> >> >>>>>> dependency >> >> >>>>>> was >> >> >>>>>> ok. >> >> >>>>>> >> >> >>>>>> Now the next step is to read the messages from the queue and >> call >> >> a >> >> >>>>>> web >> >> >>>>>> service. Could you please help?? >> >> >>>>>> >> >> >>>>>> Also I would like to request the moderator if they could update >> >> this >> >> >>>>>> thing >> >> >>>>>> at : >> >> >>>>>> >> >> http://incubator.apache.org/servicemix/creating-a-protocol-bridge.html >> >> >>>>>> >> >> http://incubator.apache.org/servicemix/creating-a-protocol-bridge.html >> >> >>>>>> >> >> >>>>>> in the "XSLT SU" section, as this has costed me two days to >> >> resolve. >> >> >>>>>> >> >> >>>>>> Thanks all for your help! >> >> >>>>>> >> >> >>>>> >> >> >>>>> >> >> >>>> >> >> >>>> >> >> >>> >> >> >>> >> >> >>> >> >> >> >> >> >> >> >> > >> >> > >> >> >> >> -- >> >> View this message in context: >> >> >> http://www.nabble.com/%22Creating-a-protocol-bridge%22-tutorial%27s-configs-are-different-from-Bridge-example%27s-tf3162370s12049.html#a10601663 >> >> Sent from the ServiceMix - User mailing list archive at Nabble.com. >> >> >> >> >> > >> > >> > -- >> > Cheers, >> > Guillaume Nodet >> > ------------------------ >> > Principal Engineer, IONA >> > Blog: http://gnodet.blogspot.com/ >> > >> > >> >> -- >> View this message in context: >> http://www.nabble.com/%22Creating-a-protocol-bridge%22-tutorial%27s-configs-are-different-from-Bridge-example%27s-tf3162370s12049.html#a10623352 >> Sent from the ServiceMix - User mailing list archive at Nabble.com. >> >> > > > -- > Cheers, > Guillaume Nodet > ------------------------ > Principal Engineer, IONA > Blog: http://gnodet.blogspot.com/ > > -- View this message in context: http://www.nabble.com/%22Creating-a-protocol-bridge%22-tutorial%27s-configs-are-different-from-Bridge-example%27s-tf3162370s12049.html#a10624002 Sent from the ServiceMix - User mailing list archive at Nabble.com.
-- Cheers, Guillaume Nodet ------------------------ Principal Engineer, IONA Blog: http://gnodet.blogspot.com/
