Re: Proposal for a new JMS configuration for CXF

2008-10-06 Thread Daniel Kulp

I completely agree with MUCH of this.   I'd love it if the jaxws:client 
and jaxws:endpoint/server things had a:

jaxws:conduit
bean ... or jms or something
/jaxws:conduit

type thing that would configure that.   It's SLIGHTLY more complicated by 
the presence of the conduit selector things in the client which allows 
load balancing and such.   However, that could be made even more 
configurable with something like:

jaxws:conduit selector=...RoundRobinSelector
bean /
bean /
bean /
bean /
/jaxws:conduit

(default would be the current Upfront selector.)



Dan



On Sunday 05 October 2008, Christian Schneider wrote:
 Hi Willem,

 if I understand it right there is always one conduit for each client
 or endpoint. So I would not try to reference a conduit config via the
 endpoint name like it is done now. The conduit can as well be
 described as a parameter of client or endpoint. I really do not like
 the way the old JMSConduit configured itself. Extracting the
 configuration should be outside of the object to be configured.

 The way camel does this is ok. But instead of referencing a jms
 configuration in the address line I would simply set it as a parameter
 in client or endpoint. If you want to centralize certain parts of the
 config spring still has the ref= to reference a central config bean.
 Additionally we can use abstract config beans so several jms
 configurations can share some common parts.

 By simply being a property of the client or endpoint they can simply
 add it to the endpointInfo. So the TransportFactory can extract it and
 set the Conduit or Destination with it.

 Greetings

 Christian

 Willem Jiang schrieb:
  You could take a look at the configuration of camel transport for
  CXF. we inject the camel context (which could be an extension of
  TransportConfig) into the CamelTransportFactory or the
  {CamelConduit|CamelDestion}.
 
  Endpoint can find the CamelTransportFactory by using the transport
  id or transport perfix like 'camel:'.  Each Conduit or Destination
  configuration has its own id, when the endpoint find the transport
  factory and create the conduit or destination, current CXF
  configuration will call the 'configure' method which will seach the
  spring context and configure the conduit or destination according
  the bean id.
 
  If you want to add the TransportConfig into the endpoint , we need
  to hack the code of endpoint looking up the transport factory, and
  set the TransportConfig into the transport factory or the
  {conduit|destination}.
 
  Any thoughts?



-- 
J. Daniel Kulp
[EMAIL PROTECTED]
http://www.dankulp.com/blog


Re: Proposal for a new JMS configuration for CXF

2008-10-06 Thread Christian Schneider

Hi Dan,

that´s interesting I had never seen any other ConduitSelector than the 
Upfront conduitelector in practice. But I see it can be handy with http.


What about the following proposal:

jaxws:client
   jaxws:conduitSelector
   upFrontConduitSelector config-ref=jmsConfig/
   /jaxws:conduitselector
/jaxws

jaxws:client
   jaxws:conduitSelector
   roundRobinConduitSelector
   config-ref=jmsConfig/
   config-ref=jmsConfig2/
   roundRobinConduitSelector
   /jaxws:conduitselector
/jaxws

We already have the conduitSelector element. So we simply would have to 
add a property TransportConfig config to UpfrontConduitSelector. A 
RoundRobin Conduitselector would

of course need a list of configs.

Greetings

Christian

Daniel Kulp schrieb:
I completely agree with MUCH of this.   I'd love it if the jaxws:client 
and jaxws:endpoint/server things had a:


jaxws:conduit
bean ... or jms or something
/jaxws:conduit

type thing that would configure that.   It's SLIGHTLY more complicated by 
the presence of the conduit selector things in the client which allows 
load balancing and such.   However, that could be made even more 
configurable with something like:


jaxws:conduit selector=...RoundRobinSelector
bean /
bean /
bean /
bean /
/jaxws:conduit

(default would be the current Upfront selector.)



Dan



On Sunday 05 October 2008, Christian Schneider wrote:
  

Hi Willem,

if I understand it right there is always one conduit for each client
or endpoint. So I would not try to reference a conduit config via the
endpoint name like it is done now. The conduit can as well be
described as a parameter of client or endpoint. I really do not like
the way the old JMSConduit configured itself. Extracting the
configuration should be outside of the object to be configured.

The way camel does this is ok. But instead of referencing a jms
configuration in the address line I would simply set it as a parameter
in client or endpoint. If you want to centralize certain parts of the
config spring still has the ref= to reference a central config bean.
Additionally we can use abstract config beans so several jms
configurations can share some common parts.

By simply being a property of the client or endpoint they can simply
add it to the endpointInfo. So the TransportFactory can extract it and
set the Conduit or Destination with it.

Greetings

Christian

Willem Jiang schrieb:


You could take a look at the configuration of camel transport for
CXF. we inject the camel context (which could be an extension of
TransportConfig) into the CamelTransportFactory or the
{CamelConduit|CamelDestion}.

