4 Replies Latest reply on Oct 2, 2009 8:39 AM by sbutt

    how to have more than 1 templates in one service action?

    sbutt

      Hi All,
      I have defined an ESB service with a single action containing more than 1 xslt templates.

      <service category="IBN" name="Broker" description="The implementation of dispatcher for event notification">
       <listeners>
       <jms-listener name="JMS-Gateway" busidref="IBNBroker"/>
       </listeners>
       <actions mep="OneWay">
       <action name="registerSubscriber" class="com.traveltainment.integra.middleware.ibn.IBNBroker">
       <property name="service-template-pool-name" value="BrokerServiceRegister"/>
       <property name="xsl-resources" value="/META-INF/xsl/RegisterSubscriber.xsl"/>
       <property name="templateRegister" value="/META-INF/xsl/RegisterSubscriber.xsl"/>
       <property name="xsl-resources" value="/META-INF/xsl/SubscribingRQ2RS.xsl"/>
       <property name="template" value="/META-INF/xsl/SubscribingRQ2RS.xsl"/>
       <property name="xsl-resources" value="/META-INF/xsl/RS2SOAP.xsl"/>
       <property name="templateResponse" value="/META-INF/xsl/RS2SOAP.xsl"/>
       <property name="select-query" value="SELECT url, protocol, host, jms_destination
      FROM IntegraDB.ibn_event_registry"/>
       </action>
       </actions>
       </service>


      The reason why I have more than 1 templates in my action is because I want to stay inside my IBNBroker and apply different transformation.

      If I define a separate action for each template then the control would be shifted.

      Now the problem I am facing in my above templates' definition is that at runtime I get the exception that one of the templates is null. I don't know why is it occurring? How can i have more than 1 templates in the same template pool inside a single action?

      thanks.

        • 1. Re: how to have more than 1 templates in one service action?
          kconner

           

          "sbutt" wrote:
          If I define a separate action for each template then the control would be shifted.

          Not sure why this is an issue, can you explain further?

          "sbutt" wrote:
          Now the problem I am facing in my above templates' definition is that at runtime I get the exception that one of the templates is null. I don't know why is it occurring? How can i have more than 1 templates in the same template pool inside a single action?


          Sorry, can you explain more about the exception you are seeing? This would appear to be your code and we are not sure what you are trying.

          Some comments though

          The way in which the properties are mapped depends on how you specify them

          If you use the name/value approach, as you have done, then they are mapped onto attributes of the configuration element and only one should be allowed.

          If you specify them within the element contents then a new child property element will be created, containing the contents.

          What is your configuration intended to do??

          Kev

          • 2. Re: how to have more than 1 templates in one service action?
            sbutt

            here is now what i'm doing:

            <service category="IBN" name="Broker" description="The implementation of dispatcher for event notification">
             <listeners>
             <jms-listener name="JMS-Gateway" busidref="IBNBroker"/>
             </listeners>
             <actions mep="OneWay">
             <action name="registerSubscriberRR" class="com.traveltainment.integra.middleware.ibn.IBNBroker">
             <property name="min-pooled-objects" value="3"/>
             <property name="max-pooled-objects" value="20"/>
             <property name="ttl" value="10000"/>
             <property name="service-template-pool-name" value="DEFAULT"/>
             <property name="xsl-resources" value="/META-INF/XSL/RegisterSubscriber.xsl;/META-INF/XSL/SubscribingRQ2RS.xsl;/META-INF/XSL/RS2SOAP.xsl"/>
             <property name="templateRegister" value="/META-INF/xsl/RegisterSubscriber.xsl"/>
             <property name="templateRQ2RS" value="/META-INF/xsl/SubscribingRQ2RS.xsl"/>
             <property name="templateResponse" value="/META-INF/xsl/RS2SOAP.xsl"/>
             <property name="select-query" value="SELECT url, protocol, host, jms_destination
            FROM IntegraDB.ibn_event_registry"/>
             </action>
             </actions>
             </service>


            And getting this exception:

            2009-10-02 14:13:19,186 INFO [Transformator] template : /META-INF/xsl/RegisterSubscriber.xsl
            2009-10-02 14:13:19,186 WARN [Transformator] ********WARNING***************
            2009-10-02 14:13:19,186 WARN [Transformator] ********WARNING***************
            2009-10-02 14:13:19,186 WARN [Transformator] ********WARNING***************
            2009-10-02 14:13:19,186 WARN [Transformator] Template: >>/META-INF/xsl/RegisterSubscriber.xsl<< is not in the pool!
            2009-10-02 14:13:19,186 WARN [Transformator] ********WARNING***************
            2009-10-02 14:13:19,186 WARN [Transformator] ********WARNING***************
            2009-10-02 14:13:19,186 WARN [Transformator] ********WARNING***************
            2009-10-02 14:13:19,186 ERROR [IBNBroker] Template is null
            org.jboss.soa.esb.actions.ActionProcessingException: Template is null
             at com.traveltainment.integra.middleware.transformer.Transformator.process(Transformator.java:79)
             at com.traveltainment.integra.middleware.ibn.IBNBroker.registerSubscriber(IBNBroker.java:185)
             at com.traveltainment.integra.middleware.ibn.IBNBroker.process(IBNBroker.java:295)
             at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
             at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
             at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
             at java.lang.reflect.Method.invoke(Method.java:597)
             at org.jboss.soa.esb.listeners.message.ActionProcessorMethodInfo.processMethods(ActionProcessorMethodInfo.java:102)
             at org.jboss.soa.esb.listeners.message.OverriddenActionLifecycleProcessor.process(OverriddenActionLifecycleProcessor.java:74)
             at org.jboss.soa.esb.listeners.message.ActionProcessingPipeline.process(ActionProcessingPipeline.java:316)
             at org.jboss.soa.esb.listeners.message.MessageAwareListener$TransactionalRunner.run(MessageAwareListener.java:530)
             at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
             at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
             at java.lang.Thread.run(Thread.java:619)
            Caused by: java.lang.Exception: Template is null
             at com.traveltainment.integra.middleware.transformer.Transformator.transformXMLToXML(Transformator.java:270)
             at com.traveltainment.integra.middleware.transformer.Transformator.process(Transformator.java:70)
             ... 13 more
            2009-10-02 14:13:19,186 ERROR [IBNBroker] org.jboss.soa.esb.actions.ActionLifecycleException: org.jboss.soa.esb.actions.ActionProcessingException: Template is null
            


            And similarly for /SubscribingRQ2RS.xsl.

            where i'm doing something wrong?

            thanks.

            • 3. Re: how to have more than 1 templates in one service action?
              kconner

              It now seems to be an issue with your code rather than the ESB.

              "sbutt" wrote:
              2009-10-02 14:13:19,186 WARN [Transformator] Template: >>/META-INF/xsl/RegisterSubscriber.xsl<< is not in the pool!

              Assuming the pool is created from the following
              "sbutt" wrote:
              <property name="xsl-resources" value="/META-INF/XSL/RegisterSubscriber.xsl;/META-INF/XSL/SubscribingRQ2RS.xsl;/META-INF/XSL/RS2SOAP.xsl"/>

              then my guess would be capitalisation, i.e. XSL/xsl.

              Unfortunately I don't know what the exception means nor do I know what is in your class.

              Kev

              • 4. Re: how to have more than 1 templates in one service action?
                sbutt

                Oh you're a life saver! It was INDEED that capitalization issue. How duffer i am:(

                Thank alot.

                Regarding that other issue: "ESB Web Service Client MessageDeliverException problem", defined in my previous post, ...the answer to that is : "jboss-4.2.3.GA" my installed jBossEsb version. Couldn't find anything in the log file.

                Sorry for writing here, actually somehow that previous topic does not let me add any reply there.

                Thanks.