cxf-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Benson Margulies <bimargul...@gmail.com>
Subject Re: Either my new JMS sample is confused or I am ...
Date Sun, 19 Sep 2010 18:08:36 GMT
it figures out the transport ID for itself, or is there a snail in the house?

I'll try it.


On Sun, Sep 19, 2010 at 1:41 PM, Daniel Kulp <dkulp@apache.org> wrote:
> On Sunday 19 September 2010 1:33:41 pm Benson Margulies wrote:
>> Next question: does this work java-first via the JAX-WS API?
>
> In theory, yes.  :-)  Just use the full jms: url defined in the spec.  I think
> some of the transport system tests do this, but not 100% sure.
>
>
> Dan
>
>
>>
>> On Wed, Sep 15, 2010 at 10:34 PM, Daniel Kulp <dkulp@apache.org> wrote:
>> > On Wednesday 15 September 2010 2:33:47 pm Benson Margulies wrote:
>> >> This is from the java_first_jms sample that I cleaned up. Why is the URL
>> >> in the server factory trivial? Why doesn't it need to state the host
>> >> and the port? Is 61616 some sort of a default?
>> >
>> > This is part of what Willem and I were debating about earlier today.
>> >
>> > A bit of history of the JMS transport:
>> >
>> > In the OLD OLD JMS transport (2.0.x and early 2.1.x), the ONLY way to
>> > configure JMS stuff was via custom JMS extensions in the WSDL which
>> > interated with JNDI.   Thus, it only worked for wsdl first use cases.
>> >  The jms_pubsub and jms_queue demos are configured this way.
>> >
>> > At some point in there, we added SOME ability to configure things via
>> > spring config.  It's the same wsdl extensors, but configurable in spring
>> > config. That allowed some Java-first cases to work as the custom config
>> > could be specified in a spring cxf.xml config file.   That is how your
>> > 'new' sample is configured.   See src/main/resources/cxf.xml.  That's
>> > where the 61616 is configured into the cxf stuff.
>> >
>> > During 2.1.x timeframe, Christian re-wrote the JMS transport to allow use
>> > of the "normal" Spring JMS/Template stuff.  We don't have a sample for
>> > that, but the docs are at:
>> > http://cxf.apache.org/docs/using-the-jmsconfigfeature.html
>> > This made it much more intuitive for a Spring user to configure the JMS
>> > stuff and wire in the Spring JMS things (for things like the Spring
>> > transactions and stuff).
>> >
>> > In ALL of the above cases, the configuration for the broker URL and queue
>> > names and such are all part of the configuration elements.   The "jms://"
>> > URL was pretty much irrelevant.  It's ONLY purpose was to trigger the
>> > use of the JMS transport if you don't manually configure in a transport
>> > ID onto the service factory.
>> >
>> > With 2.3, we've implemented the SOAP over JMS specification.  Part of
>> > that specification actually provides for a URL format for the jms://
>> > URL.   With that spec, we can now completely do JMS without any of the
>> > above configuration and wsdl extensors and such.  It also allows pure
>> > Java first use case of SOAP over JMS without any config.  The
>> > jms-spec-demo shows use of the spec stuff, but it's still a wsdl first
>> > thing.  See the docs at:
>> > http://cxf.apache.org/docs/soap-over-jms-10-support.html
>> >
>> > It would be GOOD to update the java_first_jms sample to use the new
>> > soap/jms spec URL instead of the config.   Not required, but for 2.3, it
>> > would probably be the way we should promote the java-first case for JMS.
>> >
>> > Does that answer your question?
>> >
>> > Dan
>> >
>> >> Also, how would this look using the JAX-WS Endpoint class?
>> >>
>> >>
>> >>  boolean amqBroker = args.length > 0 &&
>> >> "-activemqbroker".equals(args[0]); if (amqBroker) {
>> >>             /*
>> >>              * The following make it easier to run this against
>> >> something other than ActiveMQ. You will have
>> >>              * to get a JMS broker onto the right port of localhost.
>> >>              */
>> >>             Class<?> brokerClass = ServerJMS.class.getClassLoader()
>> >>                 .loadClass("org.apache.activemq.broker.BrokerService");
>> >>             if (brokerClass == null) {
>> >>                 System.err.println("ActiveMQ is not in the classpath,
>> >> cannot launch broker.");
>> >>                 return;
>> >>             }
>> >>             Object broker = brokerClass.newInstance();
>> >>             Method addConnectorMethod =
>> >> brokerClass.getMethod("addConnector", String.class);
>> >>             addConnectorMethod.invoke(broker, "tcp://localhost:61616");
>> >>             Method startMethod = brokerClass.getMethod("start");
>> >>             startMethod.invoke(broker);
>> >>         }
>> >>
>> >>         Object implementor = new HelloWorldImpl();
>> >>         JaxWsServerFactoryBean svrFactory = new
>> >> JaxWsServerFactoryBean(); svrFactory.setServiceClass(HelloWorld.class);
>> >>         svrFactory.setAddress("jms://");
>> >>         svrFactory.setServiceBean(implementor);
>> >>         svrFactory.create();
>> >>
>> >>         System.out.println("Server ready... Press any key to exit");
>> >>         System.in.read();
>> >>         System.out.println("Server exiting");
>> >>         System.exit(0);
>> >
>> > --
>> > Daniel Kulp
>> > dkulp@apache.org
>> > http://dankulp.com/blog
>
> --
> Daniel Kulp
> dkulp@apache.org
> http://dankulp.com/blog
>

Mime
View raw message