1 2 Previous Next 19 Replies Latest reply on May 17, 2006 7:23 PM by daviddryparry

    JMS JDBC Persistence and server restart.

    frank-15

      Hi,

      the situation is the following: my application consumes messages slower than their incoming rate is thus some of them will be persisted to a Postgres RDMS (depending on memory cache-size settings, etc.) However all of these messages will be marked with 'T' and be deleted at server restart as a result. [Actually I've found a thread with similar topic but it was dated in 2002]

      Questions:

      1. Is this the intended way how Message Cache and Persistence Manager should work, or I missed something in my jdbc-service.xml (quoted below)?
      2. How can I get around this problem? Is there a way of truly persistating messages (wo using entitybeans and other tables directly)?

      Thank you in advance: Frank

      PS I (System Spec.): Jboss 4.0.1, PostgreSQL 7.4.6
      PS II (postgres-jdbc2-service.xml):

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

      <?xml version="1.0" encoding="UTF-8"?>

      <!-- $Id: postgres-jdbc2-service.xml,v 1.8 2004/08/20 10:33:49 ejort Exp $ -->



      <!-- ==================================================================== -->
      <!-- Persistence and caching using Postgres -->
      <!-- IMPORTANT: Remove hsqldb-jdbc2-service.xml -->
      <!-- ==================================================================== -->

      <!--
      | The destination manager is the core service within JBossMQ
      -->

      <depends optional-attribute-name="MessageCache">jboss.mq:service=MessageCache
      <depends optional-attribute-name="PersistenceManager">jboss.mq:service=PersistenceManager
      <depends optional-attribute-name="StateManager">jboss.mq:service=StateManager


      <!--
      | The MessageCache decides where to put JBossMQ message that
      | are sitting around waiting to be consumed by a client.
      |
      | The memory marks are in Megabytes. Once the JVM memory usage hits
      | the high memory mark, the old messages in the cache will start getting
      | stored in the DataDirectory. As memory usage gets closer to the
      | Max memory mark, the amount of message kept in the memory cache aproaches 0.
      -->

      50
      60
      jboss.mq:service=PersistenceManager


      <!-- The PersistenceManager is used to store messages to disk. -->
      <!--
      | The jdbc2 PersistenceManager is the new improved JDBC implementation.
      | This implementation allows you to control how messages are stored in
      | the database.
      |
      | This jdbc2 PM configuration has was supplied by Stephane Nicoll in the forums as an example for Postgres
      -->

      <depends optional-attribute-name="ConnectionManager">jboss.jca:service=DataSourceBinding,name=PostgresDS

      BLOB_TYPE=BYTES_BLOB
      INSERT_TX = INSERT INTO JMS_TRANSACTIONS (TXID) values(?)
      INSERT_MESSAGE = INSERT INTO JMS_MESSAGES (MESSAGEID, DESTINATION, MESSAGEBLOB, TXID, TXOP) VALUES(?,?,?,?,?)
      SELECT_ALL_UNCOMMITED_TXS = SELECT TXID FROM JMS_TRANSACTIONS
      SELECT_MAX_TX = SELECT MAX(TXID) FROM JMS_MESSAGES
      SELECT_MESSAGES_IN_DEST = SELECT MESSAGEID, MESSAGEBLOB FROM JMS_MESSAGES WHERE DESTINATION=?
      SELECT_MESSAGE = SELECT MESSAGEID, MESSAGEBLOB FROM JMS_MESSAGES WHERE MESSAGEID=? AND DESTINATION=?
      MARK_MESSAGE = UPDATE JMS_MESSAGES SET TXID=?, TXOP=? WHERE MESSAGEID=? AND DESTINATION=?
      UPDATE_MESSAGE = UPDATE JMS_MESSAGES SET MESSAGEBLOB=? WHERE MESSAGEID=? AND DESTINATION=?
      UPDATE_MARKED_MESSAGES = UPDATE JMS_MESSAGES SET TXID=?, TXOP=? WHERE TXOP=?
      UPDATE_MARKED_MESSAGES_WITH_TX = UPDATE JMS_MESSAGES SET TXID=?, TXOP=? WHERE TXOP=? AND TXID=?
      UPDATE_MESSAGE = UPDATE JMS_MESSAGES SET MESSAGEBLOB=? WHERE MESSAGEID=? AND DESTINATION=?
      UPDATE_MARKED_MESSAGES = UPDATE JMS_MESSAGES SET TXID=?, TXOP=? WHERE TXOP=?
      UPDATE_MARKED_MESSAGES_WITH_TX = UPDATE JMS_MESSAGES SET TXID=?, TXOP=? WHERE TXOP=? AND TXID=?
      DELETE_MARKED_MESSAGES_WITH_TX = DELETE FROM JMS_MESSAGES WHERE TXID IN (SELECT TXID FROM JMS_TRANSACTIONS) AND TXOP=?
      DELETE_TX = DELETE FROM JMS_TRANSACTIONS WHERE TXID = ?
      DELETE_MARKED_MESSAGES = DELETE FROM JMS_MESSAGES WHERE TXID=? AND TXOP=?
      DELETE_TEMPORARY_MESSAGES = DELETE FROM JMS_MESSAGES WHERE TXOP='T'
      DELETE_MESSAGE = DELETE FROM JMS_MESSAGES WHERE MESSAGEID=? AND DESTINATION=?
      CREATE_MESSAGE_TABLE = CREATE TABLE JMS_MESSAGES (MESSAGEID INTEGER NOT NULL, DESTINATION VARCHAR(150) NOT NULL, TXID INTEGER, TXOP CHAR(1), MESSAGEBLOB BYTEA, PRIMARY KEY (MESSAGEID, DESTINATION))
      CREATE_IDX_MESSAGE_TXOP_TXID = CREATE INDEX JMS_MESSAGES_TXOP_TXID ON JMS_MESSAGES (TXOP, TXID)
      CREATE_IDX_MESSAGE_DESTINATION = CREATE INDEX JMS_MESSAGES_DESTINATION ON JMS_MESSAGES (DESTINATION)
      CREATE_TX_TABLE = CREATE TABLE JMS_TRANSACTIONS ( TXID INTEGER, PRIMARY KEY (TXID) )
      CREATE_TABLES_ON_STARTUP = FALSE





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

        • 1. Re: JMS JDBC Persistence and server restart.
          starksm64

          Then sender of the message chooses whether or not its persistent across server restarts. It is not controlled by the message cache or pm.

          • 2. Re: JMS JDBC Persistence and server restart.
            frank-15

            Actually, I set everything to DeliveryMode.PERSISTENT before sending the message (as follows):

            Destination topic = (Destination) ctx.lookup(MyJndiName);
            MessageProducer publisher = session.createProducer(topic);
            publisher.setDeliveryMode(DeliveryMode.PERSISTENT);
            
            ...
            
            objMsg = MySession.createObjectMessage();
            objMsg.setObject(MyMessageObject);
            objMsg.setJMSDeliveryMode(DeliveryMode.PERSISTENT);
            
            ...
            
            publisher.send(objMsg, DeliveryMode.PERSISTENT, MyPriority, javax.jms.Message.DEFAULT_TIME_TO_LIVE);


            Still, my messages got persisted with a 'T' mark in the opcode column of JMS_MESSAGES. Any further help would be greatly appreciated.

            • 3. Re: JMS JDBC Persistence and server restart.
              schrouf

              Looks like the associated message transaction is still open (not commited).

              • 4. Re: JMS JDBC Persistence and server restart.
                frank-15

                Well it sounds strange to me. I've set container-managed transactions for my receiver MessageDrivenBean and it seems to process the messages well (no exception occurs, etc.) Still, those messages left unprocessed (most possibbly due to heavy load) got persisted only by temporary means. So my question is still: how can you truly persist your JMS messages under JBOSS 4.0.1?

                Frank-15

                • 5. Re: JMS JDBC Persistence and server restart.
                  frank-15

                  In this post I will provide a detailed description of the different settings applied to solve the persistency problems.

                  1. According to EJB 2.1 Standard I set the receiver MDB to Durable and give clientId and subscriptionName properties in the ejb-jar.xml. (Actually I set guestimate values to latter two attributes.)

                  <activation-config>
                   <activation-config-property>
                   <activation-config-property-name>subscriptionDurability</activation-config-property-name>
                   <activation-config-property-value>Durable</activation-config-property-value>
                   </activation-config-property>
                   <activation-config-property>
                   <activation-config-property-name>clientId</activation-config-property-name>
                   <activation-config-property-value>10001</activation-config-property-value>
                   </activation-config-property>
                   <activation-config-property>
                   <activation-config-property-name>subscriptionName</activation-config-property-name>
                   <activation-config-property-value>dur1</activation-config-property-value>
                   </activation-config-property>
                   </activation-config>


                  2. I changed the security settings in the xml containing Topic descriptions.

                  <mbean code="org.jboss.mq.server.jmx.Topic" name="jboss.mq.destination:service=Topic,name=MessagingTopic">
                  <depends optional-attribute-name="DestinationManager">jboss.mq:service=DestinationManager</depends>
                  <depends optional-attribute-name="SecurityManager">jboss.mq:service=SecurityManager</depends>
                  -
                   <attribute name="SecurityConf">
                  -
                   <security>
                  <role name="guest" read="true" write="true" create="true"/>
                  <role name="publisher" read="true" write="true" create="false"/>
                  <role name="durpublisher" read="true" write="true" create="true"/>
                  </security>
                  </attribute>
                  <attribute name="JNDIName">jms/MessagingTopic</attribute>
                  </mbean>


                  3. As provided in my previous posts, I set everything in connection with message sending to PERSISTENT.

                  4. I do not have any additional components (like IBM-MSMQ Series, etc.) installed on my system. Can it be a possibble problem source?

                  Any further help would be greatly appreciated:

                  Frank-15

                  • 6. Re: JMS JDBC Persistence and server restart.

                    What you describe is what is expected.

                    If you send a persistent message to a NonDurable topic subscription there
                    is little point persisting the message since the topic subscription will vanish
                    (including all the messages contained within it) on a server crash or client disconnection.

                    For Topics, only the combination of a persistent message sent to a DURABLE
                    topic subscription is reliable.

                    You can find this put succintly on the WIKI:
                    "Guaranteed Delivery using persistent messages and durable subscriptions."

                    • 7. Re: JMS JDBC Persistence and server restart.
                      frank-15

                      Sorry, but I don't really get what you mean. According to your post the following code, which I've quoted in my previous writing means that the topic subscription is configured to be NonDurable?

                      <activation-config-property-name>subscriptionDurability</activation-config-property-name>
                       <activation-config-property-value>Durable</activation-config-property-value>


                      If so, please provide me detailed description how to make a Topic durable.

                      Thank you in advance: Frank-15

                      • 8. Re: JMS JDBC Persistence and server restart.

                        No it makes it Durable.

                        The stuff you have posted does not show anything. It is just some xml out of context.
                        It does not prove you have that xml in the right place, that you actually deployed that
                        xml, etc.

                        If you want to see the subscription use the JMX console. Find your topic in
                        jboss.mq.destinations and then list the subscriptions.

                        All I have seen so far in this post in lots of assertions with the usual
                        "IT DOES NOT WORK". So show me what it IS doing.

                        I am not going to guess or go through 20 questions trying to get the information out of you.

                        For the 10,000th time, use "READ THIS FIRST".
                        It explains the kind of information we need to help you.

                        In fact, enabling the logging will probably mean you can help yourself
                        because you will see exactly what subscription it is creating in the JMS server
                        and what is happening to the sent messages, including whether JBossMQ
                        thinks they are persistent.

                        • 9. Re: JMS JDBC Persistence and server restart.
                          mormota

                          Hi Adrian,

                          I'm afraid, the tone of the posts of this forum tend to turn to an undesired direction.

                          In our project we experienced the same problems. We are new to JBoss (we used other application servers in the previous projects), so could you please provide us the names of the relavant XMLs and (if possible) some sample Java code and the required XML configurations.

                          Besides, could you please provide us some URLs of the relevant docs. I suppose we read the necessary docs, but you might be right, and like Frank-15, we did not read enough.

                          Thanks in advance,
                          Attila Ulbert, PhD

                          • 10. Re: JMS JDBC Persistence and server restart.
                            frank-15

                            According to the JMX console, despite all efforts I am still unable to create durable subscriptions. I've searched through several web documents however there are serious discrepancies between different solutions.

                            It is not clear (diffrent sources suggest different things) whether the jbossmq-state.xml (the one in the conf directory) should contain TopicName or simply Topic attribute in the DurableSubscriptions section, I tried both without success. I am even not sure if users are supposed to change the .xml file in question (it is included in the docs library but not in the default server configuration.)

                            <DurableSubscriptions>
                             <DurableSubscription>
                             <ClientID>10001</ClientID>
                             <Name>dur1</Name>
                             <TopicName>MessagingTopic</TopicName>
                             </DurableSubscription>
                            </DurableSubscriptions>


                            In connection with jboss.xml I've found that giving mdb-client-id attribute (which again has been suggested by several sources) results in a conflict between the ejb-jar.xml (the AS says that the client-id has been given) so I put it into a comment section (actually I don't really know what the mdb-subcription-id tag means, I couldn't found any descripiton.

                            <message-driven>
                             <ejb-name>OutboundProxyBean</ejb-name>
                             <destination-jndi-name>jms/MessagingTopic</destination-jndi-name>
                             <mdb-user>john</mdb-user>
                             <mdb-passwd>needle</mdb-passwd>
                            <!-- <mdb-client-id>10001</mdb-client-id> -->
                             <mdb-subscription-id>mySubscription</mdb-subscription-id>
                             </message-driven>


                            Using the 'guest' client in the ejb-jar.xml and the code segment above, viewing the DestinationManager service at jmx-console, the subscription-id is always 1 (not the 10001 value I set). Actually, the difference between client-id and subscription-id is not clear.

                            Again I have to say, any help would be appreciated:

                            Frank-15

                            • 11. Re: JMS JDBC Persistence and server restart.

                              You obviously have some skills since you claim a Phd.

                              For us to help you we need enough information (supplying a simple mdb jar
                              that demostrates your problem would be one solution).

                              Debugging (show us what you are doing):
                              http://www.jboss.org/index.html?module=bb&op=viewtopic&t=43573
                              Post the logging for the MDB startup (i.e. when it makes the construction)
                              and JBossMQ.
                              Including what happens at the send to JBossMQ.

                              Checking your Config (minimum):
                              Show your ejb-jar.xml/jboss.xml with the full context, i.e. the entire MDB

                              jbossmq-state.xml (no longer used)
                              http://www.jboss.org/wiki/Wiki.jsp?page=ConfigJBossMQState

                              Just adding:

                              public void onMessage(Message m)
                              {
                              System.out.println(m);
                              ...
                              

                              will show me a lot of information, i.e. the message properties (like persistence
                              and the subscription id).

                              • 12. Re: JMS JDBC Persistence and server restart.

                                FAQ: http://www.jboss.org/wiki/Wiki.jsp?page=WhatIsTheCorrectWayToMakeADurableSubscription

                                Preconfigured clients ids (for the testsuite) from deploy/jms/hsqldb-jdbc-state-service.xml:

                                 POPULATE.TABLES.03 = INSERT INTO JMS_USERS (USERID, PASSWD, CLIENTID) VALUES ('john', 'needle', 'DurableSubscriberExample')
                                





                                • 13. Re: JMS JDBC Persistence and server restart.

                                  If you find something wrong with the WIKI docs, feel free to correct it
                                  or at least point it out. Anybody can update the WIKI which is both a good thing
                                  and bad thing.

                                  • 14. Re: JMS JDBC Persistence and server restart.
                                    mormota

                                     

                                    "adrian@jboss.org" wrote:
                                    You obviously have some skills since you claim a Phd.

                                    For us to help you we need enough information (supplying a simple mdb jar
                                    that demostrates your problem would be one solution).

                                    Debugging (show us what you are doing):
                                    http://www.jboss.org/index.html?module=bb&op=viewtopic&t=43573
                                    Post the logging for the MDB startup (i.e. when it makes the construction)
                                    and JBossMQ.
                                    Including what happens at the send to JBossMQ.

                                    Checking your Config (minimum):
                                    Show your ejb-jar.xml/jboss.xml with the full context, i.e. the entire MDB

                                    jbossmq-state.xml (no longer used)
                                    http://www.jboss.org/wiki/Wiki.jsp?page=ConfigJBossMQState

                                    Just adding:
                                    public void onMessage(Message m)
                                    {
                                    System.out.println(m);
                                    ...
                                    

                                    will show me a lot of information, i.e. the message properties (like persistence
                                    and the subscription id).


                                    Unfortunately, the skills required for a PhD are somewhat different from the skills required to achieve our desired goal: topic persistency. But with your help, I hope we can solve this problem.

                                    First of all, the MDB simply prints the actual Message parameter value, as you requested.

                                    The ejb-jar.xml:
                                    <?xml version="1.0" encoding="UTF-8"?>
                                    <ejb-jar version="2.1" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/ejb-jar_2_1.xsd">
                                     <display-name>Beans</display-name>
                                     <enterprise-beans>
                                     <session>
                                     <ejb-name>TestServiceBean</ejb-name>
                                     <home>com.test.msg.TestServiceHome</home>
                                     <remote>com.test.msg.TestService</remote>
                                     <ejb-class>com.test.msg.TestServiceBean</ejb-class>
                                     <session-type>Stateful</session-type>
                                     <transaction-type>Container</transaction-type>
                                    
                                     <resource-ref>
                                     <res-ref-name>jms/TestConnectionFactory</res-ref-name>
                                     <res-type>javax.jms.TopicConnectionFactory</res-type>
                                     <res-auth>Container</res-auth>
                                     <res-sharing-scope>Shareable</res-sharing-scope>
                                     </resource-ref>
                                    
                                     <resource-env-ref>
                                     <resource-env-ref-name>jms/TestTopic</resource-env-ref-name>
                                     <resource-env-ref-type>javax.jms.Topic</resource-env-ref-type>
                                    
                                     </resource-env-ref>
                                     <!--
                                     <message-destination-ref>
                                     <message-destination-ref-name>jms/TestTopic</message-destination-ref-name>
                                     <message-destination-type>javax.jms.Topic</message-destination-type>
                                     <message-destination-usage>Consumes</message-destination-usage>
                                     <message-destination-link>TestDestination</message-destination-link>
                                     </message-destination-ref>
                                     -->
                                     </session>
                                    
                                    
                                     <session>
                                     <ejb-name>TimerBean</ejb-name>
                                     <local-home>com.test.msg.TimerLocalHome</local-home>
                                     <local>com.test.msg.TimerLocal</local>
                                     <home>com.test.msg.TimerHome</home>
                                     <remote>com.test.msg.TimerRemote</remote>
                                    
                                     <ejb-class>com.test.msg.TimerBean</ejb-class>
                                     <session-type>Stateless</session-type>
                                     <transaction-type>Container</transaction-type>
                                    
                                     <ejb-ref>
                                     <ejb-ref-name>ejb/TestEntityFacade</ejb-ref-name>
                                     <ejb-ref-type>Session</ejb-ref-type>
                                     <home>com.test.msg.TestEntityFacadeHome</home>
                                     <remote>com.test.msg.TestEntityFacade</remote>
                                     </ejb-ref>
                                     </session>
                                    
                                    
                                     <message-driven>
                                     <ejb-name>TestTopicMDBBean</ejb-name>
                                     <ejb-class>com.test.msg.TestTopicMDBBean</ejb-class>
                                     <Test-type>javax.jms.MessageListener</Test-type>
                                     <transaction-type>Container</transaction-type>
                                     <message-destination-type>javax.jms.Topic</message-destination-type>
                                    
                                     <message-destination-link>TestDestination</message-destination-link>
                                    <activation-config>
                                    <activation-config-property>
                                     <activation-config-property-name>subscriptionDurability</activation-config-property-name>
                                     <activation-config-property-value>Durable</activation-config-property-value>
                                     </activation-config-property>
                                    <activation-config-property>
                                     <activation-config-property-name>clientId</activation-config-property-name>
                                     <activation-config-property-value>DurableSubscriberExample</activation-config-property-value>
                                     </activation-config-property>
                                    <activation-config-property>
                                     <activation-config-property-name>subscriptionName</activation-config-property-name>
                                     <activation-config-property-value>MySubscriptionName</activation-config-property-value>
                                     </activation-config-property>
                                     </activation-config>
                                    
                                     <ejb-ref>
                                     <ejb-ref-name>ejb/TestEntityFacade</ejb-ref-name>
                                     <ejb-ref-type>Session</ejb-ref-type>
                                     <home>com.test.msg.TestEntityFacadeHome</home>
                                     <remote>com.test.msg.TestEntityFacade</remote>
                                     </ejb-ref>
                                     </message-driven>
                                    
                                     <entity>
                                     <ejb-name>MessageEntryBean</ejb-name>
                                     <local-home>com.test.msg.TestEntityLocalHome</local-home>
                                     <local>com.test.msg.TestEntityLocal</local>
                                     <ejb-class>com.test.msg.TestEntityBean</ejb-class>
                                     <persistence-type>Container</persistence-type>
                                     <prim-key-class>java.lang.String</prim-key-class>
                                     <reentrant>false</reentrant>
                                     <cmp-version>2.x</cmp-version>
                                     <abstract-schema-name>MessageEntryBean</abstract-schema-name>
                                     <cmp-field>
                                     <description>no description</description>
                                     <field-name>networkServerId</field-name>
                                     </cmp-field>
                                     <cmp-field>
                                     <description>no description</description>
                                     <field-name>segmentCount</field-name>
                                     </cmp-field>
                                     <cmp-field>
                                     <description>no description</description>
                                     <field-name>profileName</field-name>
                                     </cmp-field>
                                     <cmp-field>
                                     <description>no description</description>
                                     <field-name>sentDate</field-name>
                                     </cmp-field>
                                     <cmp-field>
                                     <description>no description</description>
                                     <field-name>messageId</field-name>
                                     </cmp-field>
                                     <cmp-field>
                                     <description>no description</description>
                                     <field-name>deliveryStatus</field-name>
                                     </cmp-field>
                                     <primkey-field>networkServerId</primkey-field>
                                     <security-identity>
                                     <use-caller-identity/>
                                     </security-identity>
                                    
                                     <query>
                                     <query-method>
                                     <method-name>findMessageBySentDate</method-name>
                                     <method-params>
                                     <method-param>java.util.Date</method-param>
                                     </method-params>
                                     </query-method>
                                     <ejb-ql>select object(a) from MessageEntryBean as a where a.sentDate < ?1</ejb-ql>
                                     </query>
                                    
                                     </entity>
                                    
                                     <session>
                                     <description>
                                     [CDATA[Session facade for TestEntityBean.]]
                                     </description>
                                     <ejb-name>TestEntityFacade</ejb-name>
                                     <home>com.test.msg.TestEntityFacadeHome</home>
                                     <remote>com.test.msg.TestEntityFacade</remote>
                                     <ejb-class>com.test.msg.TestEntityFacadeBean</ejb-class>
                                     <session-type>Stateless</session-type>
                                     <transaction-type>Container</transaction-type>
                                     <ejb-local-ref>
                                     <ejb-ref-name>ejb/TestEntity</ejb-ref-name>
                                     <ejb-ref-type>Entity</ejb-ref-type>
                                     <local-home>com.test.msg.TestEntityLocalHome</local-home>
                                     <local>com.test.msg.TestEntityLocal</local>
                                     <ejb-link>test.jar#MessageEntryBean</ejb-link>
                                     </ejb-local-ref>
                                    
                                     </session>
                                     </enterprise-beans>
                                     <assembly-descriptor>
                                    
                                    
                                     <!-- TimerBean -->
                                    
                                     <container-transaction>
                                     <method>
                                     <ejb-name>TimerBean</ejb-name>
                                     <method-name>ejbTimeout</method-name>
                                     <method-params>
                                     <method-param>javax.ejb.Timer</method-param>
                                     </method-params>
                                     </method>
                                     <trans-attribute>RequiresNew</trans-attribute>
                                     </container-transaction>
                                    
                                     <message-destination>
                                     <message-destination-name>TestDestination</message-destination-name>
                                     </message-destination>
                                     <message-destination>
                                     <message-destination-name>TestTimerDestination</message-destination-name>
                                     </message-destination>
                                     </assembly-descriptor>
                                    </ejb-jar>
                                    


                                    The jboss.xml:
                                    <?xml version="1.0" encoding="UTF-8"?>
                                    
                                    <!DOCTYPE jboss PUBLIC
                                     "-//JBoss//DTD JBOSS 4.0//EN"
                                     "http://www.jboss.org/j2ee/dtd/jboss_4_0.dtd">
                                    
                                    <jboss>
                                     <enterprise-beans>
                                     <session>
                                     <ejb-name>TestServiceBean</ejb-name>
                                     <jndi-name>SAPBean</jndi-name>
                                     <resource-ref>
                                     <res-ref-name>jms/TestConnectionFactory</res-ref-name>
                                     <jndi-name>java:JmsXA</jndi-name>
                                     </resource-ref>
                                    
                                     <resource-env-ref>
                                     <resource-env-ref-name>jms/TestTopic</resource-env-ref-name>
                                     <jndi-name>jms/TestTopic</jndi-name>
                                     </resource-env-ref>
                                    
                                     </session>
                                     <session>
                                     <ejb-name>TimerBean</ejb-name>
                                     <jndi-name>TimerBean</jndi-name>
                                     <ejb-ref>
                                     <ejb-ref-name>ejb/TestEntityFacade</ejb-ref-name>
                                     <jndi-name>ejb/TestEntityFacade</jndi-name>
                                     </ejb-ref>
                                    
                                     </session>
                                     <message-driven>
                                     <ejb-name>TestTopicMDBBean</ejb-name>
                                     <configuration-name>My Config</configuration-name>
                                     <resource-adapter-name>jms-ra.rar</resource-adapter-name>
                                     <destination-jndi-name>jms/TestTopic</destination-jndi-name>
                                     <mdb-user>john</mdb-user>
                                     <mdb-passwd>needle</mdb-passwd>
                                    <!-- <mdb-client-id>DurableSubscriberExample</mdb-client-id>-->
                                     <mdb-subscription-id>MySubscriptionName</mdb-subscription-id>
                                    
                                     <ejb-ref>
                                     <ejb-ref-name>ejb/TestEntityFacade</ejb-ref-name>
                                     <jndi-name>ejb/TestEntityFacade</jndi-name>
                                     </ejb-ref>
                                     </message-driven>
                                    
                                     <entity>
                                     <ejb-name>MessageEntryBean</ejb-name>
                                     <local-jndi-name>TestEntityBean</local-jndi-name>
                                     </entity>
                                    
                                     <session>
                                     <ejb-name>TestEntityFacade</ejb-name>
                                     <jndi-name>ejb/TestEntityFacade</jndi-name>
                                     </session>
                                     </enterprise-beans>
                                     <container-configurations>
                                     <container-configuration>
                                     <container-name>My Config</container-name>
                                     <call-logging>false</call-logging>
                                     <container-invoker>org.jboss.ejb.plugins.jms.JMSContainerInvoker</container-invoker>
                                     <container-interceptors>
                                     <interceptor>org.jboss.ejb.plugins.LogInterceptor</interceptor>
                                     <interceptor>org.jboss.ejb.plugins.SecurityInterceptor</interceptor>
                                     <!-- CMT -->
                                     <interceptor transaction="Container">org.jboss.ejb.plugins.TxInterceptorCMT</interceptor>
                                     <interceptor transaction="Container" metricsEnabled="true">org.jboss.ejb.plugins.MetricsInterceptor</interceptor>
                                     <interceptor transaction="Container">org.jboss.ejb.plugins.MessageDrivenInstanceInterceptor</interceptor>
                                     <!-- BMT -->
                                     <interceptor transaction="Bean">org.jboss.ejb.plugins.MessageDrivenInstanceInterceptor</interceptor>
                                     <interceptor transaction="Bean">org.jboss.ejb.plugins.MessageDrivenTxInterceptorBMT</interceptor>
                                     <interceptor transaction="Bean" metricsEnabled="true">org.jboss.ejb.plugins.MetricsInterceptor</interceptor>
                                     </container-interceptors>
                                     <instance-pool>org.jboss.ejb.plugins.MessageDrivenInstancePool</instance-pool>
                                     <instance-cache></instance-cache>
                                     <persistence-manager></persistence-manager>
                                     <transaction-manager>org.jboss.tm.TxManager</transaction-manager>
                                     <container-invoker-conf>
                                     <JMSProviderAdapterJNDI>DefaultJMSProvider</JMSProviderAdapterJNDI>
                                     <ServerSessionPoolFactoryJNDI>StdJMSPool</ServerSessionPoolFactoryJNDI>
                                     <MaximumSize>15</MaximumSize>
                                     <MaxMessages>1</MaxMessages>
                                     <Optimized>True</Optimized>
                                     </container-invoker-conf>
                                     <container-pool-conf>
                                     <MaximumSize>100</MaximumSize>
                                     <MinimumSize>10</MinimumSize>
                                     </container-pool-conf>
                                     </container-configuration>
                                    
                                     </container-configurations>
                                    
                                    </jboss>
                                    


                                    You can download the compressed logs (server & boot) from here:
                                    http://mormota.web.elte.hu/logs.txt.bz2

                                    You will find the test ear here:
                                    http://mormota.web.elte.hu/test.ear

                                    You might need this XML as well:
                                    http://mormota.web.elte.hu/test-service.xml


                                    1 2 Previous Next