JMS consumers and MDBs in free pool

          Hello
          I am using WLS 7.0 SP1. I notice the following when using MDBs listening on
          a JMS queue.
          The WLS console shows the number of JMS consumers to be equal to the <max-free-beans-in-pool>
          parameter value in the MDBs deployment descriptor. I would expect the number of
          JMS consumers to be equal to the <initial-free-beans-in-pool> value before I start
          posting messages to the queue.
          Thanks
          Ramdas
          

Hi Ramdas,
          I'm fairly sure that this is long-standing behavior, that
          also occurs in 6.1 and 8.1. Since the number of beans
          is limited by the number of available threads, the fact
          that all of them are allocated right away is usually not
          an issue.
          Post to the ejb newsgroup to make sure.
          Tom
          P.S. If you haven't already, I suggest reading
          the most recent version of the JMS performance guide. It
          contains info on tuning MDB threading and pooling. You
          can find the guide on dev2dev.
          Ramdas Hegde wrote:
          > Hello
          >
          > I am using WLS 7.0 SP1. I notice the following when using MDBs listening on
          > a JMS queue.
          > The WLS console shows the number of JMS consumers to be equal to the <max-free-beans-in-pool>
          > parameter value in the MDBs deployment descriptor. I would expect the number of
          > JMS consumers to be equal to the <initial-free-beans-in-pool> value before I start
          > posting messages to the queue.
          >
          > Thanks
          >
          > Ramdas
          

