Configuring WL JMS as a foreign JMS provider with security scope (WLS 8.1)

Hello, i have a problem accessing a queue from a foreign jms provider, if the queue has a security policy. I have the following scenario:
          1) Server server1 in domain1 (WLS81) has a JMS Server with one queue queue1 with a security policy "Caller is a member of the group GROUP_QUEUE". There is also a user USER_QUEUE user defined, which belongs to the this group.
          There is also a ConnectionFactory with "XA Connection Factory Enabled = true" configured.
          The queue and the connection factory are visible in the jndi tree of this server.
          2) Server server2 has a foreign jms server. Foreign JMSConnectionFactory and foreign JMSDestination refer to the jndi entries of server 1. For Foreign JMS Connection Factory username is set to USER_QUEUE. JNDI entries for foreign references are visible in jndi tree of this server.
          I wrote a standalone client to store messages in the queue accessing server1 with USER_QUEUE sucessfully.
          Now I try to deploy a MDB on server2 accessing the queue on server 1. I tried different versions of ejb-jar.xml/weblogic-ejb-jar.xml to access the queue, but with no luck.
          scenario a): no security entries in both descriptors; weblogic-descr has entries <destination-jndi-name> and <connection-factory-jndi-name> pointing to the local jndi names. REsult:
          <11.02.2005 19.16 Uhr CET> <Warning> <EJB> <BEA-010061> <The Message-Driven EJB:
          CancelEasyMoneyBean is unable to connect to the JMS destination: prepaid.Cancel
          EasyMoneyQueue. The Error was:
          [EJB:010196]'weblogic.jms.common.JMSSecurityException: Access denied to resource
          : type=<jms>, application=, destinationType=queue, resource=CancelEasyMoneyQueue
          , action=receive' Linked exception = 'weblogic.jms.common.JMSSecurityException:
          Access denied to resource: type=<jms>, application=, destinationType=queue, reso
          urce=CancelEasyMoneyQueue, action=receive'
          So entering username and password for ForeignJMSConnectionFactory doesn't do the trick.
          scenario b:) trying to set additional security entries in both descriptors. I added a role queueUser to my mdb and to weblogic-descr a
          <security-role-assignment>
          <role-name>queueUser</role-name>
          <principal-name>USER_QUEUE<principal-name>
          </security-role-assignment>
          I added the user USER_QUEUE and the group GROUP_QUEUE to server2.
          Now server 1 throws exception after redeployment on server 2:
          java.lang.SecurityException: [Security:090398]Invalid Subject: principals=[USER_QUEUE, GROUP_QUEUE].
          java.lang.SecurityException: [Security:090398]Invalid Subject: principals=[USER_QUEUE, GROUP_QUEUE]
          at weblogic.security.service.SecurityServiceManager.seal(SecurityService
          Manager.java:680)
          Has anybody an idea or a pointer how to define access from a mdb to a foreign queue using security ?
          Thanks in advance,
          Rainer

Hello, i have a problem accessing a queue from a foreign jms provider, if the queue has a security policy. I have the following scenario:
          1) Server server1 in domain1 (WLS81) has a JMS Server with one queue queue1 with a security policy "Caller is a member of the group GROUP_QUEUE". There is also a user USER_QUEUE user defined, which belongs to the this group.
          There is also a ConnectionFactory with "XA Connection Factory Enabled = true" configured.
          The queue and the connection factory are visible in the jndi tree of this server.
          2) Server server2 has a foreign jms server. Foreign JMSConnectionFactory and foreign JMSDestination refer to the jndi entries of server 1. For Foreign JMS Connection Factory username is set to USER_QUEUE. JNDI entries for foreign references are visible in jndi tree of this server.
          I wrote a standalone client to store messages in the queue accessing server1 with USER_QUEUE sucessfully.
          Now I try to deploy a MDB on server2 accessing the queue on server 1. I tried different versions of ejb-jar.xml/weblogic-ejb-jar.xml to access the queue, but with no luck.
          scenario a): no security entries in both descriptors; weblogic-descr has entries <destination-jndi-name> and <connection-factory-jndi-name> pointing to the local jndi names. REsult:
          <11.02.2005 19.16 Uhr CET> <Warning> <EJB> <BEA-010061> <The Message-Driven EJB:
          CancelEasyMoneyBean is unable to connect to the JMS destination: prepaid.Cancel
          EasyMoneyQueue. The Error was:
          [EJB:010196]'weblogic.jms.common.JMSSecurityException: Access denied to resource
          : type=<jms>, application=, destinationType=queue, resource=CancelEasyMoneyQueue
          , action=receive' Linked exception = 'weblogic.jms.common.JMSSecurityException:
          Access denied to resource: type=<jms>, application=, destinationType=queue, reso
          urce=CancelEasyMoneyQueue, action=receive'
          So entering username and password for ForeignJMSConnectionFactory doesn't do the trick.
          scenario b:) trying to set additional security entries in both descriptors. I added a role queueUser to my mdb and to weblogic-descr a
          <security-role-assignment>
          <role-name>queueUser</role-name>
          <principal-name>USER_QUEUE<principal-name>
          </security-role-assignment>
          I added the user USER_QUEUE and the group GROUP_QUEUE to server2.
          Now server 1 throws exception after redeployment on server 2:
          java.lang.SecurityException: [Security:090398]Invalid Subject: principals=[USER_QUEUE, GROUP_QUEUE].
          java.lang.SecurityException: [Security:090398]Invalid Subject: principals=[USER_QUEUE, GROUP_QUEUE]
          at weblogic.security.service.SecurityServiceManager.seal(SecurityService
          Manager.java:680)
          Has anybody an idea or a pointer how to define access from a mdb to a foreign queue using security ?
          Thanks in advance,
          Rainer