Endpoint can find the CamelTransportFactory by using the transport
id or transport perfix like 'camel:'.  Each Conduit or Destination
configuration has its own id, when the endpoint find the transport
factory and create the conduit or destination, current CXF
configuration will call the 'configure' method which will seach the
spring context and configure the conduit or destination according
the bean id.

If you want to add the TransportConfig into the endpoint , we need
to hack the code of endpoint looking up the transport factory, and
set the TransportConfig into the transport factory or the
{conduit|destination}.

Any thoughts?
  




  



--

Christian Schneider
---
http://www.liquid-reality.de



Re: Proposal for a new JMS configuration for CXF

2008-10-06 Thread Daniel Kulp
On Monday 06 October 2008, Eoghan Glynn wrote:
 - ensuring that the choice of conduit selector is validated against
 the presence or absence of fine-grained conduit beans, e.g. it
 wouldn't make sense to wire in any conduit beans at all when the
 deferred conduit selector is in use, as the whole idea here is to
 ensure that a conduit isn't created until we're sure we really need it
 (as we would never do so in the coloc case)

I think Christian's latest proposal covers this.  In the Upfront case, 
the Upfront bean can only contain a single conduit.   The RoundRobin 
would have a List of conduits, etc...   Each selector would have it's 
own configuration requirements.   Spring could validate that the 
requirements are met.

 - ensuring the multiplicity of conduit beans configured alongside a
 failover selector is consistent with the set of ports defined in the
 WSDL, as the CXF static failover strategy is based on burning the
 alternate ports into a multi-port service definition in the WSDL.

Well, this COULD actually remove that limitation.  A FailoverSelector 
could have a bunch of conduits configured via configuration (like 
roundrobin) and failover from one to the other.  Thus, the failover 
stuff would work for code first cases much better.   If the 
FailoverSelector doesn't have any conduits coming in from spring, it 
could use the multi-port strategy it currently uses.

Dan




 Cheers,
 Eoghan

 Daniel Kulp wrote:
  I completely agree with MUCH of this.   I'd love it if the
  jaxws:client and jaxws:endpoint/server things had a:
 
  jaxws:conduit
  bean ... or jms or something
  /jaxws:conduit
 
  type thing that would configure that.   It's SLIGHTLY more
  complicated by the presence of the conduit selector things in the
  client which allows load balancing and such.   However, that could
  be made even more configurable with something like:
 
  jaxws:conduit selector=...RoundRobinSelector
  bean /
  bean /
  bean /
  bean /
  /jaxws:conduit
 
  (default would be the current Upfront selector.)
 
 
 
  Dan
 
  On Sunday 05 October 2008, Christian Schneider wrote:
  Hi Willem,
 
  if I understand it right there is always one conduit for each- 
ensuring the multiplicity of conduit beans configured alongside a 
failover selector is consistent with the set of ports defined in the 
WSDL, as the CXF static failover str
  client or endpoint. So I would not try to reference a conduit
  config via the endpoint name like it is done now. The conduit can
  as well be described as a parameter of client or endpoint. I really
  do not like the way the old JMSConduit configured itself.
  Extracting the configuration should be outside of the object to be
  configured.
 
  The way camel does this is ok. But instead of referencing a jms
  configuration in the address line I would simply set it as a
  parameter in client or endpoint. If you want to centralize certain
  parts of the config spring still has the ref= to reference a
  central config bean. Additionally we can use abstract config beans
  so several jms configurations can share some common parts.
 
  By simply being a property of the client or endpoint they can
  simply add it to the endpointInfo. So the TransportFactory can
  extract it and set the Conduit or Destination with it.
 
  Greetings
 
  Christian
 
  Willem Jiang schrieb:
  You could take a look at the configuration of camel transport for
  CXF. we inject the camel context (which could be an extension of
  TransportConfig) into the CamelTransportFactory or the
  {CamelConduit|CamelDestion}.
 
  Endpoint can find the CamelTransportFactory by using the transport
  id or transport perfix like 'camel:'.  Each Conduit or Destination
  configuration has its own id, when the endpoint find the transport
  factory and create the conduit or destination, current CXF
  configuration will call the 'configure' method which will seach
  the spring context and configure the conduit or destination
  according the bean id.
 
  If you want to add the TransportConfig into the endpoint , we need
  to hack the code of endpoint looking up the transport factory, and
  set the TransportConfig into the transport factory or the
  {conduit|destination}.
 
  Any thoughts?

 
 IONA Technologies PLC (registered in Ireland)
 Registered Number: 171387
 Registered Address: The IONA Building, Shelbourne Road, Dublin 4,
 Ireland



-- 
J. Daniel Kulp
[EMAIL PROTECTED]
http://www.dankulp.com/blog


Re: Proposal for a new JMS configuration for CXF

2008-10-05 Thread Willem Jiang

Hi Christian,

Current CXF configuration support the wildcard naming. If you want to 
share the configuration between several endpoints' conduits, you could 
using the * in the name attribute of conduit or destination.
I agree we could do improvement on the current CXF configuration which 
doesn't provide a straight way for endpoint or client to configure the 
transport level objects.
Since we have to support the old configure way for current user in the 
coming up release version, adding a property on the EndpointInfo could 
be a safe and quick way for the change.


