On Thu, Jan 5, 2012 at 11:58 AM, Dave Sowerby <[email protected]> wrote:
> Hi All,
>
> I've got a webapp which is deployed using Tuscany 1.5 to provide a service
> using binding.ws using a jms transport.  However, we've found a bug in the
> underlying Axis2 implementation which means that the jms messages are in
> fact processed using a thread pool of size 1, which can never change.  The
> bug is resolved in Axis 1.5, but from what I've seen Tuscany has only made
> use of this in the 2.0 branch.
>
> While my preferred option would be to override the problem class and making
> use of the transportReceiver configuration options for the axis jms
> transport in order to make use of this class, delegating all other behaviour
> other than the thread pool construction back to the axis implementation, I'm
> not so sure as to how I can inject these preferences into the axis runtime
> constructed by Tuscany.
>
> I'd like some insight as to whether either of these options would be
> possible:
>
> o provide further options to the binding.ws specification in the composite
> file itself, though from my understanding of the axis2 configuration options
> this isn't possible.
> o providing an alternate axis2.xml configuration, in a similar manner to
> that which Tuscany provides but in a location which would hopefully be
> selected first by the classloader.
>
> Unfortunately, making use of another Tuscany version is not really possible
> - plus as I say I believe an officially released version of Tuscany using
> this version of Axis doesn't exist - or a new release would take time to
> construct.
>
> Any thoughts would be very much appreciated.
>
> Cheers,
>
> Dave.

Hi Dave

As a matter of interest you don't happen to know which Axis bug this
was fixed under. It would be useful to look at precisely what
properties etc. are involved and what they fixed.

Just from visual inspection I see that the workerPool that appears to
get used in the JMSListener [1] is created in the start method with no
external configuration.

    public void start() throws AxisFault {
        // create thread pool of workers
        workerPool = new ThreadPoolExecutor(
                1,
                WORKERS_MAX_THREADS, WORKER_KEEP_ALIVE, TIME_UNIT,
                new LinkedBlockingQueue(),
                new org.apache.axis2.util.threadpool.DefaultThreadFactory(
                        new ThreadGroup("JMS Worker thread group"),
                        "JMSWorker"));

[1] 
http://svn.apache.org/repos/asf/axis/axis2/java/core/branches/java/1_4/modules/kernel/src/org/apache/axis2/transport/jms/JMSListener.java

Simon

-- 
Apache Tuscany committer: tuscany.apache.org
Co-author of a book about Tuscany and SCA: tuscanyinaction.com

Reply via email to