Similar Messages

  • Problems using NSS library as PKCS#11 provider with JAVA 6

    Hi,
    I�m trying to configure JAVA 6 on Solaris 10 SPARC to use Mozilla NSS library as PKCS#11 provider (to achieve FIPS-140 certification for my application). I�m following the guidelines from http://java.sun.com/javase/6/docs/technotes/guides/security/p11guide.html#NSS but unfortunately something doesn�t work for me as expected...
    Let me describe the exact steps that I followed (because devil may be in the small details :-)
    I downloaded NSS 3.11.4 and NSPR 4.6.4 binaries from mozilla.org (32 bit �debug� versions for Solaris 9, because these were the only �binary� versions for SPARC available on Mozilla site and as far as I understand these are the exact versions that passed FIPS-140 certification), unpacked them under the /opt directory and copied both of them into a single /opt/nss tree as follows:
    mkdir /opt/nss
    cp �r /opt/nss-3.11.4/* /opt/nss
    cp �r /opt/nspr-4.6.4/* /opt/nss
    I created a PKCS#11 configuration file /opt/nss/pkcs11.cfg as per JAVA 6 security guide:
    name = NSScrypto
    nssLibraryDirectory = /opt/nss/lib
    nssDbMode = noDb
    attributes = compatibility
    (I know that this configuration is not for FIPS mode � but I thought that I�d better start with a simple NSS configuration)
    Then I modified /usr/jdk/jdk1.6.0_03/jre/lib/security/java.security file and replaced 1st provider with:
    security.provider.1=sun.security.pkcs11.SunPKCS11 /opt/nss/pkcs11.cfg
    Now everything should be in place � so I created a small JAVA program and ran it:
    import javax.crypto.SecretKeyFactory;
    import javax.crypto.spec.DESedeKeySpec;
    import javax.crypto.SecretKey;
    import javax.crypto.Cipher;
    import java.security.*;
    public class Test
    public static void main(String[] args)
    try
    SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede");
    DESedeKeySpec keySpec = null;
    keySpec = new DESedeKeySpec(new String("laKuf1Tcc6sOhsdPf49=m4es").getBytes());
    System.out.println("keyFactory provider: " + keyFactory.getProvider().getName());
    SecretKey key = keyFactory.generateSecret(keySpec);
    Cipher decryptCipher = Cipher.getInstance("DESede");
    decryptCipher.init(Cipher.DECRYPT_MODE, key);
    System.out.println("decryptCipher provider: " + decryptCipher.getProvider().getName());
    catch (Exception ex)
    ex.printStackTrace();
    Unfortunately it produced the following output:
    EMS-Server42# java test
    keyFactory provider: SunPKCS11-NSScrypto
    decryptCipher provider: SunJCE
    And when I comment out SunJCE provider in java.security file I get the following exception:
    java.security.NoSuchAlgorithmException: Cannot find any provider supporting DESede
    at javax.crypto.Cipher.getInstance(DashoA13*..)
    at test.main(test.java:38)
    So it looks like something is wrong with my NSS configuration. Because AFAIK DESede (3DES) is supported by the NSS library, but for some reason JAVA doesn�t see this algorithm implemented in NSS PKCS#11 provider.
    Any suggestions on what am I doing wrong?
    Best regards,
    Alex

    Works for me:
    import java.security.Provider;
    import java.security.SecureRandom;
    import java.security.Security;
    import javax.crypto.Cipher;
    import javax.crypto.SecretKey;
    import javax.crypto.SecretKeyFactory;
    import javax.crypto.spec.DESedeKeySpec;
    import javax.crypto.spec.IvParameterSpec;
    public class Test
      public static void main(String[] args)
        try
          String configFileName = "/nss/nss.cfg";
          Provider nss = new sun.security.pkcs11.SunPKCS11(configFileName);
          Security.addProvider(nss);
          SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede", nss);
          DESedeKeySpec keySpec = new DESedeKeySpec(new String("laKuf1Tcc6sOhsdPf49=m4es").getBytes("UTF-8"));
          System.out.println("keyFactory provider: " + keyFactory.getProvider().getName());
          SecretKey key = keyFactory.generateSecret(keySpec);
          //iv for CBC mode - note, in practice you don't generate a random iv for decryption :)
          byte[] iv = new byte[8];  //64-bit block size for 3DES
          SecureRandom sr = SecureRandom.getInstance("PKCS11", nss);
          sr.nextBytes(iv);
          IvParameterSpec params = new IvParameterSpec(iv);
          Cipher decryptCipher = Cipher.getInstance("DESede/CBC/NoPadding", nss);
          decryptCipher.init(Cipher.DECRYPT_MODE, key, params);
          System.out.println("decryptCipher provider: " + decryptCipher.getProvider().getName());
        catch (Exception ex)
          ex.printStackTrace();
    }Oh, I wouldn't expect your key loading to work when you switch over to FIPS mode.
    cfg file:
    name = NSScrypto
    nssLibraryDirectory = /nss
    nssSecmodDirectory = /nss
    nssModule = fipsYields the following error:
    java.security.spec.InvalidKeySpecException: java.security.InvalidKeyException: Could not create key
    because you can't directly handle keying material in FIPS. You'll have to save the secret key in the NSS certDB or generate a random one each time and send it wrapped to the other side.

  • [EJB:010112] - error with WLI8.1 Event Generator for foreign JMS/MQ provider

    I'm getting following error in weblogic server log when starting a JMS Event generator
    to a foreign JMS(MQ5.3) Queue.
    <May 4, 2004 4:44:35 PM PDT> <Warning> <EJB> <BEA-010096> <The Message-Driven
    EJ
    B: mqQueueEventGen is unable to connect to the JMS destination: WAL1021852D_Test
    JMSQueue. Connection failed after 2 attempts. The MDB will attempt to reconnect
    every 10 seconds. This log message will repeat every 600 seconds until the condi
    tion clears.>
    <May 4, 2004 4:44:35 PM PDT> <Warning> <EJB> <BEA-010061> <The Message-Driven
    EJ
    B: mqQueueEventGen is unable to connect to the JMS destination: WAL1021852D_Test
    JMSQueue. The Error was:
    [EJB:010112]The Message Driven Bean 'mqQueueEventGen' is transacted, but the pro
    vider defined in the EJB is not transacted. Provider should be transacted if onM
    essage method in MDB is transacted.>
    My WLI8.1.2 is patched with CR131686_812.zip to support event generator for foreign
    JMS destinations. The foreign JMS/MQ provider is configured properly. QueueSend/Receive
    were tested fine with JMS java code using local JNDI names of foreign JMS objects.
    So we know that foreign Queue is active and accessiable from webLogic.
    Anyone run into this? Solution?
    Thanks,
    Scott

    Hi Scott,
    I need a transaction from the MDB since I am not using an EJb to pursue the action.
    Hence I need to retain the <trans-attribute>Required</trans-attribute> at the
    MDB.
    Have any answers?
    Pradip
    "Scott Yen" <[email protected]> wrote:
    >
    It's resolved.
    The MDB automatically created by JMS Event Generator defaults to be deployed
    with
    “transacted”. That requires the foreign JMS provider to be “XA”.
    The deployment descriptor is created as <domain-directory>/WLIJmsEG_<event_gen_name>.jar
    e.g. C:\bea812\user_projects\domains\jmsInterop\WLIJmsEG_mqQueueEventGen.jar
    Since MQ in the localhost and remote SLUDV18 are not XA-enabled, we had
    to manually
    change the <container-transaction> section in ejb-jar.xml:
    From :
    <trans-attribute>Required</trans-attribute>
    To:
    <trans-attribute>NotSupported</trans-attribute>
    "Scott Yen" <[email protected]> wrote:
    I'm getting following error in weblogic server log when starting a JMS
    Event generator
    to a foreign JMS(MQ5.3) Queue.
    <May 4, 2004 4:44:35 PM PDT> <Warning> <EJB> <BEA-010096> <The Message-Driven
    EJ
    B: mqQueueEventGen is unable to connect to the JMS destination: WAL1021852D_Test
    JMSQueue. Connection failed after 2 attempts. The MDB will attempt to
    reconnect
    every 10 seconds. This log message will repeat every 600 seconds until
    the condi
    tion clears.>
    <May 4, 2004 4:44:35 PM PDT> <Warning> <EJB> <BEA-010061> <The Message-Driven
    EJ
    B: mqQueueEventGen is unable to connect to the JMS destination: WAL1021852D_Test
    JMSQueue. The Error was:
    [EJB:010112]The Message Driven Bean 'mqQueueEventGen' is transacted,
    but the pro
    vider defined in the EJB is not transacted. Provider should be transacted
    if onM
    essage method in MDB is transacted.>
    My WLI8.1.2 is patched with CR131686_812.zip to support event generator
    for foreign
    JMS destinations. The foreign JMS/MQ provider is configured properly.
    QueueSend/Receive
    were tested fine with JMS java code using local JNDI names of foreign
    JMS objects.
    So we know that foreign Queue is active and accessiable from webLogic.
    Anyone run into this? Solution?
    Thanks,
    Scott

  • Foreign JMS Server Persistance\Retry in case Remote JMS Provider goes down

    Hi All
    I would need more clarity on this. How does the Foreign JMS Server behave in case the remote JMS provider goes down. Does it take the message from the Publishing Proxy Service and retries\persists the JMS Message till the remote provide is up?
    Please let us know. This would effect our design as retrial is very important here. Thanks

    If you want to provide guaranteed delivery with automatic retries when using remote JMS implementations, there are multiple ways to implement it:
    1. While reading from a foreign JMS destination
    Create a Foreign JMS server using transactional drivers (use XA in case of JMS). The messages remain on remote server JMS queue and OSB proxy polls the message directly on remote server. So if Remote Server is down OSB will not be able to read the message. Once remote server is up OSB will pick up the message (as long as foreign JMS server provides persistence and maintains the messages in the queue during a server restart). In case of error in OSB foreign queue can do retry if it provides a retry mechanism.
    2. While writing the message to a foreign JMS destination
    a. Use a foreign JMS server using transactional connection. Put the retry mechanism in OSB Business service which writes to the foreign JMS/MQ queue. In case of failure Business Service can retry based on configuration. If you want to provide guaranteed delivery then create a local JMS queue to store the messages. So when remote destination is down for a long time undelivered messages will be rolled back to the local queue. You can put retry mechanism on the local queue.
    b. Use a messaging bridge which will write the messages to the remote destination. You can configure retry delivery rules in messaging bridge so once busienss service writes the message to the bridge, a SAF agent will ensure the delivery to remote destination whenever it is up.

  • MDB behavior with Foreign JMS Provider

              I am experiencing some MDB behavior which I do not quite understand. I would appreciate
              if someone could tell me what might be happening.
              An application on WebLogic 8.1 SP1 (also tried it with SP2) has MDB's which listen
              on a MQ Queue. If I put a large XML message on the MQ Queue (say around 600 KB),
              the onMessage execution is very random, For the large messages only 1 MDB gets
              invoked and the other messages just sit on the MQ Queue. Even though I have defined
              an weblogic execute queue for the MDB's and they have 15 threads allocated.
              The other messages get picked up after the first one gets completed. The problem
              is the whole transaction (which is XA) can take a while (upto 10 minutes). This
              is not intended, but for some reason it takes that long.
              Also, while monitoring the MDB execute queues, I noticed that none of the threads
              from that queue are performing the work and a thread dump shows that the weblogic.ejb20.internal.JMSPoller
              thread has invoked the MDB and is currently waiting for the database to finish
              some processing.
              When the message size is smaller, the MDB's fire concurrently and are executed
              on the MDB execute queue.
              Thanks,
              Ketan.
              

    When we're using MDBs against a foreign JMS provider with XA, the EJB
              container tries to reduce the number of threads that are blocked waiting for
              a message. You should see lots of threads working when there are lots of
              messages on the queue, a few threads (or only one) working when the queue is
              empty or nearly so, and there should be some ramp-up and ramp-down time in
              between. It sounds like the ramp-up takes longer in your case because
              receiving the very first message takes a long time.
              If this behavior is causing big problems for you, you might want to contact
              product support and file an enhancement request.
              greg
              "Ketan" <[email protected]> wrote in message
              news:[email protected]...
              >
              > Here is some more information regarding this issue.
              >
              > When I place sufficiently large messages (such that the parsing and
              processing
              > of these messages takes longer than it does for normal size messages), I
              notice
              > the following behavior.
              >
              > Lets say I put 6 large messages on the MQ Queue. The server immediately
              picks
              > up 1 message and starts processing it. The other 5 messages are sitting on
              the
              > MQ Queue, while the MDB execute queue has all 15 idle threads.
              >
              > After the processing of the message is done, 2 messages get picked up.
              This time,
              > 1 thread in the MDB execute queue gets the message and the other is
              processed
              > by the JMSPoller thread. After these 2 messages are processed, 3 Messages
              get
              > picked up and this time 2 messages are on the MDB execute queue and 1 is
              processed
              > by the JMSPoller.
              >
              > So based on this the question is ..Is this the expected behavior? I was
              under
              > the impression that the poller would simply dispatch messages to the
              execute queue,
              > and as a result, I was expecting all the messages would get picked up from
              the
              > MQ queue pretty fast and would not have to wait for 1 or more MDB's to
              finish
              > processing.
              >
              > I would really appreciate any suggestions anyone may have for me.
              >
              > Again the environment is WLS 8.1 SP2, MQ 5.3
              >
              > thanks,
              > Ketan
              

  • Configuration of JMS receiver  Using Jboss JMS provider

    Hi all..
    I am configuring JMS adapter as receiver.
    I am using JMS provider JBOSS .
    I hav done configuration as
    Transport protocol :Acess JMS provider with JNDI
    JNDI lookUp Name of q connection factory: org.jboss.naming.LinkRefPairService
    Name of JNDI initial Context factory :org.jnp.interfaces.NamingContextFactory
    in sxmb_moni I am getting blak&white flag
    IN Run time work bench In adapter monitoring I am getting
    Receiver channel. Details: Cannot instantiate class: org.jnp.interfaces.NamingContextFactory.
    Can anybody plz tell me why this haapend?

    Did you deploy the JMS client jars to the J2EE Engine?
    Cannot instantiate class: org.jnp.interfaces.NamingContextFactory  sounds like the Framework can't find the class.
    Take a look here:
    Re: Using JBOSS JMS provider with XI
    Greetz
          Sebastian
    Message was edited by: Sebastian Simon

  • Foreign JMS provider

    Hi,
    I have a pool of MDB's running on wls 9.x (subscriber). MDB pools subscribe to JMS Topics runnng on wls 10 MP1 (publisher).
    Do I need to import publisher as a foreign jms provider into the subscriber domain ?
    Why not use simple t3 config from the subscriber side (specify publisher's t3 url etc.)?
    What are the pros and cons of either approach ?
    Thanx,

    Hi,
    WebLogic MDBs provide the option of either specifying the URL for the source destination directly inside the MDB descriptor, or specifying the URL via a foreign JMS provider.
    I think the trade-offs are discussed in the MDB programmer's guide, but I think that the main benefit of using a foreign JMS is that it provides the opportunity to administratively change the URL without changing the descriptor. You can also use the foreign JMS config to change the mapping for destination.
    By the way, if you use Foreign JMS, don't forget to specify a connection factory JNDI name in the MDB descriptor that references a connection factory mapping that's advertised locally by the Foreign JMS feature.
    Tom

  • Setting up re-delivery attempts in Foreign JMS Configuration !!!

    Hi All
    Could anyone please let know if it's possible to set number of re-delivery attempts for a JMS message in case of foreign JMS server configuration.
    I am using weblogic 8.1 SP6. If it is possible, the please let me know how to set it up.
    Thanks in advance.

    Redelivery limits in WebLogic are implemented within WebLogic JMS - not in the MDB container.
    If the foreign destination happens to be WebLogic JMS, then you can set a redelivery limit by configuring it on the MDB's source destination.
    If the foreign destination is not WebLogic JMS, then I can think of three options:
    -- Check with the foreign vendor to see if they have a redelivery limit feature.
    -- Consider changing the producer application to set expiration times on the messages (whether this is a useful approach for you depends on your application).
    -- Custom code your MDB application to take a different action once it detects a high redelivery count, or perhaps even code a separate application that only dequeues messages that have a high delivery count. Some JMS vendors (such as WebLogic JMS 9.0 and later), include a "JMSXDeliveryCount" property in each message that simplifies such coding.
    Hope this helps!
    Tom Barnes
    WebLogic JMS Developer Team

  • One phase commit optimization with AQ as Foreign JMS Provider?

    Hello,
    we currently use Weblogic JMS and Oracle DB in our server. This requires XA and the two phase commit.
    We are considering to switch from Weblogic JMS to Oracle AQ. The main reason is to move persistence from files to the DB (which is RAC). We could use JDBC persistence, but we think AQ will be more efficient and flexible.
    We also hope that using AQ will allow WLS to make use of the one phase commit optimization in XA (when only one resource manager is involved). But I am wondering if the extra abstraction of the Foreign JMS Provider prevents that optimization.
    Anybody know? Have tried this?
    Thanks...
    Roger

    This might be of help to you. https://xa-compliant-oracleaq.projects.dev2dev.bea.com
              In this case, whenever the MDB polls on the bound QCF(This is a Referenceable Object), WebLogic calls the ObjectFactory class and recreates the QCF for the MDB. I think you can take a similar approach. Mind you will have to implement the Referenceable interface for this. This way, you won't have to re-run your startup class.
              cheers !
              Dips

  • Foreign jms queue binding problem

              Hi,
              I am on the way to wls7.0 from wls5.1, but I got a probelm when I tried to rebind
              the jms queue to weblogic jndi.
              [javax.naming.ConfigurationException [Root exception is java.rmi.MarshalException:
              failed to marshal rebind(Ljava.lang.String;Ljava.lang.Object;Ljava.util.Hasht
              able;); nested exception is: java.io.NotSerializableException]]
              Can I bind the queue to wls jndi? Anybody has silimar situation?
              Thanks
              

    Hi Jen,
              As TOM said, in your case weblogic interaoperabilty supports only from
              weblogic 5.1 to 6.1, that to specified service packs. you can go through the
              following url
              http://e-docs.bea.com/wls/docs61/interop/interop.html
              So you better go by using message bridges for foreign jms providers. The
              document has how you can configure about JNDI provider either File based Or
              Ldap based.
              Thanks
              Kumar
              "Je" <[email protected]> wrote in message
              news:[email protected]...
              >
              > Thanks, actually I am trying to rebind the jms queue from Fiorano
              > MQ. It works fine in wls5.1. Is there special requirement for jndi for
              wls7.1,
              > does the object needs to be serilizable to be bind into jndi?
              >
              > Tom Barnes <[email protected]> wrote:
              > >
              > >It seems you are trying to access 5.1 JMS from 7.0. WebLogic did not
              > >
              > >support interoperability between versions until 6.1. The classes are
              > >
              > >not compatible. So interop requires a good bit of class-loader magic.
              > >
              > > The only way to interop between JMS 5.1 and 7.0 is to use the
              > >messaging bridge (which does the magic for you).
              > >
              > >FYI: I think that it may be possible to invoke remote 5.1 methods from
              > >
              > >7.0 using the IIOP protocol.
              > >
              > >Tom
              > >
              > >Jen wrote:
              > >> Hi,
              > >> I am on the way to wls7.0 from wls5.1, but I got a probelm when I tried
              > >to rebind
              > >> the jms queue to weblogic jndi.
              > >>
              > >> [javax.naming.ConfigurationException [Root exception is
              java.rmi.MarshalException:
              > >> failed to marshal
              rebind(Ljava.lang.String;Ljava.lang.Object;Ljava.util.Hasht
              > >> able;); nested exception is: java.io.NotSerializableException]]
              > >>
              > >> Can I bind the queue to wls jndi? Anybody has silimar situation?
              > >> Thanks
              > >
              >
              

  • 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.

  • Dead message queue - DLQ for foreign JMS providers

    Is there a way to configure Error-queue or 'Dead message/letter queue' in MDB listening to foreign JMS provider like JBoss? (Automatic routing of failed messages to error-queue after specified retries to preserve JMS messages)
              I did all the docs from BEA and it doesn't cover this DLQ for foreign JMS providers :). For Weblogic JMS service, DLQ can be configured in the config.xml. But for <ForeignJMSServer> there is no way to configure dead-queue.
              Could some please validate this before I start coding this piece in the application instead of appserver configuration.
              JMS provider is Tibco and JMS destinations are pre-defined and can't/doesn't need to be created
              Thanks in advance.

    Interesting idea! But no, there's no facility for redirecting failed foreign provider messages to a DLQ. This is a feature normally supplied by the foreign provider itself.
              Some foreign providers, in addition to WebLogic 9.0 JMS, provide a "redelivery count" property in the message. If the foreign provider provides no automatic DLQ capability, you might be able to leverage this property to have your MDB application code automatically forward messages with high redelivery counts to the DLQ.
              Tom

  • Foreign JMS, MQSeries

    Hi,
              I am configuring Foreign JMS in weblogic 8.1.4 to communicate with MQSeries,
              and got following error when weblogic was started. When I configured JMS,
              just copied binding file to local direcotry (Windows XP professional) and
              confiured the the node <provider-url>file:/D:/jndi/</provider-url> in
              weblogic-ejb-jar.xml. I din't find any error when setup Foreign JMS server
              from weblogic console. But there is no class was bound to the desctination
              and facotry jndi in weblogic jndi tree. How I can bound the class object to
              destination and factory jndi.
              ####<Jan 20, 2006 7:40:12 PM CST> <Warning> <EJB> <wwhq728h> <marsJms>
              <ExecuteThread: '14' for queue: 'weblogic.kernel.Default'> <<WLS Kernel>> <>
              <BEA-010061> <The Message-Driven EJB: SubscriberBean is unable to connect to
              the JMS destination: com.xxx.jms.subscriber.destination. The Error was:
              [EJB:011010]The JMS destination with the JNDI name:
              com.xxx.jms.subscriber.destination could not be found. Please ensure that
              the JNDI name in the weblogic-ejb-jar.xml is correct, and the JMS
              destination has been deployed.>
              Thanks in advance for any idea.
              James

    Hi,
              I am configuring Foreign JMS in weblogic 8.1.4 to communicate with MQSeries,
              and got following error when weblogic was started. When I configured JMS,
              just copied binding file to local direcotry (Windows XP professional) and
              confiured the the node <provider-url>file:/D:/jndi/</provider-url> in
              weblogic-ejb-jar.xml. I din't find any error when setup Foreign JMS server
              from weblogic console. But there is no class was bound to the desctination
              and facotry jndi in weblogic jndi tree. How I can bound the class object to
              destination and factory jndi.
              ####<Jan 20, 2006 7:40:12 PM CST> <Warning> <EJB> <wwhq728h> <marsJms>
              <ExecuteThread: '14' for queue: 'weblogic.kernel.Default'> <<WLS Kernel>> <>
              <BEA-010061> <The Message-Driven EJB: SubscriberBean is unable to connect to
              the JMS destination: com.xxx.jms.subscriber.destination. The Error was:
              [EJB:011010]The JMS destination with the JNDI name:
              com.xxx.jms.subscriber.destination could not be found. Please ensure that
              the JNDI name in the weblogic-ejb-jar.xml is correct, and the JMS
              destination has been deployed.>
              Thanks in advance for any idea.
              James

  • Foreign JMS Server - Weblogic 8.1 - Weblogic 8.1

    Hi
    I have to weblogic servers running on different ports.
    http://server1:port1
    http://server2:port2
    I have configured JMS store, JMS server, Destination (queue) in port2. I am able to send messages and retrieve messages in port2.
    I have written a MDB which was deployed in server1. I want to process the Messages posted to server2 destination. I tried to configure foreign JMS server in server1.
    In both servers, i am using default connection factories only.
    I am getting the following exceptions.
    ForeignMDB is unable to connect to the JMS destination: LocalTestingQueue
    LocalTestingQueue is the local jndi name given to the foreign destination.
    please find below the weblogic.xml entries for MDB
    <weblogic-enterprise-bean>
         <ejb-name>ForeignMDB</ejb-name>
         <message-driven-descriptor>           <destination-jndi-name>LocalTestingQueue</destination-jndi-name>           <initial-context-factory>weblogic.jndi.WLInitialContextFactory</initial-context-factory>
              <provider-url>http://myserver:26565</provider-url>          <connection-factory-jndi-name>weblogic.jms.ConnectionFactory</connection-factory-jndi-name>
         </message-driven-descriptor>
    </weblogic-enterprise-bean>
    could you please guide me to complete this?
    Thanks in advance
    Srinivas

    1 - Ensure that the MDB is configured to reference the remote connection factory AND remote destination.
    2 - If using the foreign JMS server facility, ensure that it defines the URL of the remote cluster/server, a connection factory mapping, and a destination mapping. Also ensure that the MDB connection factory and destination descriptor fields reference the local JNDI names for the mappings.
    3 - If not using the foreign JMS server facility, ensure that the MDB descriptor has the URL of the remote cluster, and a destination JNDI name that's in the remote cluster. (The connection factory JNDI name is not needed in this case, as the MDB will automatically look for a default connection factory that MDB's use.)
    I think the MDB chapter of the EJB programmer's guide will likely be helpful here. The latest documentation for the latest release may be more up-to-date than 8.1 -- the concepts are the same with the newer releases.
    Tom

  • Foreign JMS server connection issue.

    Hi All,
    We are migrating a JMS application from websphere 6.1 to weblogic 10.3. The message queue resides in a TIBCO EMS server.
    We are trying to configure the foreign JMS server through JMS Module in the admin console. We are getting the following error will deploying the application.
    +<May 4, 2009 12:32:52 AM PDT> <Warning> <EJB> <BEA-010061> <The Message-Driven EJB: TxnMessageSubscriber is unable to connect to the JMS destination: weblogic.bbmdb-txn.jms/system+
    module-0-jms.xml. The Error was:
    Can not get distribute destination information. The destination JNDI name is weblogic.bbmdb-txn.jms/systemmodule-0-jms.xml, the provider URL is null>
    we have provided the connection URL in "JNDI Connection URL" column in the foreign server setup page.
    Is there any other thing that need to be configured?

    I m facing the same problem, we are using Weblogic Server 10.3.
    We have defined a cluster on one Weblogic server and have created one managed server in the cluster machine and the other managed server in another machine.
    We are using Foreign JMS and I m getting the error as follow:
    ####<Jun 19, 2009 3:30:53 PM IST> <Warning> <EJB> <iflexpkw513> <Managed1> <[STANDBY] ExecuteThread: '3' for queue: 'weblogic.kernel.Default (self-tuning)'> <<WLS Kernel>> <> <> <1245405653881> <BEA-010061> <The Message-Driven EJB: TestJMSALSB is unable to connect to the JMS destination: fcssi/FCSSI. The Error was:
    Can not get distribute destination information. The destination JNDI name is fcssi/FCSSI, the provider URL is null>
    Not able to understand what is the problem here...
    ejb-jar.xml :
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE ejb-jar PUBLIC "-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN" "http://java.sun.com/dtd/ejb-jar_2_0.dtd">
    <ejb-jar id="ejb-jar_ID">
    <enterprise-beans>
    <message-driven>
    <ejb-name>TestJMSALSB</ejb-name>
    <ejb-class>samplemdb.TestJMSALSB</ejb-class>
    <transaction-type>Container</transaction-type>
    <message-driven-destination id="MessageDrivenDestination_1169302343246">
         <destination-type>javax.jms.Queue</destination-type>
    </message-driven-destination>
    </message-driven>
    </enterprise-beans>
    </ejb-jar>
    weblogic-ejb-jar.xml :
    <?xml version="1.0" encoding="UTF-8"?>
    <weblogic-ejb-jar
    xmlns="http://www.bea.com/ns/weblogic/90" xmlns:j2ee="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.bea.com/ns/weblogic/90 http://www.bea.com/ns/weblogic/90/weblogic-ejb-jar.xsd">
    <weblogic-enterprise-bean>
    <ejb-name>TestJMSALSB</ejb-name>
    <message-driven-descriptor>
    <destination-jndi-name>fcssi/FCSSI</destination-jndi-name>
    <connection-factory-jndi-name>iflex/fcssiQCF</connection-factory-jndi-name>
    </message-driven-descriptor>
    </weblogic-enterprise-bean>
    </weblogic-ejb-jar>
    Can anyone provide some help on this.....

Maybe you are looking for

  • Dual Boot Snow Leopard and Leopard

    Hi All i am looking to Dual boot my Intel iMac with Leopard (10.5.8) + Snow Leopard (10.6) for testing purposes. How do i go about doing this? I have the Leopard install disc i do not have Snow leopard yet and the only version i have seen is an updat

  • Function Module to get Company code and Plant on the basis of infotype and pernr

    Hi Experts, I need to know the function module which will return company code and plant based on infotype and pernr(employee Number). Thanks, Salil Bagchi

  • CRM BW Implementation - Very Very Urgent

    Hi Guru's, CRM is one of the area for BI Implementation in our project and I have been asked to handle this. This is the forst time that I am dealing with CRM, prior to this, I have no idea about CRM. Is the Data Modelling part, extraction, Reporting

  • Cannot start Weblogic Admin Server

    When we start weblogic Admin server, we got the following message. # A fatal error has been detected by the Java Runtime Environment: # SIGBUS (0x7) at pc=0x000000373368316b, pid=348, tid=139846128580352 # JRE version: 6.0_20-b20 # Java VM: OpenJDK 6

  • Forum Moderator

    Hello mates, Its been interesting to act as moderator, Can you any one provide me the roles of the moderator and who is eligible? Edited by: CKPT on Feb 28, 2013 1:34 PM