Hi ant,

 Thank you for the replies; I have made some small changes to have my service 
exposed via binding.jms. I don't think this is the right way, but it works for 
me atleast for the time being. What I have done is added another bundle which 
will register an ActiveMQConnection factory object in the osgi service registry 
and made changes in the JMSREsourceFactoryImpl in org.apache.t.s.b.jms.provider 
bundle to access this same connection factory. This helped me to get my service 
part working.



The following method is modified in the JMSResourceFActoryImpl class...



protected void createConnection() throws NamingException, JMSException {

        ConnectionFactory connectionFactory 
=(ConnectionFactory)jndiLookUp(connectionFactoryName);

        if (connectionFactory == null) {

            // TODO: connection factory name may be a non-jndi name OSGi 
complaint lookup.

            BundleContext bundleContext = 
FrameworkUtil.getBundle(this.getClass())

            .getBundleContext();

            ServiceReference sr  =  
bundleContext.getServiceReference(ConnectionFactory.class.getName());

            if(sr != null) {

                  connectionFactory = 
(ConnectionFactory)bundleContext.getService(sr);

            }

            else{

                 throw new JMSBindingException("connection factory not found: " 
+ connectionFactoryName);

            }

        }

        connection = connectionFactory.createConnection();

    }







Also I have implemented the lookupPhysical(String jndiName) method in the same 
JMSResourceFactoryImpl using the same ConnectionFactory object registered in 
the service registry of the OSGi runtime.

On starting the service bundle I get the console output as



----------------Console O/P---------------------------

Nov 26, 2009 10:22:42 AM 
org.apache.tuscany.sca.binding.jms.host.DefaultJMSServiceListener 
registerListerner

INFO: JMS service 'HelloWorldService' listening on destination DestQueueA

Nov 26, 2009 10:22:42 AM 
org.apache.tuscany.sca.core.assembly.impl.EndpointRegistryImpl addEndpoint

INFO: Add endpoint - (@19275957)Endpoint:  URI = 
HelloWorldComponent#service-binding(HelloWorldService/HelloWorldService)

------------------------------------------------------------------





Currently I am looking at how to make a client use this service. The client 
reference running in another osgi runtime is not able to use this exposed 
service. I get error here as referenced service not found.



My client composite is somewhat like as shown below.



<component name="HelloWorldClientComponent">

        <tuscany:implementation.osgi bundleSymbolicName="HelloWorldClient" 
bundleVersion="1.0.0" />

        <service name="HelloWorldClientProcessor">

            <binding.ws/>

        </service>

        <reference name="serviceA">

           <binding.jms 
initialContextFactory="org.apache.activemq.jndi.ActiveMQInitialContextFactory" 
jndiURL="tcp://localhost:61616">

               <destination jndiName="DestQueueA"/>

               <response>

                  <destination jndiName="RespQueueA"/>

               </response>

           </binding.jms>

        </reference>

    </component>



If I start my client I get the following error...



Nov 26, 2009 10:30:52 AM 
org.apache.tuscany.sca.builder.impl.ComponentBuilderImpl [Composite: 
{http://docs.oasis-open.org/ns/opencsa/sca/200903}, Component: 
HelloWorldClientComponent] (ReferenceNotFoundForComponentReference)

SEVERE: Component type reference not found for component reference: Component = 
HelloWorldClientComponent Reference = serviceA

Nov 26, 2009 10:30:54 AM org.apache.tuscany.sca.node.osgi.impl.NodeManager 
bundleStarted

SEVERE: org.oasisopen.sca.ServiceRuntimeException: [Composite: 
{http://docs.oasis-open.org/ns/opencsa/sca/200903}, Component: 
HelloWorldClientComponent] - Component type reference not found for component 
reference: Component = HelloWorldClientComponent Reference = serviceA

java.lang.IllegalStateException: org.oasisopen.sca.ServiceRuntimeException: 
[Composite: {http://docs.oasis-open.org/ns/opencsa/sca/200903}, Component: 
HelloWorldClientComponent] - Component type reference not found for component 
reference: Component = HelloWorldClientComponent Reference = serviceA

      at org.apache.tuscany.sca.node.impl.NodeImpl.start(NodeImpl.java:176)

      at 
org.apache.tuscany.sca.node.osgi.impl.NodeManager.bundleStarted(NodeManager.java:117)

      at 
org.apache.tuscany.sca.node.osgi.impl.NodeManager.bundleChanged(NodeManager.java:139)

      at 
org.eclipse.osgi.framework.internal.core.BundleContextImpl.dispatchEvent(BundleContextImpl.java:916)

      at 
org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:220)

      at 
org.eclipse.osgi.framework.eventmgr.ListenerQueue.dispatchEventSynchronous(ListenerQueue.java:149)

      at 
org.eclipse.osgi.framework.internal.core.Framework.publishBundleEventPrivileged(Framework.java:1350)

      at 
org.eclipse.osgi.framework.internal.core.Framework.publishBundleEvent(Framework.java:1301)

      at 
org.eclipse.osgi.framework.internal.core.BundleHost.startWorker(BundleHost.java:362)

      at 
org.eclipse.osgi.framework.internal.core.AbstractBundle.resume(AbstractBundle.java:370)

      at 
org.eclipse.osgi.framework.internal.core.Framework.resumeBundle(Framework.java:1068)

      at 
org.eclipse.osgi.framework.internal.core.StartLevelManager.resumeBundles(StartLevelManager.java:557)

      at 
org.eclipse.osgi.framework.internal.core.StartLevelManager.incFWSL(StartLevelManager.java:464)

      at 
org.eclipse.osgi.framework.internal.core.StartLevelManager.doSetStartLevel(StartLevelManager.java:248)

      at 
org.eclipse.osgi.framework.internal.core.StartLevelManager.dispatchEvent(StartLevelManager.java:445)

      at 
org.eclipse.osgi.framework.eventmgr.EventManager.dispatchEvent(EventManager.java:220)

      at 
org.eclipse.osgi.framework.eventmgr.EventManager$EventThread.run(EventManager.java:330)

Caused by: org.oasisopen.sca.ServiceRuntimeException: [Composite: 
{http://docs.oasis-open.org/ns/opencsa/sca/200903}, Component: 
HelloWorldClientComponent] - Component type reference not found for component 
reference: Component = HelloWorldClientComponent Reference = serviceA

      at 
org.apache.tuscany.sca.node.impl.NodeFactoryImpl.analyzeProblems(NodeFactoryImpl.java:174)

      at 
org.apache.tuscany.sca.node.impl.NodeFactoryImpl.configureNode(NodeFactoryImpl.java:275)

      at org.apache.tuscany.sca.node.impl.NodeImpl.start(NodeImpl.java:135)

      ... 16 more





Would you able to comment on what is creating the problem? Thank you and 
appreciate very much your comments and support.



Regards

Roshan













-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of ant elder
Sent: Tuesday, November 24, 2009 2:52 PM
To: Joseph, Roshan IN BLR SISL
Subject: Re: binding.jms in SCA Java 2.0 M4



Hi Roshan, sorry I've been snowed under and not had much of a chance

to look at this yet so dont have much to add here. I'll try to look at

it more shortly and maybe try to get one of the other Tuscany OSGi

experts to have a look too as its more of an OSGi runtime thing than a

JMS binding issue.



   ...ant



Reply via email to