Remove the need to have a ConnectionFactory in case of oneway invocation path 
on the service side
-------------------------------------------------------------------------------------------------

                 Key: TUSCANY-2839
                 URL: https://issues.apache.org/jira/browse/TUSCANY-2839
             Project: Tuscany
          Issue Type: Bug
            Reporter: Rashmi Hunt


This is  an issue in the case of oneway where Tuscany code path needs 
Connection Factory where it's not necessary to have one as there is no response 
in case of oneway. 
When a oneway message is received at the service,  
TransportServiceInterceptor.invoke()  method calls invokeRequest()  before 
calling invokeResponse(). 
TransportServiceInterceptor.invokeRequest()  is trying to create JMS 
connection/session by calling  
context.setJmsSession(context.getJmsResourceFactory().createSession()),  
The session created here  later gets used in various 
xxxMessageProcessor.createJMSMessage() to create a JMS message. The issue here 
is JmsResourceFactory().createSession(), 
tries to create a connection and there is no Connection Factory defined in SCDL 
for the service and there is no need to have default connectionFactory, 
'ConnectionFactory'
either. This call ends up in  connectionfactory not found exception since the  
jndi lookup fails.

In oneway case, why there is a need to call  
'context.setJmsSession(context.getJmsResourceFactory().createSession())' in 
TransportServiceInterceptor.invokeRequest() method?  since there is no need to 
create a message using this jms session as there is no response.  Trying to 
comment  this call causes issues in downstream classes like xxxMessageProcessor 
 classes. This entire invocation path should 
understand oneway pattern and right now there isn't way to clearly seperate.

Sample SCDL for reference and service for this issue

      <reference name="component_2">
            
          <interface.java interface="test.sca.binding.sca.oneway.Component_2"/>
          <binding.jms>
              <destination name="jms/oneway"/>
                  <connectionFactory name="jms/oneway_cf"/>
          </binding.jms>
      </reference>

    <component name="Component_2">
      <implementation.java class="test.sca.binding.sca.oneway.Component_2Impl"/>
  
        <service name="Component_2">
            <binding.jms>
              <destination name="jms/oneway"/>
              <activationSpec name="jms/SCA_JMS_AS"/>
          </binding.jms>
        </service>
        <reference name="component_3"  target="Component_3"/>
    </component>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to