hi all,
      i tried jms example with my own configuration xml.The client sends to
the topic "demo.org.servicemix.source"
the jms component receives it.But the problem is with transferring this
message to another JmsSenderComponent.
As given in the servicemix.xml for JMS-Binding , i dont want to use the
activationspec tag
        <sm:activationSpec componentName="inputReceiver"        
                 service="my:inputReceiver"
                destinationService="my:outputSender">
which would directly say the destination service.Is there any other way to
mention the destination service.
My xml would list all the components in this way and here is my complete
xml.

<beans>

  <!-- the JBI container -->
  <!-- the JBI container -->
  <bean id="jbi"
class="org.apache.servicemix.jbi.container.SpringJBIContainer">
    <property name="embedded" value="true" />
    <property name="componentNames">
      <list>
        <value>outputSender</value>
        <value>inputReceiver</value>
      </list>
    </property>
  </bean>
  

  <!-- components within the JBI container -->
  <!-- outputSender -->

 <bean id="outputSender"
class="src.com.jeffhanson.esb.servicemix.JmsSenderComponent">
 <property name="template">
 <bean class="org.springframework.jms.core.JmsTemplate">
 <property name="connectionFactory">
  <ref local="jmsFactory" /> 
  </property>
  <property name="defaultDestinationName" value="demo.org.servicemix.result"
/> 
  <property name="pubSubDomain" value="true" /> 
  </bean>
  </property>
  
  </bean>
   
  <!-- END outputSender -->
  <!-- inputReceiver -->
  <bean id="inputReceiver"
class="src.com.jeffhanson.esb.servicemix.JmsInUsingJCABinding">
  <property name="jcaContainer" ref="jencks" /> 
  <property name="activationSpec">
  <bean id="ActiveMQActivationSpec"
class="org.apache.activemq.ra.ActiveMQActivationSpec">
  <property name="destination" value="demo.org.servicemix.source" /> 
  <property name="destinationType" value="javax.jms.Topic" /> 
  </bean>
  </property>
  </bean>

<!-- END inputReceiver -->

<!-- jencks -->
 <bean id="jencks" class="org.jencks.JCAContainer" singleton="true">
 <property name="bootstrapContext">
 <bean class="org.jencks.factory.BootstrapContextFactoryBean">
  <property name="threadPoolSize" value="25" /> 
  </bean>
  </property>
 <property name="resourceAdapter">
 <bean id="activeMQResourceAdapter"
class="org.apache.activemq.ra.ActiveMQResourceAdapter" singleton="true">
 <property name="serverUrl" value="tcp://localhost:61616" /> 
 </bean>
 </property>
 </bean>
 <!-- END jencks -->
 
 <!--jms factory-->
  <bean id="jmsFactory"
class="org.apache.activemq.pool.PooledConnectionFactory">
  <property name="connectionFactory">
  <bean class="org.apache.activemq.ActiveMQConnectionFactory">
  <property name="brokerURL">
  <value>tcp://localhost:61616</value> 
  </property>
  </bean>
  </property>
  </bean>
 
 <!--END jms factory-->
 <!-- broker 
 <bean id="broker" class="org.apache.activemq.xbean.BrokerFactoryBean">
 <property name="config" value="classpath:activemq.xml" /> 
 <property name="start" value="true" />
  </bean>-->
 
  <bean id="transactionContextManager"
class="org.jencks.factory.TransactionContextManagerFactoryBean" /> 
  <bean id="transactionManager"
class="org.jencks.factory.GeronimoTransactionManagerFactoryBean" /> 
 <!--added
          <bean id="aspec"
class="org.apache.servicemix.jbi.container.ActivationSpec">
          <property name="id" value="receiver"/>
          <property name="service" ref="receiverServiceName"/>
          <property name="endpoint" value="receiver"/>
          <property name="component">
          <bean
class="src.com.jeffhanson.esb.servicemix.JmsReceiverComponent"/>
          </property>     
          </bean> -->
          
 <!--end
 <bean id="receiver"
class="src.com.jeffhanson.esb.servicemix.JmsReceiverComponent" /> -->

</beans>

and inside my JmsInbinding class onMessage() method i have the following
code.


 public void onMessage(Message jmsMessage) {
     
        try {
                System.out.println("Received: " + jmsMessage);
                ComponentContext ctx= getContext();
         InOnly messageExchange =
ctx.getDeliveryChannel().createExchangeFactory().createInOnlyExchange();
            NormalizedMessage inMessage = messageExchange.createMessage();
            SourceTransformer st= new SourceTransformer();
            try {
                
                marshaler.toNMS(inMessage, jmsMessage);
                System.out.println("marshaled to nm");
                System.out.println("set  nm");
               //added now
             
            
   resolver = new ServiceNameEndpointResolver( new
QName("http://servicemix.org/example/";, "sender"));
                ServiceEndpoint destination = null;
                System.out.println("Assigned Resolver:"+resolver);  
      
                if (resolver != null)
                {    System.out.println("resolver----++>"+resolver); 
                
                     destination =
resolver.resolveEndpoint(getContext(),messageExchange,NullEndpointFilter.getInstance());
                     System.out.println("resolver----++>"+resolver);  
                }
                if (destination != null)
                {
                 
                    System.out.println("Assigned Destination:"+destination);
                  
                    messageExchange.setEndpoint(destination);
                }
                 
        }
            catch (JMSException e) {
                messageExchange.setError(e);
                messageExchange.setStatus(ExchangeStatus.ERROR);
            }
        }
        catch (JBIException e) {
            throw new RuntimeJBIException(e);
        }
    }



i get the following exception
11:26:23,872 ERROR [ActiveMQSession] error dispatching message: 
org.apache.servicemix.jbi.RuntimeJBIException:
org.apache.servicemix.jbi.NoServiceAvailableException: Cannot find an
instance of the service: {http://servicemix.org/example/}sender
        at
src.com.jeffhanson.esb.servicemix.JmsInBinding.onMessage(JmsInBinding.java:141)
        at
org.jencks.LocalTransactionEndpoint.onMessage(LocalTransactionEndpoint.java:68)
        at
org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.onMessage(MessageEndpointProxy.java:120)
        at
org.apache.activemq.ra.MessageEndpointProxy.onMessage(MessageEndpointProxy.java:60)
        at org.apache.activemq.ActiveMQSession.run(ActiveMQSession.java:692)
        at 
org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:163)
        at
org.apache.geronimo.connector.work.WorkerContext.run(WorkerContext.java:291)
        at EDU.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run(Unknown
Source)
        at java.lang.Thread.run(Thread.java:595)
Caused by: org.apache.servicemix.jbi.NoServiceAvailableException: Cannot
find an instance of the service: {http://servicemix.org/example/}sender
        at
org.apache.servicemix.jbi.resolver.ServiceNameEndpointResolver.createServiceUnavailableException(ServiceNameEndpointResolver.java:60)
        at
org.apache.servicemix.jbi.resolver.EndpointResolverSupport.resolveEndpoint(EndpointResolverSupport.java:39)
        at
src.com.jeffhanson.esb.servicemix.JmsInBinding.onMessage(JmsInBinding.java:119)
        ... 8 more
I think the problem is with registering the JmsSenderComponent.Could anyone
suggest me a solution for this pls...

thanks in advance.

-- 
View this message in context: 
http://www.nabble.com/Jms-component-tf2374227.html#a6614706
Sent from the ServiceMix - User mailing list archive at Nabble.com.

Reply via email to