Similar Messages

  • Foreign JMS QCF and Weblogic Sever Session Pool

              Hi!
              We have Weblogic 6.1 SP2 installation.
              We are trying to use JMS Server session pool and connection consumer configuration
              with MQSeries QCF registered to weblogic JNDI via startup class.
              Upon server startup weblogic is throwing ClassCast exception for QueueConnection.
              It seems weblogic is expecting QueueConnection implementation by weblogic.
              Any suggestions or alternative way of doing it.
              Thanks
              Jay PArikh
              

    Hi Jay,
              Server session pools do not support foreign providers.
              The preferred way to integrate foreign providers is via MDBs or
              via the Messaging Bridge (bridge available in SP3). For a
              comprehensive write-up on integrating foreign providers with
              WL see the whitepaper "Using Foreign JMS Providers with
              WebLogic Server" on dev2dev.bea.com.
              Tom
              Jay Parikh wrote:
              > Hi!
              >
              > We have Weblogic 6.1 SP2 installation.
              >
              > We are trying to use JMS Server session pool and connection consumer configuration
              > with MQSeries QCF registered to weblogic JNDI via startup class.
              >
              > Upon server startup weblogic is throwing ClassCast exception for QueueConnection.
              > It seems weblogic is expecting QueueConnection implementation by weblogic.
              >
              > Any suggestions or alternative way of doing it.
              >
              > Thanks
              > Jay PArikh
              

  • JMS Server and MySQL Persistent Store

              I set up a JDBC connection pool in Weblogic 8.1 with MySQL dbms. When I tried to
              create a JMS server and use the connection pool as the Persistent Store, then
              try to target the JMS to a managed server. I got the following error, any idea
              what the problem is?
              weblogic.management.DistributedManagementException: Distributed Management [1
              exceptions]
              JMS JDBC store, connection pool = , prefix = : unsupported DBMS
                   at weblogic.management.internal.ConfigurationMBeanImpl.updateConfigMBeans(ConfigurationMBeanImpl.java:1133)
                   at weblogic.management.internal.ConfigurationMBeanImpl.invoke(ConfigurationMBeanImpl.java:462)
                   at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1557)
                   at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1525)
                   at weblogic.management.internal.RemoteMBeanServerImpl.invoke(RemoteMBeanServerImpl.java:765)
                   at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:946)
                   at weblogic.management.internal.MBeanProxy.invokeForCachingStub(MBeanProxy.java:481)
                   at weblogic.management.configuration.ServerMBean_Stub.addDeployment(ServerMBean_Stub.java:7929)
                   at weblogic.management.internal.DynamicMBeanImpl.unprotectedUpdateDeployments(DynamicMBeanImpl.java:1795)
                   at weblogic.management.internal.DynamicMBeanImpl.access$100(DynamicMBeanImpl.java:95)
                   at weblogic.management.internal.DynamicMBeanImpl$2.run(DynamicMBeanImpl.java:1708)
                   at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
                   at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
                   at weblogic.management.internal.DynamicMBeanImpl.updateDeployments(DynamicMBeanImpl.java:1704)
                   at weblogic.management.internal.DynamicMBeanImpl.setAttribute(DynamicMBeanImpl.java:1128)
                   at weblogic.management.internal.ConfigurationMBeanImpl.setAttribute(ConfigurationMBeanImpl.java:311)
                   at com.sun.management.jmx.MBeanServerImpl.setAttribute(MBeanServerImpl.java:1358)
                   at com.sun.management.jmx.MBeanServerImpl.setAttribute(MBeanServerImpl.java:1333)
                   at weblogic.management.internal.RemoteMBeanServerImpl.setAttribute(RemoteMBeanServerImpl.java:367)
                   at weblogic.management.internal.MBeanProxy.setAttribute(MBeanProxy.java:741)
                   at weblogic.management.internal.MBeanProxy.invokeForCachingStub(MBeanProxy.java:475)
                   at weblogic.management.configuration.JMSServerMBean_Stub.setTargets(JMSServerMBean_Stub.java:1247)
                   at weblogic.management.console.webapp._domain.__jmsserver$ServerAndMigratableTargetAttribute.doSet(__jmsserver.java:109)
                   at weblogic.management.console.actions.mbean.DoEditMBeanAction.perform(DoEditMBeanAction.java:256)
                   at weblogic.management.console.actions.internal.ActionServlet.doAction(ActionServlet.java:173)
                   at weblogic.management.console.actions.internal.ActionServlet.doPost(ActionServlet.java:85)
                   at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
                   at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
                   at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1053)
                   at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:387)
                   at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:305)
                   at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6310)
                   at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
                   at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
                   at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3622)
                   at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2569)
                   at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
                   at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
              java.io.IOException: JMS JDBC store, connection pool = , prefix = : unsupported
              DBMS
                   at weblogic.jms.store.JDBCIOStream.throwIOException(JDBCIOStream.java:359)
                   at weblogic.jms.store.JDBCIOStream.rebuildTables(JDBCIOStream.java:1613)
                   at weblogic.jms.store.JDBCIOStream.open(JDBCIOStream.java:426)
                   at weblogic.jms.store.JMSStore.open(JMSStore.java:224)
                   at weblogic.jms.backend.BEStore.open(BEStore.java:262)
                   at weblogic.jms.backend.BEStore.start(BEStore.java:151)
                   at weblogic.jms.backend.BackEnd.openStores(BackEnd.java:1171)
                   at weblogic.jms.backend.BackEnd.resume(BackEnd.java:1287)
                   at weblogic.jms.JMSService.addJMSServer(JMSService.java:2167)
                   at weblogic.jms.JMSService.addDeployment(JMSService.java:1938)
                   at weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(DeploymentTarget.java:330)
                   at weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(DeploymentTarget.java:201)
                   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:324)
                   at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMBeanImpl.java:747)
                   at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl.java:726)
                   at weblogic.management.internal.ConfigurationMBeanImpl.invoke(ConfigurationMBeanImpl.java:458)
                   at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1557)
                   at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1525)
                   at weblogic.management.internal.RemoteMBeanServerImpl.invoke(RemoteMBeanServerImpl.java:765)
                   at weblogic.management.internal.RemoteMBeanServerImpl_WLSkel.invoke(Unknown Source)
                   at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:466)
                   at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:409)
                   at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:353)
                   at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:144)
                   at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:404)
                   at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30)
                   at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
                   at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
              --------------- nested within: ------------------
              weblogic.management.console.utils.SetException: An error occurred while updating
              MigratableTarget on [Caching Stub]Proxy for dotnet:Name=CSJMSServer,Type=JMSServer
              - with nested exception:
              [weblogic.management.DistributedManagementException: Distributed Management [1
              exceptions]
              JMS JDBC store, connection pool = , prefix = : unsupported DBMS]
                   at weblogic.management.console.actions.mbean.DoEditMBeanAction.perform(DoEditMBeanAction.java:311)
                   at weblogic.management.console.actions.internal.ActionServlet.doAction(ActionServlet.java:173)
                   at weblogic.management.console.actions.internal.ActionServlet.doPost(ActionServlet.java:85)
                   at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
                   at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
                   at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1053)
                   at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:387)
                   at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:305)
                   at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6310)
                   at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
                   at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
                   at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3622)
                   at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2569)
                   at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
                   at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
              Console Release Build8.1.1.0Server Release Build8.1.1.0Server BuildWebLogic Server
              8.1 SP1 Fri Jun 20 23:06:40 PDT 2003 271009 All Server Product VersionsWebLogic
              Server 8.1 SP1 Fri Jun 20 23:06:40 PDT 2003 271009 WebLogic XMLX Module 8.1 SP1
              Fri Jun 20 23:06:40 PDT 2003 271009 WebLogic Server 8.1 SP1 Fri Jun 20 23:06:40
              PDT 2003 271009 WebLogic Server 8.1 SP1 Fri Jun 20 23:06:40 PDT 2003 271009 WebLogic
              Portal 8.1 Thu Jul 10 20:09:22 PDT 2003 84868
              

    Exactly what it says: unsupported DBMS.
              But but but...
              OK, I'll be nice (just couldn't resist).
              The next 8.1 SP will contain the DDL for MySQL, but for
              now you can run it manually. Prepend your catalog,
              schema, and prefix before JMSState and JMSStore to
              match what you configured as a prefix in your
              JMS JDBC store, and run the commands:
              CREATE TABLE JMSState (recordHandle int, recordState int,
              recordGeneration int);
              CREATE TABLE JMSStore (recordHandle int, recordState int, record longblob);
              CREATE INDEX JMSMSG_X ON JMSState (recordHandle);
              CREATE INDEX JMSMSGQ_X ON JMSStore (recordHandle);
              COMMIT;
              Note that a file store may be preferable instead
              of using a database store, there is
              likely no performance advantage to MySQL (in fact
              there is likely a significant performance penalty), and a file
              store is just as transactionally safe as a database
              store.
              Tom
              dahan wrote:
              > I set up a JDBC connection pool in Weblogic 8.1 with MySQL dbms. When I tried to
              > create a JMS server and use the connection pool as the Persistent Store, then
              > try to target the JMS to a managed server. I got the following error, any idea
              > what the problem is?
              >
              > weblogic.management.DistributedManagementException: Distributed Management [1
              > exceptions]
              > JMS JDBC store, connection pool = , prefix = : unsupported DBMS
              >      at weblogic.management.internal.ConfigurationMBeanImpl.updateConfigMBeans(ConfigurationMBeanImpl.java:1133)
              >      at weblogic.management.internal.ConfigurationMBeanImpl.invoke(ConfigurationMBeanImpl.java:462)
              >      at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1557)
              >      at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1525)
              >      at weblogic.management.internal.RemoteMBeanServerImpl.invoke(RemoteMBeanServerImpl.java:765)
              >      at weblogic.management.internal.MBeanProxy.invoke(MBeanProxy.java:946)
              >      at weblogic.management.internal.MBeanProxy.invokeForCachingStub(MBeanProxy.java:481)
              >      at weblogic.management.configuration.ServerMBean_Stub.addDeployment(ServerMBean_Stub.java:7929)
              >      at weblogic.management.internal.DynamicMBeanImpl.unprotectedUpdateDeployments(DynamicMBeanImpl.java:1795)
              >      at weblogic.management.internal.DynamicMBeanImpl.access$100(DynamicMBeanImpl.java:95)
              >      at weblogic.management.internal.DynamicMBeanImpl$2.run(DynamicMBeanImpl.java:1708)
              >      at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
              >      at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
              >      at weblogic.management.internal.DynamicMBeanImpl.updateDeployments(DynamicMBeanImpl.java:1704)
              >      at weblogic.management.internal.DynamicMBeanImpl.setAttribute(DynamicMBeanImpl.java:1128)
              >      at weblogic.management.internal.ConfigurationMBeanImpl.setAttribute(ConfigurationMBeanImpl.java:311)
              >      at com.sun.management.jmx.MBeanServerImpl.setAttribute(MBeanServerImpl.java:1358)
              >      at com.sun.management.jmx.MBeanServerImpl.setAttribute(MBeanServerImpl.java:1333)
              >      at weblogic.management.internal.RemoteMBeanServerImpl.setAttribute(RemoteMBeanServerImpl.java:367)
              >      at weblogic.management.internal.MBeanProxy.setAttribute(MBeanProxy.java:741)
              >      at weblogic.management.internal.MBeanProxy.invokeForCachingStub(MBeanProxy.java:475)
              >      at weblogic.management.configuration.JMSServerMBean_Stub.setTargets(JMSServerMBean_Stub.java:1247)
              >      at weblogic.management.console.webapp._domain.__jmsserver$ServerAndMigratableTargetAttribute.doSet(__jmsserver.java:109)
              >      at weblogic.management.console.actions.mbean.DoEditMBeanAction.perform(DoEditMBeanAction.java:256)
              >      at weblogic.management.console.actions.internal.ActionServlet.doAction(ActionServlet.java:173)
              >      at weblogic.management.console.actions.internal.ActionServlet.doPost(ActionServlet.java:85)
              >      at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
              >      at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
              >      at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1053)
              >      at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:387)
              >      at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:305)
              >      at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6310)
              >      at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
              >      at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
              >      at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3622)
              >      at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2569)
              >      at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
              >      at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
              > java.io.IOException: JMS JDBC store, connection pool = , prefix = : unsupported
              > DBMS
              >      at weblogic.jms.store.JDBCIOStream.throwIOException(JDBCIOStream.java:359)
              >      at weblogic.jms.store.JDBCIOStream.rebuildTables(JDBCIOStream.java:1613)
              >      at weblogic.jms.store.JDBCIOStream.open(JDBCIOStream.java:426)
              >      at weblogic.jms.store.JMSStore.open(JMSStore.java:224)
              >      at weblogic.jms.backend.BEStore.open(BEStore.java:262)
              >      at weblogic.jms.backend.BEStore.start(BEStore.java:151)
              >      at weblogic.jms.backend.BackEnd.openStores(BackEnd.java:1171)
              >      at weblogic.jms.backend.BackEnd.resume(BackEnd.java:1287)
              >      at weblogic.jms.JMSService.addJMSServer(JMSService.java:2167)
              >      at weblogic.jms.JMSService.addDeployment(JMSService.java:1938)
              >      at weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(DeploymentTarget.java:330)
              >      at weblogic.management.mbeans.custom.DeploymentTarget.addDeployment(DeploymentTarget.java:201)
              >      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:324)
              >      at weblogic.management.internal.DynamicMBeanImpl.invokeLocally(DynamicMBeanImpl.java:747)
              >      at weblogic.management.internal.DynamicMBeanImpl.invoke(DynamicMBeanImpl.java:726)
              >      at weblogic.management.internal.ConfigurationMBeanImpl.invoke(ConfigurationMBeanImpl.java:458)
              >      at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1557)
              >      at com.sun.management.jmx.MBeanServerImpl.invoke(MBeanServerImpl.java:1525)
              >      at weblogic.management.internal.RemoteMBeanServerImpl.invoke(RemoteMBeanServerImpl.java:765)
              >      at weblogic.management.internal.RemoteMBeanServerImpl_WLSkel.invoke(Unknown Source)
              >      at weblogic.rmi.internal.BasicServerRef.invoke(BasicServerRef.java:466)
              >      at weblogic.rmi.internal.BasicServerRef$1.run(BasicServerRef.java:409)
              >      at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:353)
              >      at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:144)
              >      at weblogic.rmi.internal.BasicServerRef.handleRequest(BasicServerRef.java:404)
              >      at weblogic.rmi.internal.BasicExecuteRequest.execute(BasicExecuteRequest.java:30)
              >      at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
              >      at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
              > --------------- nested within: ------------------
              > weblogic.management.console.utils.SetException: An error occurred while updating
              > MigratableTarget on [Caching Stub]Proxy for dotnet:Name=CSJMSServer,Type=JMSServer
              > - with nested exception:
              > [weblogic.management.DistributedManagementException: Distributed Management [1
              > exceptions]
              > JMS JDBC store, connection pool = , prefix = : unsupported DBMS]
              >      at weblogic.management.console.actions.mbean.DoEditMBeanAction.perform(DoEditMBeanAction.java:311)
              >      at weblogic.management.console.actions.internal.ActionServlet.doAction(ActionServlet.java:173)
              >      at weblogic.management.console.actions.internal.ActionServlet.doPost(ActionServlet.java:85)
              >      at javax.servlet.http.HttpServlet.service(HttpServlet.java:760)
              >      at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
              >      at weblogic.servlet.internal.ServletStubImpl$ServletInvocationAction.run(ServletStubImpl.java:1053)
              >      at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:387)
              >      at weblogic.servlet.internal.ServletStubImpl.invokeServlet(ServletStubImpl.java:305)
              >      at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:6310)
              >      at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:317)
              >      at weblogic.security.service.SecurityManager.runAs(SecurityManager.java:118)
              >      at weblogic.servlet.internal.WebAppServletContext.invokeServlet(WebAppServletContext.java:3622)
              >      at weblogic.servlet.internal.ServletRequestImpl.execute(ServletRequestImpl.java:2569)
              >      at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:197)
              >      at weblogic.kernel.ExecuteThread.run(ExecuteThread.java:170)
              >
              >
              >
              > --------------------------------------------------------------------------------
              >
              > Console Release Build8.1.1.0Server Release Build8.1.1.0Server BuildWebLogic Server
              > 8.1 SP1 Fri Jun 20 23:06:40 PDT 2003 271009 All Server Product VersionsWebLogic
              > Server 8.1 SP1 Fri Jun 20 23:06:40 PDT 2003 271009 WebLogic XMLX Module 8.1 SP1
              > Fri Jun 20 23:06:40 PDT 2003 271009 WebLogic Server 8.1 SP1 Fri Jun 20 23:06:40
              > PDT 2003 271009 WebLogic Server 8.1 SP1 Fri Jun 20 23:06:40 PDT 2003 271009 WebLogic
              > Portal 8.1 Thu Jul 10 20:09:22 PDT 2003 84868
              >
              

  • Load balancing MQ 7.0 Foreign JMS Server and Weblogic 10 MDBs?

    We have the following configuration and we are trying to troubleshoot what appears to be a load balancing issue.
    We have 3 Solaris servers. Each Solaris server has two Weblogic managed servers running on it. There are a total of 6 managed servers in the Weblogic cluster.
    MQ Series 7.0 is also installed on each Solaris server. The MQ queue managers are in a MQ cluster. Each queue manager has the same queues defined.
    We have a foreign JMS Server configured on Weblogic that has destinations and a connection factory defined. There aren't many configuration options available for the connection factory. The destinations are bound to the queues defined on MQ using the MQ bindings file.
    The MQ bindings file was generated using the TRANSPORT(BIND) mechanism. Each bindings file points to the queue manager running on that machine. So the 2 managed servers running on one machine are accepting messages from the queue manager on that machine.
    The MDB's listenning for messages on the MQ queues are configured as follows in the weblogic-ejb-jar.xml:
         <max-beans-in-free-pool>16</max-beans-in-free-pool>
    We also created a custom work manager with min threads constraint=5 and max threads constraint=16. The dispatch-policy of all the MDBs is set to the custom work manager.
    The open input count on each MQ queue managers shows up as 32 which is expected.
    The default load algorithm on the cluster is round-robin.
    When we run a load test (injecting 40 messages per second on one MQ queue), we notice that one managed server ends up being significantly loaded than the other. Each MQ queue manager in the MQ cluster receives approximately the same number of messages in the load test. But it seems like one managed server is preferred over the other in Weblogic.
    What can be done to equally balance the load among the two managed servers on each Solaris server?
    Thanks for the help.

    Load balancing generally applies at determing how many consumer threads has to be created on each of the clustered queue instance. In that sense you have achieved perfect load balancing as your queue instances has the same no of consumer threads.
    Once you have set 'x' consumer threads on a queue, it is upto messaging provider to decide which thread to deliver a particular message and you will hardly have any control over this. Since your 32 threads are listening on the same queue, MQ can select any thread for delivering the message and the behaviour could be non deterministic.
    One option to change your design is to have a dispacther mdb which picks the messages off the MQ and then routes to a weblogic distributed destination and you can have your core mdb which does all processing listen to this distributed destination. You can enable load balancing when the disaptcher mdb routes the message to the distributed destination. Since dispatcher MDB is nothing more than a router, the unbalanced consumption off the MQ shouldn't seriously affect the server.

  • Basics of Thread Pool and MDB

    Hi,
    I am not able to connects the dots between Self-Tuning Thread Pool Threads ,number of MDB's and Open connection to Queue Manager (Listeners).
    Following is my setting
    1 Self-Tuning Thread Pool : Default i.e 5
    2) Initial Beans in Free Pool: 100
    3) Max Beans in Free Pool : 200
    What i see
    Pool Current Count :- 100 (this is as expected)
    On start up of server 105 MDB's are created (No problem with this ) (Have put static variable incrementing in constructor)
    When Messages are sent to MQ (50-100) the "Beans In Use Count" under Monitoring never shows more then 16
    and finally the "open MQ Count" on MQ Explorer is always 16.
    Questions.
    1) What do i need to change, for increasing the count of "Beans In Use Count" and "open MQ Count" on MQ Explorer to be more than 16?
    2)If the Self-Tuning thread pool is 5, how come 16 beans are executed at once? or its just that 16 are picked from pool and only 5 are executed at given time?
    NOTE:- I am using weblogic app server to connecto IBM MQ with JMS Module, so creating the customer WorkManager and attaching it to my listener (MDB) is not supported by weblogic, it says the mdb is not under webloic thread pool so this settingt will have no effect
    -thnaks

    Hi ,
    You have to create a custom work manager and then you have to associate this customer work manager to the dispatch policy of the MDB to increase the threads.
    Following links would surely help you as TomB has explained the same issue very well, do have a look at them.
    Re: WorkManager Max thread constraints not applied to MDB
    Also you can also go through this links which would help you get more information:
    Topic: Configuring Enterprise Beans in WebLogic Search for "To map an EJB to a workmanager"
    http://middlewaremagic.com/weblogic/?p=5665
    Topic: WebLogic WorkManager with EJB3 And MaxThread Constraint
    http://middlewaremagic.com/weblogic/?p=5507
    Regards,
    Ravish Mody
    http://middlewaremagic.com/weblogic/
    Come, Join Us and Experience The Magic…

  • How JMS and MDB works?

    Hi,
    I am writing a portion of a J2EE application and would like to perform asynchronous processing. Im new to JMS. Following are some questions i have:
    - How does JMS process message, queue and MDB? I mean when a message is send to a queue, how does it know which MDB should be receiving the message?
    - Im using JBoss which has JMS support. Under normal circumtances, is it all right to use the default queue that comes with the JMSProvider (i.e. the application server in this case)? Or should we write some other codes for create queue?
    - In terms of design, should one MDB only performs a single function? The reason for this is that a MDB seems to only have a single 'onMessage' method?
    - The following is what my application tries to achieve: Servlet will call a method in a StatelessSessionBean. SessionBean perform first some processing. And since part of the process does not require to be done at the same time, i would like it to happen asynchronously. I actually intend to have that part of the processing happens in an MDB. Is that the correct way to use JMS & MDB? How else could i perform asynchronous processing?
    Thanks much.
    Veny

    - how does it know which MDB should be receiving the message?
    The MDB is configured to consume messages from a specific queue in one of the J2EE xml files (Haven't written them in a while so can't be sure which one).
    - is it all right to use the default queue that comes with the JMSProvider
    I wouldn't, because your queue names won't reflect the job they are doing.
    Create some new queues by updating your jms providers config files.
    - In terms of design, should one MDB only performs a single function
    This is a reasonable approach to take, although it's sometimes OK to have an MDB act like a controller and delegate to handler classes (possibly session beans) based on the message type. The latter approach is suitable only for small apps as it's far less configurable / scalable (e.g. you can't say I want 10 MDB instances to processing message X and 50 MDB instances to process message Y).
    - Is that the correct way to use JMS & MDB
    Yes, that's pretty much it, although I would still delegate the work to a handler class. It will make if easier to test and more portable.

  • JMS bridge and MQSeries. looking for statistics

              Hi !
              I have to use Weblogic 7 SP4 in cluster with a distant MQSeries queue manager.
              I know I can't have a "exactly once" quality of service. I use a MDB (deplyed
              on each instance of the server).
              I'm looking for statistics about how often a message can be treated 2 (or more)
              times.
              Thanks a lot for any help !
              Florent
              

    Hi Florent,
              Since these are MQ messages, it might be possible to find
              such statistics in MQ. Also, I think that MQ stores a
              redelivery count in their messages - so you can likely
              instrument your application code to get at the count.
              Note that 7.0 actually does support exactly once with WL MDBs driven
              by MQ. If you use transactions you can infer some stats on redeliveries
              by checking the relevant transaction statistics for rollback counts.
              I'm attaching some notes on JMS integration for your
              convenience.
              Tom
              florent wrote:
              > Hi !
              >
              > I have to use Weblogic 7 SP4 in cluster with a distant MQSeries queue manager.
              > I know I can't have a "exactly once" quality of service. I use a MDB (deplyed
              > on each instance of the server).
              >
              > I'm looking for statistics about how often a message can be treated 2 (or more)
              > times.
              >
              > Thanks a lot for any help !
              >
              > Florent
              JMS Integration of Foreign Vendors with BEA WebLogic Server
              The following notes are derived mostly from "http://dev2dev.bea.com/technologies/jms/index.jsp".
              For additional questions, a good forum for WebLogic questions in general is "newsgroups.bea.com". These can be mined for information by using Google's newsgroup search function.
              JMS Integration Overview
              - For integration with "non-Java" and/or "non-JMS" platforms, see "Non-Java Integration Options" below.
              - For a foreign JMS vendor to participate in a WL transaction it must support XA. Specifically, it must support the javax.jms.XA* interfaces.
              - In WL versions 6.0 and up it is possible to make synchronous calls to foreign JMS vendors participate in a WL transaction as long as the foreign vendor supports XA.
              - WL 6.0 and 6.1 MDBs can be driven by foreign vendors non-transactionally. They can be driven transactionally by a select few foreign vendors (MQ is not part of the select few)
              - WL 7.0 and later, MDBs can be driven by foreign vendors transactionally and non-transationally.
              - WL 6.1 and later WL provides a messaging bridge feature. Messaging bridges forward messages between any two JMS destinations, including foreign destinations, and can transfer messages transactionally or non-transactionally.
              - WL 8.1 JMS provides additional features that simplify transactional and JNDI integration of foreign vendors. See http://edocs.bea.com/wls/docs81/jms/intro.html#jms_features
              Integration with 8.1 Details
              A good overview of 8.1 JMS interop capability is the presentation "Integrating Foreign JMS Providers with BEA WebLogic Server" here:
              http://www.bea.com/content/files/eworld/presentations/Wed_03_05_03/Application_Servers/1097-Foreign_JMS_Providers_WLS.pdf
              This document refers to helpful new 8.1 features, which simplify integration. These include:
              http://edocs.bea.com/wls/docs81/ConsoleHelp/jms_config.html#accessing_foreign_providers
              http://edocs.bea.com/wls/docs81/jms/j2ee_components.html#1033768
              And are also summarized here (under interoperability):
              http://edocs.bea.com/wls/docs81/jms/intro.html#jms_features
              Also read the extensive MDB documentation, which extensively covers integrating foreign vendors:
              http://edocs.bea.com/wls/docs81/ejb/message_beans.html
              The 8.1 features are likely sufficient for most 8.1 integration needs, and you may not need to refer "Using Foreign JMS Providers With WLS" white-paper mentioned below.
              Integration with 6.1 and 7.0 Details
              Read the "Using Foreign JMS Providers With WLS" white-paper:
              http://dev2dev.bea.com/products/wlserver/whitepapers/jmsproviders.jsp
              Note that this white-paper does not take into account 8.1 features.
              For 7.0 read the extensive 8.1 MDB documentation, which largely also applies to 7.0:
              http://edocs.bea.com/wls/docs81/ejb/message_beans.html
              Non-Java Integration Options
              - WL JMS has a JNI based C client which is available for Windows and some UNIX platforms. This C client supports 7.0 and up, and will be officially packaged with WLS in 9.0 (virtually unchanged). The C API is currently only supported through the jms newsgroup. See "JMS C API", here:
              http://dev2dev.bea.com/technologies/jms/index.jsp
              - WL supports direct Windows COM access through its "JCOM" feature. This doesn't include the JMS API, but one can invoke EJBs which in turn invoke JMS. See
              http://e-docs.bea.com/wls/docs61/jcom.html
              http://e-docs.bea.com/wls/docs70/jcom/
              http://e-docs.bea.com/wls/docs81/jcom/
              - Similar to JCOM, but more advanced, WL supports IIOP standard based access on multiple platforms. You can use the BEA Tuxedo C client for this purpose (no license fee). This doesn't include the JMS API, but one can invoke EJBs which in turn invoke JMS. See
              http://e-docs.bea.com/wls/docs81/rmi_iiop/
              http://e-docs.bea.com/wls/docs70/rmi_iiop/
              http://e-docs.bea.com/wls/docs61/rmi_iiop/
              Unlike most other approaches, the IIOP client approach also allows the client to begin and commit user (JTA) transactions (not configured).
              - If you already have a BEA Tuxedo license, one option is communicate through BEA Tuxedo (which has various APIs on Windows) and configure a WebLogic Server to respond to these requests via the WTC bridge. Search for "WTC" in the BEA docs. Unlike most other approaches, the Tuxedo API approach also allows the client to begin and commit user (JTA) transactions.
              - Another approach is to interop via web-service standards. Or even to simply to invoke a servlet on the WL server using a basic HTTP call from Windows. These in turn can invoke the JMS API. There is a white-paper on "Interoperability Study of BEA WebLogic Workshop 8.1 and Microsoft .NET 1.1 Web Services", that demonstrates web-services here:
              http://ftpna2.bea.com/pub/downloads/WebLogic-DotNet-Interop.pdf
              - Yet another approach is to use a third party product that is designed to wrap any JMS vendor. There are even open source versions. In no particular order, here are some examples: Open3 WinJMS, CodeMesh, Active JMS, SpiritSoft
              - Finally, there are .NET/C/C++ integration libraries that not specific to JMS, some examples are JNBridge, Jace, and CodeMesh.
              Notes on MQ Remote Capable XA Clients
              Until recently, IBM MQ JMS clients could not work transactionally unless they were running on the same host as their MQ server. This is a limitation unique to MQ that was relaxed with the introduction of IBM's new "WebSphere MQ Extended Transactional Client". See:
              http://publibfp.boulder.ibm.com/epubs/pdf/csqzar00.pdf
              The product is new, and for some reason, configuration of this client seems to be tricky, even when WebLogic is not involved at all. Oddly, the main sticking point seems to be simply making sure that class paths refer to the required IBM jars:
              - Required on WLS where MQ objects are bound into JNDI:
              com.ibm.mq.jar, com.ibm.mqjms.jar
              - Required only if MQ objects are bound into JNDI on a different server:
              com.ibm.mq.jar
              If there are problems when using this client, first get it to work using a pure IBM client without any BEA classes involved. Once that is working, search the WL JMS newsgroup for answers and/or contact BEA customer support.
              Notes on Oracle AQ Integration
              If problems are encountered integrating Oracle's built-in queuing (Oracle AQ) JMS client, there is publicly available wrapper code that can aid integrating AQ directly into MDBs, JMS, or the messaging bridge. The solution is titled "Startup class to bind AQ/Referenceable objects to WLS JNDI", is not supported by BEA, and is posted to:
              http://dev2dev.bea.com/codelibrary/code/startupclass.jsp
              Caveats:
              The solution doesn't directly support concurrent consumers. Perhaps Oracle requires that concurrent consumers each have a unique JMS connection? As a work-around, parallel message processing can be achieved indirectly by forwarding AQ messages into a WL JMS destination - which do support concurrent processing.
              Up-to-date versions of Oracle may be required. For more information, google search the weblogic.developer.interest.jms newsgroup for "Oracle" and "AQ".
              The solution doesn't seem to support transactions, it may be possible to extend it to do so.
              MDB Thread Pool Notes
              WL7.0SP? and WL8.1 and later support the "dispatch-policy" field to specify which thread pool an MDB uses to run its instances. In most cases this field should be configured to help address potential performance issues and/or dead-locks:
              http://edocs.bea.com/wls/docs81/ejb/DDreference-ejb-jar.html#dispatch-policy
              (Note that "dispatch-policy" is ignored for non-transactional foreign vendors; in this case, the MDB "onMessage" callback runs in the foreign vendor's thread.)
              MDB Concurrency Notes
              Queue MDBs driven by foreign providers can run multiple instances concurrently. Topic MDBs driven by foreign providers are limited to one instance (not sure, but transactional foreign driven topic MDBs may not have this limitation). The size of the thread pool that the MDB runs in and the "max-beans-in-free-pool" descriptor limit how many instances run concurrently.
              Design Guide-Lines and Performance Tuning Notes
              The "WebLogic JMS Performance Guide" white-paper contains detailed design, performance, and tuning information for Clustering, Messaging Bridge, JMS, and MDBs.
              http://dev2dev.bea.com/products/wlserver/whitepapers/WL_JMS_Perform_GD.jsp
              

  • Not all JMS consumers are created equal

    Hi,
    I am experiencing a very strange problem with weblogic 9.2 JMS.
    I am using JMS as flow control in an application that allows our users to import data into our application.
    the data to be imported varies in size from 100's of records to many hundred thousands of records.
    JMS feed a MDB that takes the request and imports the data. The DD allows to 10 concurrent MDB's to service the requests.
    The problem arises when the 11'th and 12th request comes in. Instead of waiting for the first availibe MDB to service the requests they seems to be put into the queue of the MDB that was started first. If this MDB is in the process of importing a very large file request 11 and 12 will sit and wait until the large one is done even though there are other MDB's that are idle.
    I am hoping that there is an easy fix for this, but for the life of me, I cant seem to find it.
    The DD for the MDB looks as follows
    <weblogic-enterprise-bean>
    <ejb-name>RuleEngineMDB</ejb-name>
    <message-driven-descriptor>
    <pool>
    <max-beans-in-free-pool>10</max-beans-in-free-pool>
    <initial-beans-in-free-pool>10</initial-beans-in-free-pool>
    </pool>
    <destination-jndi-name>com.company.product.RuleEngineRequestQueue</destination-jndi-name>
    </message-driven-descriptor>
    </weblogic-enterprise-bean>
    the queue is defined in Weblog as
    <queue name="RuleEngineReque
    stQueue">
    <sub-deployment-name>MyJMSServer</sub-deployment-name>
    <delivery-params-overrides>
    <delivery-mode>Non-Persistent</delivery-mode>
    </delivery-params-overrides>
    <message-logging-params>
    <message-logging-enabled>true</message-logging-enabled>
    <message-logging-format>%header%,%properties%,%body%</message-logging-format>
    </message-logging-params>
    <jndi-name>com.company.product.RuleEngineRequestQueue</jndi-name>
    </queue>
    regards,
    Lars Hansson
    CTO Compost Marketing AB.

    A little more detail: You will need to configure and target a custom conection factory with "message maximum" set to 1 (the default is 10), and then modify the MDB descriptor to reference the JNDI name of the custom connection factory. The connection factory should be targeted to the entire cluster, and must be targeted to the same cluster that hosts distributed queue. If the MDB is transactional, ensure that that the custom connection factory is also "xa enabled".
    Edited by: TomB on Mar 2, 2010 2:44 PM

  • JMS timeout and redelivery

    I have two simple questions:
    1. Let's suppose a situation when a table lock is present in our database and the MDB regularly runs into this lock every time when the onMessage method is called. It always reserves a new MDB because the MDB created by the previous call is not capable to move back to the pool becaus of the lock. It means if there is no more free bean in the pool a new bean will be created. Hence a simple database lock can cause application server to run out of system resources.
    Is there any way to catch the timeout or how can I avoid this situation?
    2. If consumption of the message fails the message is redelivered successively but the reason of the failure is still present. I wouldn't like to lose these failed messages. Do I have to move these to another queue or is there any standard scenario for this kind of situation? Can I delay the redelivery?
    Thanks in advance

    To the second question, it is dependant of your JMS providers. It may include these configuration parameters to fine-tune redelivery:
    * Redelivery count: The number of times to redeliver a message. Redelivery count is important because poison messages, messages the application can never successfully process, can eventually crash the system.
    * Exception destination: What happens to a message that is redelivered redelivery-count times? The JMS provider can do any of the following:
    o Log the message
    o Forward the message to an exception or error destination
    o Lose the message
    * Time to redeliver: An application that has just rolled back messages might not be ready to reprocess the same messages. This parameter specifies the time to wait before redelivering the message. This delay lets the JMS provider and the application recover to a stable state.
    I know that in weblogic, you can specify this parameters when you specify your JMS settings.
    Actually I work with BES 5.2.1, and I can not specify this settings. It will be a new feature of BES 6.

  • 1 "simple" JMS topic and 2 cluster elements with OSB

    Hi,
    I have 1 simple jms topic (not distributed, not on migratable target) and cluster with 2 members - OSB as main application. My OSB proxy service reads from this topic and saves data to file.
    The problem is that reading from topic appears twice - once by each cluster member. How to configure topic or proxy service for only one reading?

    FYI - At this year's Oracle OpenWorld, which is being held in conjunction with this year's JavaOne, Oracle will be announcing a set of enhancements that are designed to cover this exact use case.
    Tom Barnes
    Session ID: S317469
    Title: New Service-Oriented Architecture Patterns with Enterprise Grid Messaging
    Abstract: Messaging systems are essential in enabling the flexibility and loosely coupled nature of a service-oriented architecture (SOA). Oracle WebLogic Java Message Service (JMS) includes new pub-sub capabilities that make architectures more adaptable, allowing message producers to be ignorant of who is the consumer of a message or how many consumers there are. It also enables easy scale out and dynamic adaptability through clustering and message-driven bean (MDB) enhancements, all while still guaranteeing strict message ordering. This session will outline new JMS capabilities and show how they enable new designs with Oracle WebLogic Server and Oracle Service Bus.
    Speaker(s): Dongbo Xiao, Oracle, Principal Member of Technical Staff
    Biography not available.
    David Cabelus, Oracle USA, Senior Principal Product Manager
    Dave Cabelus is a Senior Principal Product Manager in the WebLogic Server group at Oracle. Dave's responsibilities include product strategy and direction for various pieces of WebLogic Server, including Java Messaging, Operations and Management, Diagnostics, and various other initiatives, and previously included database connectivity, transactions, and Web tier integration. In the industry since 1996 and involved in Java since 1999, Dave worked at various software companies including Logic Works, Platinum Software, Kana, and a few startups before coming to Oracle (BEA) in 2001.
    Event: JavaOne and Oracle Develop
    Stream(s): ORACLE DEVELOP, DEVELOP
    Track(s): Application Grid and Oracle WebLogic
    Tags: Add
    Session Type: Conference Session
    Session Category: Features
    Duration: 60 min.
    Schedule: Thursday, September 23, 11:00AM | Hotel Nikko, Nikko Ballroom II Available
    Edited by: TomB on Aug 12, 2010 1:21 PM

  • Sun App Server cannot use JMS expiration date due to constant pool resize?

    Hello,
    I thought that max-pool-size property could limit the amount of MDB beans created, and thus force the client to wait (and drop the timed out messages). But after reading this description:
    http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4972762
    It looks like that's not the case. So if you combine that with the notion of setting time to live on MDB messages, what does that equal to? Does that mean that your JMS messages will NEVER time out, even if they have TTL or expiration date set on them, because there will always be a new bean created to handle the request?
    I'd appreciate it if someone could explain what's the deal here - what good is setting JMS expiration date if your message never expires? And what is the pool size for, if the number of beans can always be exceeded?
    Thank you,
    Mark

    Hi,
    Please go through the tutorial titled "Deploying to a Sun Java System Application Server" which is available at: http://developers.sun.com/prodtech/javatools/jscreator/learning/tutorials/2/appserverdeploy.html
    Thanks,
    RK.

  • Configure # of JMS consumers for WebServices over JMS Transport

    I'm using WebLogic Server 9.2. My Web Services are using JMS Transport.
    10,000 Web Services requests are submitted to the Web Services JMS queue at the same time. Processing time seems a little slow. In the Admin console, monitoring info of the JMS queue shows the Consumers is 4 and Consumers High is 6.
    I want to scale Web Services processing by increasing the number of JMS consumers that transform JMS request messages into Web Services requests. Does anyone have an idea to configure it?

    Hi,
    I don't think the number of consumers for a service is configurable. There is a single consumer for each service. Well, there is another consumer for interop purposes, which is irrelevant to our discussion here.
    You may be aware that multiple consumers reading from the same queue would result in requests being processed in parallel, which means the order that the requests are processed might be different from the order that they are put into the queue.
    For applications where the order of processing the requests to the same web service is not important, it probably makes sense to have an option of configuring multiple consumers. But this is no such option right now.
    Regards,
    Dongbo, BEA

  • JMS producer and consumer as Web service?

    Q:WSI17-Does Weblogic support JMS producers and consumers as Web service? And could
    it be Topic or Queue?

    A<WSI-17> The message style web services can be producers, consumers or both. Additionally,
    both Point to Point (Queue) and Publish/Subscribe (Topic) domains are supported.
    See the documentation at http://edocs.bea.com/wls/docs61/webServices/develop.html#1031913.
    "Elie Dagher" <[email protected]> wrote:
    >
    Q:WSI17-Does Weblogic support JMS producers and consumers as Web service?
    And could
    it be Topic or Queue?

  • Free pooled db connections

    We've just enabled the PersistenceManager connection pooling, which is
    causing problems becuase we're leaking connections when we redeploy our
    webapp (we're using tomcat).
    I can have the servlet.destroy() method invoked when we're undeploying
    our app, how can I instruct kodo to close/free all pooled DB connections?
    thx,
    david

    We are using oracle and tomcat.
    "Alex Roytman" <[email protected]> wrote in
    news:b8u57c$gq0$[email protected]:
    I will package it and put on our web server over weekend. If you need
    it urgently I can email binaries and source to you now (no docs but
    tomcat config sample)
    What Database and web server are you using (if it oracle/tomcat I can
    supply samples of config files too)
    "Frank Riley" <Frank_Riley@NOSPAM|stchome.com> wrote in message
    news:[email protected]..
    Where can we get this?
    "Alex Roytman" <[email protected]> wrote in
    news:b8s528$fqe$[email protected]:
    Another option is to use external connection pooling component.
    I will be glad to offer our's - it is open source (but not
    published) the only requirement is JDBC2 compliant driver - it
    relies on JDBC2 and does not wrap JDBC1 drivers
    Our pooled datasource supports getConnection() and
    getConnection(user, password) pooling, different growth policies,
    eviction of failed connection without exposing exception to client
    (might depend on driver, tested with oracle) - so bad connection is
    disposed of and new one returned to the client, timer based
    eviction of idle connections from the pool (so it will gradually
    reduce number of idle connections in your pool to zero - very
    convenient for closing all connections during the night), plus
    management interface for getting pool statistics and clearing
    pool(s) as needed even for getConnection(user, password) pools
    designed to work in JNDI env. tested with tomcat4
    "David Michaels" <[email protected]> wrote in message
    news:b8k97c$qel$[email protected]..
    We've just enabled the PersistenceManager connection pooling,
    which is causing problems becuase we're leaking connections when
    we redeploy our webapp (we're using tomcat).
    I can have the servlet.destroy() method invoked when we're
    undeploying our app, how can I instruct kodo to close/free all
    pooled DB connections?
    thx,
    david

  • Can I include MQSeires JMS XADataSource and Oracle JDBC XADataSource in one transaction?

              When I try to use a XADataSource (using Oracle 8.1.6 XA JDBC driver) to update
              a table in onMessage() of a MDB (Message Driven Bean) using container managed
              transaction, an exception occured like this:
              java.sql.SQLException: ORA-06550: ? 1 ?, ? 14 ???: PLS-00201: ??? 'JAVA_XA.XA_START'
              ????? ORA-06550: ? 1 ?, ? 8 ???: PL/SQL: Statement ignored
              at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:114) at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
              at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:542) at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1311)
              at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:738 ) at
              oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.ja va:1313)
              at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.jav a:1232)
              at oracle.jdbc.driver.OracleStatement.doExecuteWithBatch(OracleStatement .java:1353)
              at oracle.jdbc.driver.OracleStatement.doExecute(OracleStatement.java:176 0) at
              oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStateme nt.java:1805)
              at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePrepar edStatement.java:322)
              at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStat ement.java:366)
              at oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java:10 2) at
              weblogic.transaction.internal.ServerResourceInfo.start(ServerResource Info.java:994)
              at weblogic.transaction.internal.ServerResourceInfo.xaStart(ServerResour ceInfo.java:947)
              at weblogic.transaction.internal.ServerResourceInfo.enlist(ServerResourc eInfo.java:206)
              at weblogic.transaction.internal.ServerTransactionImpl.enlistResource(Se rverTransactionImpl.java:316)
              at weblogic.jdbc.common.internal.ConnectionEnv.test(ConnectionEnv.java:6 51) at
              weblogic.common.internal.ResourceAllocator.reserve(ResourceAllocator. java:444)
              at weblogic.common.internal.ResourceAllocator.reserve(ResourceAllocator. java:379)
              at weblogic.common.internal.ResourceAllocator.reserveWaitSecs(ResourceAl locator.java:369)
              at weblogic.jdbc.common.internal.ConnectionPool.reserve(ConnectionPool.j ava:167)
              at weblogic.jdbc.common.internal.ConnectionPool.reserveWaitSecs(Connecti onPool.java:121)
              at weblogic.jdbc.jta.DataSource.getXAConnectionFromPool(DataSource.java: 861)
              at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:7 43) at
              weblogic.jdbc.jta.Connection.getXAConn(Connection.java:130) at weblogic.jdbc.jta.Connection.createStatement(Connection.java:201)
              at weblogic.jdbc.rmi.internal.ConnectionImpl.createStatement(ConnectionI mpl.java:71)
              at weblogic.jdbc.rmi.SerialConnection.createStatement(SerialConnection.j ava:42)
              at MDB.onMessage(MDB.java:46) at weblogic.ejb20.internal.MDListener.execute(MDListener.java:221)
              at weblogic.ejb20.internal.MDListener.onMessage(MDListener.java:175) at com.ibm.mq.jms.MQQueueReceiver.receiveAsync(MQQueueReceiver.java:640)
              at com.ibm.mq.jms.SessionAsyncHelper.run(SessionAsyncHelper.java:355) java.sql.SQLException:
              ORA-06550: ? 1 ?, ? 14 ???: PLS-00201: ??? 'JAVA_XA.XA_START' ????? ORA-06550:
              ? 1 ?, ? 8 ???: PL/SQL: Statement ignored
              at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:114) at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
              at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:542) at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1311)
              at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:738 ) at
              oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.ja va:1313)
              at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.jav a:1232)
              at oracle.jdbc.driver.OracleStatement.doExecuteWithBatch(OracleStatement .java:1353)
              at oracle.jdbc.driver.OracleStatement.doExecute(OracleStatement.java:176 0) at
              oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStateme nt.java:1805)
              at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePrepar edStatement.java:322)
              at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStat ement.java:366)
              at oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java:10 2) at
              weblogic.jdbc.jta.DataSource.start(DataSource.java:324) at weblogic.transaction.internal.ServerResourceInfo.start(ServerResource
              Info.java:994) at weblogic.transaction.internal.ServerResourceInfo.xaStart(ServerResour
              ceInfo.java:947) at weblogic.transaction.internal.ServerResourceInfo.enlist(ServerResourc
              eInfo.java:206) at weblogic.transaction.internal.ServerTransactionImpl.enlistResource(Se
              rverTransactionImpl.java:316) at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:817)
              at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:7 88) at
              weblogic.jdbc.jta.Connection.getXAConn(Connection.java:130) at weblogic.jdbc.jta.Connection.createStatement(Connection.java:201)
              at weblogic.jdbc.rmi.internal.ConnectionImpl.createStatement(ConnectionI mpl.java:71)
              at weblogic.jdbc.rmi.SerialConnection.createStatement(SerialConnection.j ava:42)
              at MDB.onMessage(MDB.java:46) at weblogic.ejb20.internal.MDListener.execute(MDListener.java:221)
              at weblogic.ejb20.internal.MDListener.onMessage(MDListener.java:175) at com.ibm.mq.jms.MQQueueReceiver.receiveAsync(MQQueueReceiver.java:640)
              at com.ibm.mq.jms.SessionAsyncHelper.run(SessionAsyncHelper.java:355) java.sql.SQLException:
              XA error: XAER_RMERR : A resource manager error has occur ed in the transaction
              branch start() failed on resource 'jtaXAPool' null at weblogic.jdbc.jta.DataSource.enlist(DataSource.java:822)
              at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:7 88) at
              weblogic.jdbc.jta.Connection.getXAConn(Connection.java:130) at weblogic.jdbc.jta.Connection.createStatement(Connection.java:201)
              at weblogic.jdbc.rmi.internal.ConnectionImpl.createStatement(ConnectionI mpl.java:71)
              at weblogic.jdbc.rmi.SerialConnection.createStatement(SerialConnection.j ava:42)
              at MDB.onMessage(MDB.java:46) at weblogic.ejb20.internal.MDListener.execute(MDListener.java:221)
              at weblogic.ejb20.internal.MDListener.onMessage(MDListener.java:175) at com.ibm.mq.jms.MQQueueReceiver.receiveAsync(MQQueueReceiver.java:640)
              at com.ibm.mq.jms.SessionAsyncHelper.run(SessionAsyncHelper.java:355)
              Does that mean WLS 6.0 SP1 can not include JMS XADataSource and JDBC XADataSource
              in one distributed transaction managed by container?
              

              It should work. Check out the documentation on our developer center for
              more information. Developer.BEA.com
              Michael Girdley
              BEA Systems
              Learning WebLogic? http://learnweblogic.com
              "Sam Ni" <[email protected]> wrote in message
              news:[email protected]...
              >
              > When I try to use a XADataSource (using Oracle 8.1.6 XA JDBC driver) to
              update
              > a table in onMessage() of a MDB (Message Driven Bean) using container
              managed
              > transaction, an exception occured like this:
              >
              > java.sql.SQLException: ORA-06550: ? 1 ?, ? 14 ???: PLS-00201: ???
              'JAVA_XA.XA_START'
              > ????? ORA-06550: ? 1 ?, ? 8 ???: PL/SQL: Statement ignored
              >
              > at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:114) at
              oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
              > at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:542) at
              oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1311)
              > at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:738 )
              at
              > oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.ja
              va:1313)
              > at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.jav
              a:1232)
              > at oracle.jdbc.driver.OracleStatement.doExecuteWithBatch(OracleStatement
              .java:1353)
              > at oracle.jdbc.driver.OracleStatement.doExecute(OracleStatement.java:176
              0) at
              > oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStateme
              nt.java:1805)
              > at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePrepar
              edStatement.java:322)
              > at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStat
              ement.java:366)
              > at oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java:10
              2) at
              > weblogic.transaction.internal.ServerResourceInfo.start(ServerResource
              Info.java:994)
              > at weblogic.transaction.internal.ServerResourceInfo.xaStart(ServerResour
              ceInfo.java:947)
              > at weblogic.transaction.internal.ServerResourceInfo.enlist(ServerResourc
              eInfo.java:206)
              > at weblogic.transaction.internal.ServerTransactionImpl.enlistResource(Se
              rverTransactionImpl.java:316)
              > at weblogic.jdbc.common.internal.ConnectionEnv.test(ConnectionEnv.java:6
              51) at
              > weblogic.common.internal.ResourceAllocator.reserve(ResourceAllocator.
              java:444)
              > at weblogic.common.internal.ResourceAllocator.reserve(ResourceAllocator.
              java:379)
              > at weblogic.common.internal.ResourceAllocator.reserveWaitSecs(ResourceAl
              locator.java:369)
              > at weblogic.jdbc.common.internal.ConnectionPool.reserve(ConnectionPool.j
              ava:167)
              > at weblogic.jdbc.common.internal.ConnectionPool.reserveWaitSecs(Connecti
              onPool.java:121)
              > at weblogic.jdbc.jta.DataSource.getXAConnectionFromPool(DataSource.java:
              861)
              > at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:7
              43) at
              > weblogic.jdbc.jta.Connection.getXAConn(Connection.java:130) at
              weblogic.jdbc.jta.Connection.createStatement(Connection.java:201)
              > at weblogic.jdbc.rmi.internal.ConnectionImpl.createStatement(ConnectionI
              mpl.java:71)
              > at weblogic.jdbc.rmi.SerialConnection.createStatement(SerialConnection.j
              ava:42)
              > at MDB.onMessage(MDB.java:46) at
              weblogic.ejb20.internal.MDListener.execute(MDListener.java:221)
              > at weblogic.ejb20.internal.MDListener.onMessage(MDListener.java:175) at
              com.ibm.mq.jms.MQQueueReceiver.receiveAsync(MQQueueReceiver.java:640)
              >
              >
              > at com.ibm.mq.jms.SessionAsyncHelper.run(SessionAsyncHelper.java:355)
              java.sql.SQLException:
              > ORA-06550: ? 1 ?, ? 14 ???: PLS-00201: ??? 'JAVA_XA.XA_START' ?????
              ORA-06550:
              > ? 1 ?, ? 8 ???: PL/SQL: Statement ignored
              >
              > at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:114) at
              oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
              > at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:542) at
              oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1311)
              > at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:738 )
              at
              > oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.ja
              va:1313)
              > at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.jav
              a:1232)
              > at oracle.jdbc.driver.OracleStatement.doExecuteWithBatch(OracleStatement
              .java:1353)
              > at oracle.jdbc.driver.OracleStatement.doExecute(OracleStatement.java:176
              0) at
              > oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStateme
              nt.java:1805)
              > at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePrepar
              edStatement.java:322)
              > at oracle.jdbc.driver.OraclePreparedStatement.execute(OraclePreparedStat
              ement.java:366)
              > at oracle.jdbc.xa.client.OracleXAResource.start(OracleXAResource.java:10
              2) at
              > weblogic.jdbc.jta.DataSource.start(DataSource.java:324) at
              weblogic.transaction.internal.ServerResourceInfo.start(ServerResource
              > Info.java:994) at
              weblogic.transaction.internal.ServerResourceInfo.xaStart(ServerResour
              > ceInfo.java:947) at
              weblogic.transaction.internal.ServerResourceInfo.enlist(ServerResourc
              > eInfo.java:206) at
              weblogic.transaction.internal.ServerTransactionImpl.enlistResource(Se
              > rverTransactionImpl.java:316) at
              weblogic.jdbc.jta.DataSource.enlist(DataSource.java:817)
              > at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:7
              88) at
              > weblogic.jdbc.jta.Connection.getXAConn(Connection.java:130) at
              weblogic.jdbc.jta.Connection.createStatement(Connection.java:201)
              > at weblogic.jdbc.rmi.internal.ConnectionImpl.createStatement(ConnectionI
              mpl.java:71)
              > at weblogic.jdbc.rmi.SerialConnection.createStatement(SerialConnection.j
              ava:42)
              > at MDB.onMessage(MDB.java:46) at
              weblogic.ejb20.internal.MDListener.execute(MDListener.java:221)
              > at weblogic.ejb20.internal.MDListener.onMessage(MDListener.java:175) at
              com.ibm.mq.jms.MQQueueReceiver.receiveAsync(MQQueueReceiver.java:640)
              >
              >
              > at com.ibm.mq.jms.SessionAsyncHelper.run(SessionAsyncHelper.java:355)
              java.sql.SQLException:
              > XA error: XAER_RMERR : A resource manager error has occur ed in the
              transaction
              > branch start() failed on resource 'jtaXAPool' null at
              weblogic.jdbc.jta.DataSource.enlist(DataSource.java:822)
              > at weblogic.jdbc.jta.DataSource.refreshXAConnAndEnlist(DataSource.java:7
              88) at
              > weblogic.jdbc.jta.Connection.getXAConn(Connection.java:130) at
              weblogic.jdbc.jta.Connection.createStatement(Connection.java:201)
              > at weblogic.jdbc.rmi.internal.ConnectionImpl.createStatement(ConnectionI
              mpl.java:71)
              > at weblogic.jdbc.rmi.SerialConnection.createStatement(SerialConnection.j
              ava:42)
              > at MDB.onMessage(MDB.java:46) at
              weblogic.ejb20.internal.MDListener.execute(MDListener.java:221)
              > at weblogic.ejb20.internal.MDListener.onMessage(MDListener.java:175) at
              com.ibm.mq.jms.MQQueueReceiver.receiveAsync(MQQueueReceiver.java:640)
              >
              >
              > at com.ibm.mq.jms.SessionAsyncHelper.run(SessionAsyncHelper.java:355)
              >
              >
              > Does that mean WLS 6.0 SP1 can not include JMS XADataSource and JDBC
              XADataSource
              > in one distributed transaction managed by container?
              >
              >
              