Here is another question for doing the transport configure from WSDL ?
I don't  do how could we put the transport configure property in the 
WSDL, and we still need to support it in the CXF future release.


Regards,

Willem

Christian Schneider wrote:

Hi Willem,

if I understand it right there is always one conduit for each client 
or endpoint. So I would not try to reference a conduit config via the 
endpoint name like it is done now. The conduit can as well be 
described as a parameter of client or endpoint. I really do not like 
the way the old JMSConduit configured itself. Extracting the 
configuration should be outside of the object to be configured.


The way camel does this is ok. But instead of referencing a jms 
configuration in the address line I would simply set it as a parameter 
in client or endpoint. If you want to centralize certain parts of the 
config spring still has the ref= to reference a central config bean. 
Additionally we can use abstract config beans so several jms 
configurations can share some common parts.


By simply being a property of the client or endpoint they can simply 
add it to the endpointInfo. So the TransportFactory can extract it and 
set the Conduit or Destination with it.


Greetings

Christian

Willem Jiang schrieb:
You could take a look at the configuration of camel transport for 
CXF. we
inject the camel context (which could be an extension of 
TransportConfig)

into the CamelTransportFactory or the {CamelConduit|CamelDestion}.

Endpoint can find the CamelTransportFactory by using the transport id or
transport perfix like 'camel:'.  Each Conduit or Destination 
configuration
has its own id, when the endpoint find the transport factory and 
create the
conduit or destination, current CXF configuration will call the 
'configure'

method which will seach the spring context and configure the conduit or
destination according the bean id.

If you want to add the TransportConfig into the endpoint , we need to 
hack

the code of endpoint looking up the transport factory, and set the
TransportConfig into the transport factory or the {conduit|destination}.

Any thoughts?
  






Re: Proposal for a new JMS configuration for CXF

2008-10-05 Thread Christian Schneider

Willem Jiang schrieb:

Hi Christian,

Current CXF configuration support the wildcard naming. If you want to 
share the configuration between several endpoints' conduits, you could 
using the * in the name attribute of conduit or destination.
I agree we could do improvement on the current CXF configuration which 
doesn't provide a straight way for endpoint or client to configure the 
transport level objects.
Since we have to support the old configure way for current user in the 
coming up release version, adding a property on the EndpointInfo could 
be a safe and quick way for the change.


Here is another question for doing the transport configure from WSDL ?
I don't  do how could we put the transport configure property in the 
WSDL, and we still need to support it in the CXF future release.


I would not support the JMSConfiguration in WSDL. Of course we could try 
to make a schema for it. But many aspects like setting a TaskExecutor 
can not be done in the WSDL. So I would leave to old configuration for 
WSDLs as is for the short run. To support a new WSDL config style I 
would try to implement the SOAP/JMS spec. It looks quite nice and would 
be a real standard. The implementation would build a JMSConfiguration 
object out of the information from the SOAP/JMS conforming WSDL.


Greetings

Christian

--

Christian Schneider
---
http://www.liquid-reality.de



Re: Proposal for a new JMS configuration for CXF

2008-09-01 Thread Christian Schneider

Hi Glen,

thanks for the link to the spec. That´s astonishing they use quite the 
same URL format (IRI) I imagined. I had not read the spec before. 
Perhaps they were inspired by camel too ;-) But they strictly map the 
IRI to message headers and properties. So we probably should set our own 
parameters separately from the URL.


The spec mostly talks about the configuration by WSDL. I think we should 
separate WSDL config from Spring config. The WSDL config typically is 
defined by standards authorities so I think
we would give away flexibility if we take this format also for our own 
internal config. Instead I would map the WSDL config to our internal config.


On the other hand we should make sure to implement all options that the 
Soap Jms spec defines. So implementing the spec will be quite easy.


Best regards

Christian

Glen Mazza schrieb:
Christian, I would take a look at the IBM document attached here:  
http://www.nabble.com/SOAP-JMS-binding-tool-changes-td19073747.html

and the specification it links to:
http://www.w3.org/Submission/SOAPJMS/

I'm unsure of the relation to these documents to what you're proposing, nor
am I necessarily recommending we do what they do, but I'm mentioning this in
case there is something important in these documents that you might have
overlooked in your suggestions.

Glen


Christian Schneider wrote:
  

Hi,

after Glen´s Mail about my tutorial for setting up JMS for CXF with 
Apache Camel on the dev list there was a discussion about improvements 
for the JMS config for CXF.
I have written a proposal how I think this could be done. My focus is 
only on the configuration syntax not the implementation but I think it 
can be done.
Here is the link to the proposal. I would be very interested in your 
opinions about this style of configuration:


http://www.liquid-reality.de/display/liquid/2008/08/30/Proposal+for+a+new+JMS+Transport+configuration+for+CXF

Best regards

Christian

--

Christian Schneider
---
http://www.liquid-reality.de






  



--

Christian Schneider
---
http://www.liquid-reality.de