Maybe you are looking for

  • Unzip/Unstuff Folder Action

    I wanted to set up a folder in which a file would automatically unzip/unstuff once it is done downloading from an FTP site, and V.K. in the Automator board showed me this applescript: <pre style=" font-family: Monaco, 'Courier New', Courier, monospac

  • FaceTime not working on Ipad Mini

    Hi. Hoping someone cn help. Currently travelling in Asia. My Ipad Mini has stopped working with FaceTime. Have been in communication with home for months with no issue and suddenly it will not answer or dial out. Simply gives a busy signal!!!.  Will

  • Is there a virtual pc or Windows emulator for iMac intel duo?

    Hi there, I just got a new iMac intel duo last week and its fantastic. Unfornatuly I need to run a stock market program that only runs on windows... This is the only program that i need to run on the windows platform. I was told to get the intel duo

  • How do I delete the audio from a video in Premiere Elements 10?

    I took a video on the beach and all you hear is loud, irritating wind roar. I would like to delete the original sound and then add in musical tract on the project. Thank you for any help. I have searched the settings and right-clicked to no avail.

  • CD/DVD not recognized by Macbook Pro, 10.6.8

    Computer info: MacBook Pro 15.4/2.8/2X2GB/500/SD; 2009, running Snow Leopard 10.6.8, MATSHITA DVD-R   UJ-868 I have used CD's and DVD's before on this computer with this OS, without any problems Now: all CD's show up as untitled, show as having no co