JMS Message 'State String' values

Hi,
We have a java application to monitor and process messages in a set of JMS queues.
We have noticed that some messages do not appear in our Java program. However when we use the weblogic console we are able to view the message contents.
The only pattern we have seen is that messages that work ok in our program, have a 'state string' value of Visible, while messages that do no appear in our program have a 'state string' value of Ordered.
(Note. We have also tested using Hermes JMS, and it cannnot see the messages with state string ordered either).
What does this attribute represent?
Is there an API for accessing messages in this state, (e.g. what does the console use)
Our code uses the JMX call getMessage on the Queue. We are using Weblogic 10.3

The state "Ordered" indicates that the message is part of a group (or Unit-of-Order). When a message is in "Ordered" state, it is not visible for consumption.
There is a getMessages() API on the JMSDestinationRuntimeMBean which can get you all messages with a given state. If you specify the state as 0x7fffffff, you should be able to get all messages.

Similar Messages

  • JMS Message Property

    Hello Experts,
    we have a JMS to JMS scenario. A third party system sends a message to the JMS Queue (JMS Provider is the J2EE SAP Web AS, XI system). Via JMS Message Selector (configured the JMS Sender Adapter) the right integrationprocess get the message.The integrationsprocess sends the message to another JMS Queue. Because the integrationprocess have lost the JMS Header information (message properties) we configured the JMS Sender Adapter and the JMS Receiver Adapter to copy message properties. Described under help.sap.com:
    you want to set additional JMS message attributes, select Specify Additional JMS Message Properties (Maximum of 10).
    ·        In the table, enter the names of the JMS message properties whose values are to be included in the message header of the XI message.
    The technical names of the additional attributes are DCJMSMessageProperty0, DCJMSMessageProperty1, ..., DCJMSMessageProperty9.
    You can enter more than 10 properties in the table, but only the first 10 are taken into account.
    The attribute namespace for the adapter is http://sap.com/xi/XI/System/JMS.
    I debug and saw that the message properties was sucessfully copied to the header (receiver queue). But now if I use another selector the message will not found. It doesn't work with a third party system and with SAP XI (I've created another integrationsprocess, to read the queue)
    Thanks very much, for your help.
    Regards,
    Jürgen

    Hi there,
    there is a way (and a section somewhere in the help) to set adapter specific attributes in java mappings.
    The java doc for that can be found here:
    https://help.sap.com/javadocs/NW04/current/pi/index.html
    Hope that helps sbd who also has that prob.
    Cheers,
    Helge

  • Feature Request - show substitution string values in session state display

    Hi!
    I would like to request that in addition to page and application items and session state values that the value of substitution string values be shown. Another option would be to have a separate link (like session) to display them. This would allow developers to see all of the available substitution values and how they change across pages, etc.
    Thanks!
    Dave Venus

    Dave - What are some examples of values that you are not seeing in the session state report that would be useful?
    Scott

  • If UseMessageListener in JMS adapter set True, causing the message state 0

    We have a multi node SOA 10g deployed. If we have a UseMessageListener=True, the state of the message is not changing from 0 to 2. Even though the message was consumed.
    Same, configuration works fine in lower environment with single node.
    When we changed UseMessageListener= false, message state started getting changed even in multi node architecture.
    One more difference that we have in multinode and single node environment, is that we are having isTransacted mcf property value as false. Where as in single node is Transacted is true.
    Can some one explain some reasoning behind such behavior?
    What is the significance of UseMessageListener?

    Hi Tarak,
    The behaviour looks acceptable for me... Topics are different than queues, if you publish a message to a queue and there is no suitable consumer at that moment the message will remain in the queue... But for a topic, looks acceptable for me to say that if you publish a message and there was no suitable subscriber at the moment the message can be discarded... The message was checked for all durable subscribers and there was no one to able to pick it up... So it can be safely discarded... If later you change your durable subscriber to a situation on what the previous message could be picked up, that may be too late... Nevertheless, that's a very particular case and may vary according to implementation...
    May you can confirm the behaviour by checking the messages assigned to a durable subscriber... When you publish a message that doesn't match the selector, will the message even be listed at all?
    http://docs.oracle.com/cd/E23943_01/apirefs.1111/e13952/taskhelp/jms_modules/topics/ManageDurableSubscribers.html
    Hope this helps...
    Cheers,
    Vlad

  • Problem with prepared statement where cluase when passing string value.Help

    I am updating a table using the following code. I am using string parameter in where clause. if I use Long parameter in where clause with ps.setLong , this code is working. Is there any special way to pass string value? Am I doing anything wrong?
    ===================
    updateMPSQL.append("UPDATE MP_Table SET ");
         updateMPSQL.append("MPRqmt = ?,End_Dt = ? ");
              updateMPSQL.append("where POS = ? ");
              System.out.println(updateMPSQL.toString());
              con     = getConnection(false) ;
              ps      = con.prepareStatement(updateMPSQL.toString());
              ps.setLong(1,MPB.getMPRqmt());
              ps.setDate(2,MPB.getEnd_Dt());
              ps.setString(3,MPB.getPos());
    result = ps.execute();
              System.out.println("Result : " + result);
    ==========
    Please help me.
    Thanks in advance.
    Regards,
    Sekhar

    doesn't Pos look like a number rather than a string variable?
    if I use Long
    parameter in where clause with ps.setLong , this code
    is working.
    updateMPSQL.append("where POS = ? ");
    ps.setString(3,MPB.getPos());

  • What is the recommended way for persisting JMS messages?

    What is the recommended way for persisting JMS messages?. As per the IMQ admin documentation , using the default built-in persistence type which is through unix flat files is much efficient and faster, compared to the database persistence .
    Tried setting up the jdbc stuff for database persistence on iAS 6.5 . I am getting the following
    error .
    [24/Apr/2002:16:09:20 PDT] [B1060]: Loading persistent data...
    [24/Apr/2002:16:09:21 PDT] Using plugged in persistent store: database connection
    url=jdbc:oracle:thin:@dbatool.mygazoo.com:1521:qa1 brokerid=ias01
    [24/Apr/2002:16:09:23 PDT] [B1039]: Broker "jmqbroker" ready.
    [24/Apr/2002:16:11:56 PDT] ERROR [B4012]: Failed to persist interest
    SystemManager%3ASystemManagerEngine%2BiMQ+Destination%0AgetName%28%29%3A%09%09SM_Response%0AClass%3A%09%09%09com.sun.messaging.Topic%0AgetVERSION%28%29%3A%09%092.0%0AisReadonly%28%29%3A%09%09false%0AgetProperties%28%29%3A%09%7BJMQDestinationName%3DSM_Response%2C+JMQDestinationDescription%3DA+Description+for+the+Destination+Object%7D:
    java.sql.SQLException: ORA-01401: inserted value too large for column
    [24/Apr/2002:16:11:56 PDT] WARNING [B2009]: Creation of consumer SM_Response to destination 1
    failed:com.sun.messaging.jmq.jmsserver.util.BrokerException: Failed to persist interest
    SystemManager%3ASystemManagerEngine%2BiMQ+Destination%0AgetName%28%29%3A%09%09SM_Response%0AClass%3A%09%09%09com.sun.messaging.Topic%0AgetVERSION%28%29%3A%09%092.0%0AisReadonly%28%29%3A%09%09false%0AgetProperties%28%29%3A%09%7BJMQDestinationName%3DSM_Response%2C+JMQDestinationDescription%3DA+Description+for+the+Destination+Object%7D:
    java.sql.SQLException: ORA-01401: inserted value too large for column
    Any thoughts?

    From the output, you are using imq 2.0. In that release
    the key used to persist a durable subscriber in the database
    table has a limit of 100 characters. The output shows that
    your value is:
    SystemManager%3ASystemManagerEngine%2BiMQ+Destination%0AgetName%28%29%3A%09%09SM_Res
    ponse%0AClass%3A%09%09%09com.sun.messaging.Topic%0AgetVERSION%28%29%3A%09%092.0%0Ais
    Readonly%28%29%3A%09%09false%0AgetProperties%28%29%3A%09%7BJMQDestinationName%3DSM_R
    esponse%2C+JMQDestinationDescription%3DA+Description+for+the+Destination+Object%7D:
    which is much longer than 100 characters.
    You might want to shorten the string you use for the
    durable name.
    And yes, the default file-based persistence store is
    more efficient when compared to the plugged-in persistence
    through a database.

  • Why Would Crystal Change all "string" values to hexidecimal

    We are running Crystal Reports version 11 and using it to access a ISeries DB2 Database. We use the OLE DB (ADO) connedction to the ISeries. We have had several reports running for months, then last Friday when we ran one of the reports Crystal indicated "The database file XXXX has changed; Proceeding to fix up the Report".
    When we click OK the fix appears to take place BUT the report fails with a SQL0103 Numeric Contant error. The error is on a "Character" fields but the value has a 0x prefixed to the string. If I look at teh SQL, the SQL being run, it is bad, it has 0x prefixed to teh criteria used on the where and the value is being treated as numeric, it does not contain the single quotes.
    Also, after the so called "Database Changed; proceeding to fix", If I display the values in the database for any of the "String" defined fields....the display shows them in hexidecimal.
    The Tables Crystal thinks has changed HAVE NOT changed. There are no modifications to these tables so I'm not quite sure why Crystal thinks they have been changed.
    I'm not sure if I'm in the proper forum or not. I wanted to call Crystal support BUT it appears they have abonded talking to users, now we must go through forums.
    If any one can help on this mees, I'd appreciate it.
    Edited by: Blake Bray on Jul 28, 2008 8:40 PM

    Crystal reports tries to find any differences in the database structure, Crystal displays a message to the
    effect that u201CThe database file u2018tblxxxxu2019 has been changed. Proceeding to fix up the report!u201D.
    You will see this message once for each table that does not match Crystalu2019s internal map
    of that table. The OK button (your only option) in response to this available.
    If a Report includes subreports, then, when you do a verify the database operation (from the main report),
    Crystal checks the main report and all the subreports to see if any of the tables have changed. If it finds any
    tables that have changed, it displays the same u201Cu2026u2026Proceeding to fix up the report!u201D message and you must
    click OK on all those messages. Next, you must rerun the verify operation again, until you get the u201CThe
    database is up to dateu201D message, once for the main report and once for each subreport. (For example, if a
    report includes 3 subreports, you will get the u201CThe database is up to dateu201D message four times).
    if you do not have the data enclosed in single quotes once the sql statement is assembled, tries to make it into a number. look at your string value of your sql statement and check that you have everything in the correct ; I suspect you have a missing set of single quotes.
    Thanks,
    Parsa.

  • How to do service callout with the incoming JMS message in OSB 11g

    Hello All,
    I have a specific requirement for which I am creating a kind of POC where I need some help in OSB, however am new to OSB.
    My Environment:
    1> I have a request queue (deployed on a WLS domain) - WFReq_WS
    2> I have a response queue (deployed on a WLS domain) - WFRes_WS
    3> I have created a ProxyService (request/response type) in OSB 11g which is simply mapping the incoming message in WFReq_WS to WFRes_WS
    4> I have a WebService (it is currently a simple hello WebService for testing) which takes a string and returns the same string with an added 'Hi' in front of it (e.g. If you send Jack, it will return 'Hi Jack')
    My Requirement:
    1> I have to do some mechanism in OSB, by which while mapping the message from WFReq_WS to WFRes_WS (through the proxy service I have), it will pick the JMS message (which will be a string/text) and will make a service callout to the Webservice I mentioned using the message as the input parameter of the WebService.
    2>Now when the response of the WebService will come, OSB should send this response as the message in the response queue (WFRes_WS) I mentioned above.
    To simplify the requirement using an example:
    A> I will send a text/String message (say Jack) to the request queue (WFReq_WS)
    B> OSB should pick the message (Jack) and make a service callout to the webservice
    C> webservice will return 'Hi Jack'
    D> OSB should send this to the response queue (WFRes_WS)
    I know the above might look very basic question to the PROs, but please elaborate (step by step) what need to be done, since I do not know OSB.
    Thanks a lot for your help !

    Your example points A and D are easily done by having a "Proxy Service" which has the following details:
    Service Type = Messaging Service
    Request and Response type = Text
    Protocol = jms
    Endpoint URI = your request queue (format like 'jms://localhost:7013/weblogic.jms.XAConnectionFactory/QueueJNDIName')
    Checkmark "response" so that the proxy service automatically delivers the response to another queue - your response queue
    Response URI = jms://localhost:7013/weblogic.jms.XAConnectionFactory/QueueResponse
    Now since your "Hello" webservice is (probably) a SOAP xml service you need to "convert" your text based JMS message to xml before sending it on to the "Hello" service.
    Your JMS proxy can do that by just doing a "Assign <whom>{$body/text()}</whom>" to a variable (lets call it 'reqHello')
    Now your JMS proxy should actually call the Hello service and since your JMS proxy is text and the Hello service is SOAP you cannot just "pass" on to the Hello service in a "Route to". Instead you can do a Service Callout where you can specify your "reqHello" variable as payload and a "respHello" as response variable.
    Now you have the "<whom>Hi jack</whom>" in the response variable and since the JMS response needs to be text format you can "extract" the text value into the body variable of the JMS proxy (use "replace /* in body with $respHello/text()" - replace node contents)
    The actual Hello service is a simple "SOAP" based Proxy Service. Add a pipeline and add a stage in the reponse pipeline. Do a ...
    Assign fn:concat("Hi ",$body/whom/text()) to $whomVar
    Replace whom in body with $whomVar (replace node contents)

  • JMS Message Queue - stuck in

    I am on SOA SUITE 11.1.17
    I have a jms queue set up and am able to successfully send messages to it using the SOA JMS Adapter.  I am able to succesfully listen to a queue using a JMS adapter in a different project.
    However, here when I try to "listen" to the queue using a java program, the message is "received" in my java program and processed as it should be.  The java program is running in a while loop, so it stays running.
    On the queue, when the java program reads it, the message is moved to the "Messages Pending" column.  When I kill the java program, the message is returned to the "Messages Current"
    Would anyone have any ideas about this?  We have an existing java based program isn't properly "closing" the message.
    I tried:
    1.  placing msg.acknowledge() in the code, since the documentation states that messages that are in "Messages Pending" have been read, but not acknowledged or committed -- but this does nothing.
    2.  Setting the expiration on the message to 1, but that is a hack.  I would rather fix the problem than use a hack.
    Anyone have any ideas what is wrong?
    Thank you,
    Stuart
    import java.io.IOException;
    import java.io.InputStreamReader;
    import javax.jms.Connection;
    import javax.jms.JMSException;
    import javax.jms.Message;
    import javax.jms.MessageConsumer;
    import javax.jms.MessageListener;
    import javax.jms.Session;
    import javax.jms.TextMessage;
    public class JMSListenAndRespond extends JMSQueueHandler implements MessageListener {
      private Session jmsSession = null;
      private MessageConsumer jmsMessageConsumer = null;
      private Connection jmsConnection = null;
      int counter = 1 ;
      public static void main(String[] args) throws Exception {
        InputStreamReader commandBuffer = null;
        char command = '\0';
          // first listen for any messages
          JmsDataObject q = new JmsDataObject();
          q.setJmsCF("jms/TestConnectionFactory");
          q.setJmsQueue("jms/TestJMSQueue");
          q.setServerPwd("welcome1");
          q.setServerLogin("weblogic");
          q.setUrl("t3://localhost:7101");
          q.setJmsMsg("na -- we are listinging...");
        JMSListenAndRespond lis = new JMSListenAndRespond();
         lis.consumeMessage(q);
        System.out.println("(type q to exit at any time...)\n");
        try {
          // Now just loop, waiting for messages until user types 'q' to quit
          commandBuffer = new InputStreamReader(System.in);
        while (!(command == 'q')) {
           try {
              command = (char)commandBuffer.read();
              System.out.println("Command: "+command);
              lis.stopListening();
            } catch (IOException e) {
              System.err.println("I/O Exception: ");
              e.printStackTrace();
           } //while
        } finally {
                lis.stopListening();
          lis.stopListening();
       public void stopListening() {
        try {
          if (jmsMessageConsumer != null) {
            jmsMessageConsumer.close();
          if (jmsSession != null) {
            jmsSession.close();
          if (jmsConnection != null) {
            jmsConnection.close();
        } catch (JMSException e) {
          System.err.println("Couldn't properly close all resources.\n");
          e.printStackTrace();
      private void prepareToConsumeMessage() {
        // create JMS connection, session, consumer and register listener - then start session
            try {
          // create connection
          jmsConnection = getJmsConnectionFactory().createConnection();
          // create session
          jmsSession =   jmsConnection.createSession(false, javax.jms.Session.AUTO_ACKNOWLEDGE);
          jmsMessageConsumer = jmsSession.createConsumer(getJmsDestination());
          // register a message listener (onMessage)
          jmsMessageConsumer.setMessageListener(this);
          // initiate connection - make sure to register your listener first or you might lose messages
          jmsConnection.start();
          System.out.println("\n...listening for message!\n");
        } catch (JMSException e) {
          System.err.println("Problem initializing JMS session");
          e.printStackTrace();
          System.exit(-1);
         * onMessage
         * The callback function invoked upon message reception
      public void onMessage(Message msg) {
        try {
          String msgText;
          if (msg instanceof TextMessage) {
            msgText = ((TextMessage)msg).getText();
            // this method expects a CSV string with the following makeup:
            // firstName,lastName,gender,birthdate,address,city,zipcode,state,insurancePolicyId
            String messageId = msg.getJMSMessageID();
          // code to process goes here.....
          } else {
            // if message is not a TextMessage, attempt a conversion to string
            System.out.println("\n** NEW MESSAGE (" + msg.getClass().getName() +
                               "):\n" +
                msg.toString());
        } catch (JMSException e) {
          e.printStackTrace();
      public void consumeMessage(JmsDataObject q ) {
        initializeJndiProperties(q);
        initializeJNDIandCF(q.getJmsQueue());
        prepareToConsumeMessage();
    import java.util.Properties;
    import javax.jms.Connection;
    import javax.jms.ConnectionFactory;
    import javax.jms.Destination;
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    public abstract class JMSQueueHandler {
      protected void initializeJNDIandCF(String destinationQueueName) {
        // initialize JNDI context and lookup connection factory and destination
        try {
          // Initialize JNDI context
          jndiContext = new InitialContext(jndiProperties);
        } catch (NamingException e) {
          e.printStackTrace();
        try {
          // lookup JMS connection factory in JNDI
          jmsConnectionFactory =
              (ConnectionFactory)jndiContext.lookup(jndiProperties.getProperty("factory.name"));
          // lookup JMS destination in JNDI
          jmsDestination = (Destination)jndiContext.lookup(destinationQueueName);
        } catch (NamingException e) {
          System.err.println("Problem during the JNDI lookup\n");
          e.printStackTrace();
          System.exit(-1);
      public void initializeJndiProperties(JmsDataObject qdo ) {
        // set JNDI properties
        jndiProperties.put("java.naming.factory.initial","weblogic.jndi.WLInitialContextFactory");
        jndiProperties.put("java.naming.provider.url", qdo.getUrl() );
       // jndiProperties.put("java.naming.security.principal", NAMING_PRINCIPAL);
        jndiProperties.put("java.naming.security.principal", qdo.getServerLogin() ) ;
        //  jndiProperties.put("java.naming.security.credentials", NAMING_CREDENTIAL);
        jndiProperties.put("java.naming.security.credentials", qdo.getServerPwd() );
        //jndiProperties.put("factory.name", JMS_CONNECTION_FACTORY);
        jndiProperties.put("factory.name", qdo.getJmsCF() );
      //protected static final String NAMING_PROVIDER_URL = "t3://localhost:7101";
    //protected static final String NAMING_PRINCIPAL = "weblogic";
    // protected static final String NAMING_CREDENTIAL = "welcome1";
    // protected static final String JMS_CONNECTION_FACTORY = "jms/patientsJmsCF";
    // protected static final String JMS_CONNECTION_FACTORY = "jms/TestConnectionFactory";
      ConnectionFactory jmsConnectionFactory = null;
      Destination jmsDestination = null;
      InitialContext jndiContext = null;
      Properties jndiProperties = new Properties();
      public void setJmsConnectionFactory(ConnectionFactory jmsConnectionFactory) {
        this.jmsConnectionFactory = jmsConnectionFactory;
      public ConnectionFactory getJmsConnectionFactory() {
        return jmsConnectionFactory;
      public void setJmsDestination(Destination jmsDestination) {
        this.jmsDestination = jmsDestination;
      public Destination getJmsDestination() {
        return jmsDestination;

    Thanks for the reply. There are no errors what so ever regarding MDB issues. Not in the weblogic / console logging, nor in the logging of the component itself.
    The MDB itself is setup to have 16 concurrent beans per component deployment. The component is clustered over 4 server instances. So there are quite some concurrent MDBs running. However since the messages get stuck for weeks eventhough the component only has bursts of messages to process, one would think that the the stuck messages would be processed whenever the component has some spare time (which it has a lot between the bursts).
    Therefor i doubt it has anything to do with too little MDBs running. But frankly I have no idea what's wrong.

  • JMS Queue XML numeric value out of range

    Hi
    I have an interface that process the root element of the JMS message.
    It is failing on the step Load JMS to XML. The error states: numeric value out of range.
    I've analysed the message and determined the exact data item which is 11 digits long.
    The JMS model only accomodates for numeric(10,0). I tried changing it, but still get the error.
    Any idea what I need to do so that this step will process that data without error?
    Cheers
    PS ODI 11.1.1.6

    Hi All,  I have one scenario to read the source file . The file delimiter is '|' . The no of pipeline for each line is 17. So if a line containing more than 17 , send an error email. For this first i am printing tota pipeline in ecah line to afile called pipelinecount.txt . Then i will read this file and send each value to while loop /for loop , where it will get > 17 , it will exit the process and send an email.  But here in script i am getting error at while line. Could anyone help.   #! /bin/kshset -x SOURCE_DIR=/vp01/SrcFilessed 's/[^|]//g' /vp01/SrcFiles/Test.txt | awk '{ print length }'> /vp01/SrcFiles/pipelinecount.txtcd $SOURCE_DIRwhile line in `cat pipelinecount.txt`; do if [ $line -eq 17 ];thenecho "No issue in pipeline"exit 0;fiif [ $line -gt 17 ];thenecho "No of pipelines exceeded the expected. Please verify the source file." | mailx -s "WKFS Load: Failed" [email protected]

  • GP - How to display a long string value

    I'm trying to display a really long string value and then allow the user a couple of result state choices (to either go back and do another search or finish).
    None of the forms (WD, display, etc.) will display a really long string.
    I tried using a loop type decision dialog, but there doesn't appear to be a way of having it pick up a parameter value as the message (or part of the message) to display.
    I can get it to display in the complex type decision dialog, but I don't need the group/options and I can't seem to get rid of the second set of buttons that show up (the long string parameter value was put into the 'Info Texts' area and does display ok).
    Is there any easy way of displaying the complete contents of a long string value and have buttons for results states?  I'd even be happy if I could just display the whole string and use a separate callable object for the choices.
    Thanks,
    Cindy

    I think you should try calling a JAVA or ABAP Webdynpro as the callable object. As you know, we can display long texts in the webdynpro fields. Other alternative is an Adobe form as well.
    Cheers,
    Mandrake

  • JMS Messages Stuck in Pending

    Hi,
    We have Weblogic JMS provider and we use spring JMS listener to read messages of the queues. Our Spring listeners are running inside a webMethods Integration Server container. For a few of the queues, we have been seeing messages that are stuck in the "Pending" state on the JMS queues. The state string inside webLogic is shown as "receive". We don't have any evidence from our logs that the message actually is received by the listener or by subsequent processes down stream. The messages gets cleared when the Weblogic server is restarted.
    Has anyone faced a similar issue or any ideas as to what might be causing this stuck messages?
    Our weblogic version is 9.2
    Regards,
    Aneel
    Edited by: user3127831 on Mar 24, 2009 7:02 AM

    Hi Aneel
    Typically JMS messages get stuck in pending state between components because of XA issues - due to configuration on one side of the fence or another, transactions aren't committed successfully, so a JMS message is placed on a queue successfully, but is not available due to the transaction that created it not committing successfully.
    What is creating the messages being placed on the queues? What's the difference between how you're creating messages for the queues you can read successfully and the ones that are not becoming available?

  • XSLT sender plugin fails to set JMS message properties

    When creating a JMS message to be put on a JMS queue, one of the XSLT for the XSLT automation plugin fails to set JMS string properties like: wlsmimehdrContent_Type
    The content on the xslt are listed below.
    The xslt in CPRLookupRequest.xslt sets:
    wlsmimehdrContent_Type
    SERVICE_SUFFIX
    OSM_EVENT_TYPE
    as expected, but the almost similar plugin NABSCreditEvalPluginRequest.xsl fails to set the same string JMS properties.
    I'm looking for a clue, because I'm clueless. I'm an XSLT newbie, so it might be something simple.
    The core part of the problem is put in bold in the listings below
    h2. CPRLookupRequest.xslt:
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns="http://java.sun.com/products/oss/xml/ServiceActivation" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:oms="urn:com:metasolv:oms:xmlapi:1" xmlns:java="http://xml.apache.org/xalan/java" xmlns:xalan="http://xml.apache.org/xalan" xmlns:mslv-sa="http://www.metasolv.com/oss/ServiceActivation/2003" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:co="http://java.sun.com/products/oss/xml/Common" exclude-result-prefixes="oms java xsl xalan">
         <xsl:param name="automator"/>
         <xsl:param name="log"/>
         <xsl:param name="context"/>
         <xsl:param name="outboundMessage"/>
         <xsl:output method="xml" indent="yes" omit-xml-declaration="no" xalan:indent-amount="5"/>
         <xsl:template match="/">
              <xsl:apply-templates select="oms:GetOrder.Response">
                   <xsl:with-param name="SERVICE_SUFFIX" select="'CprDomain/Cpr'"/>
                   <xsl:with-param name="OSM_EVENT_TYPE" select="'CPR_LOOKUP'"/>
              </xsl:apply-templates>
         </xsl:template>
         <xsl:template match="oms:GetOrder.Response">
              <xsl:param name="SERVICE_SUFFIX" />
              <xsl:param name="OSM_EVENT_TYPE" />
    *<xsl:variable name="void2" select="java:setStringProperty($outboundMessage, '_wls_mimehdrContent_Type', 'text/xml; charset=UTF-8')" />*
    *<xsl:variable name="void3" select="java:setStringProperty($outboundMessage, 'SERVICE_SUFFIX', $SERVICE_SUFFIX)" />*
    *<xsl:variable name="void4" select="java:setStringProperty($outboundMessage, 'OSM_EVENT_TYPE', $OSM_EVENT_TYPE)" />*
              <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
                   <env:Body env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
                        <m:getPersonByCPR xmlns:m="/Cpr">
                             <getPersonByCprRequestInfo xmlns:n1="java:dk.tdc.soa.cpr.extern.datatypes" xsi:type="n1:GetPersonByCprRequestInfo">
                                  <applicationId xsi:type="xsd:string"><xsl:text>CPR</xsl:text></applicationId>
                                  <cprNumber xsi:type="xsd:string"><xsl:value-of select="oms:_root/oms:cpr" /></cprNumber>
                             </getPersonByCprRequestInfo>
                        </m:getPersonByCPR>
                   </env:Body>
              </env:Envelope>
         </xsl:template>
    </xsl:stylesheet>
    h2. NABSCreditEvalPluginRequest.xsl
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" exclude-result-prefixes="oms java xsl xalan"
         xmlns="http://java.sun.com/products/oss/xml/ServiceActivation"
         xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
         xmlns:oms="urn:com:metasolv:oms:xmlapi:1"
         xmlns:java="http://xml.apache.org/xalan/java"
         xmlns:xalan="http://xml.apache.org/xalan"
         xmlns:mslv-sa="http://www.metasolv.com/oss/ServiceActivation/2003"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xmlns:co="http://java.sun.com/products/oss/xml/Common">
         <xsl:param name="automator"/>
         <xsl:param name="log"/>
         <xsl:param name="context"/>
         <xsl:param name="outboundMessage"/>
         <xsl:template match="/">
              <xsl:apply-templates select="oms:GetOrder.Response">
                   <xsl:with-param name="SERVICE_SUFFIX" select="'/APILink/CreditServices'"/>
                   <xsl:with-param name="OSM_EVENT_TYPE" select="'NABS_CREDIT_EVAL'"/>
              </xsl:apply-templates>
         </xsl:template>
         <xsl:template match="oms:GetOrder.Response">
              <xsl:param name="SERVICE_SUFFIX"/>
              <xsl:param name="OSM_EVENT_TYPE"/>
    *<xsl:variable name="void2" select="java:setStringProperty($outboundMessage, '_wls_mimehdrContent_Type', 'text/xml; charset=UTF-8')"/>*
    *<xsl:variable name="void3" select="java:setStringProperty($outboundMessage, 'SERVICE_SUFFIX', $SERVICE_SUFFIX)"/>*
    *<xsl:variable name="void4" select="java:setStringProperty($outboundMessage, 'OSM_EVENT_TYPE', $OSM_EVENT_TYPE)"/>*
              <env:Envelope xmlns:env="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
                   <env:Body env:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
                        <xsl:choose>
                             <xsl:when test="count(oms:_root/oms:cpr) + count(oms:_root/oms:birthDayPart) >0">
                                  <xsl:call-template name="private" />
                             </xsl:when>
                             <xsl:when test="count(oms:_root/oms:cvr) > 0">
                                  <xsl:call-template name="business" />
                             </xsl:when>
                        </xsl:choose>
                   </env:Body>
              </env:Envelope>
         </xsl:template>
         <xsl:template name="private">
              <m:validatePrivateCustomer xmlns:m="java:dk.tdc.apilink.logic.sessions.interfaces">
                   <validateCustomerCreditInput xsi:type="n1:ValidateCustomerCreditInput" xmlns:n1="java:dk.tdc.apilink.logic.datatypes">
                        <accountCategory xsi:type="java1:char" xmlns:java1="java:language_builtins">
                             <xsl:text>I</xsl:text>
                        </accountCategory>
                        <adrLocation xsi:type="xsd:string">
                             <xsl:value-of select="oms:_root/oms:houseNo"/>
                        </adrLocation>
                        <adrStreetName xsi:type="xsd:string">
                             <xsl:value-of select="oms:_root/oms:streetName"/>
                        </adrStreetName>
                        <adrZip xsi:type="xsd:string">
                             <xsl:value-of select="oms:_root/oms:zipCode"/>
                        </adrZip>
                        <xsl:choose>
                             <xsl:when test="count(oms:_root/oms:birthDayPart) > 0">
                                  <birthDate xsi:type="xsd:string">
                                       <xsl:value-of select="substring(oms:_root/oms:birthDayPart,1,4)"/><xsl:text>.</xsl:text>
                                       <xsl:value-of select="substring(oms:_root/oms:birthDayPart,5,2)"/><xsl:text>.</xsl:text>
                                       <xsl:value-of select="substring(oms:_root/oms:birthDayPart,7,2)"/>
                                  </birthDate>
                             </xsl:when>
                             <xsl:otherwise>
                                  <birthDate xsi:type="xsd:string">
                                       <xsl:text>19</xsl:text>
                                       <xsl:value-of select="substring(oms:_root/oms:cpr,5,2)"/><xsl:text>.</xsl:text>
                                       <xsl:value-of select="substring(oms:_root/oms:cpr,3,2)"/><xsl:text>.</xsl:text>
                                       <xsl:value-of select="substring(oms:_root/oms:cpr,1,2)"/>
                                  </birthDate>
                             </xsl:otherwise>
                        </xsl:choose>
                        <firstName xsi:type="xsd:string">
                             <xsl:value-of select="oms:_root/oms:firstName"/>
                        </firstName>
                        <lastBusinessName xsi:type="xsd:string">
                             <xsl:value-of select="oms:_root/oms:lastName"/>
                        </lastBusinessName>
                   </validateCustomerCreditInput>
              </m:validatePrivateCustomer>
         </xsl:template>
         <xsl:template name="business">
              <m:validateCompanyCustomer xmlns:m="java:dk.tdc.apilink.logic.sessions.interfaces">
                   <validateCustomerCreditInput xsi:type="n1:ValidateCustomerCreditInput" xmlns:n1="java:dk.tdc.apilink.logic.datatypes">
                        <accountCategory xsi:type="java1:char" xmlns:java1="java:language_builtins">
                             <xsl:text>B</xsl:text>
                        </accountCategory>
                        <cvrNumber xsi:type="xsd:string">
                             <xsl:value-of select="oms:_root/oms:cvr"/>
                        </cvrNumber>
                   </validateCustomerCreditInput>
              </m:validateCompanyCustomer>
         </xsl:template>
    </xsl:stylesheet>

    I have written an UDF to determine the filename dynamicly:
    //write your code here
    String str = "SAPDATA-" + a + "ES" + ".xml";
    DynamicConfiguration conf = (DynamicConfiguration)
    container.getTransformationParameters().get(StreamTransformationConstants.DYNAMIC_CONFIGURATION);
    DynamicConfigurationKey FileName = DynamicConfigurationKey.create("http:/"+"/sap.com/xi/XI/System/File","FileName");
    conf.put(FileName, str);
    return "";

  • JMS Message Headers

    Hi,
    I have a IDOC -> SAP PI -> JMS scenario. JMS service is an External Party.
    I have to populate the JMS message Header with Fields like JMSType, Sender and Receiver. These fields will come from the IDOC. How to populate these?
    <JMSType>Notification</JMSType>
    <Sender>SAPR3</Sender>
    <Receiver>JMSService</Receiver>
    If I am not wrong, I have to make use of Dynamic Configuration and populate, but if I look at the available JMS ASMA, I am not able to decide how (which fields to use) to populate. Earlier I had done Dynamic Configuration for FILE and SOAP adapters.
    Thank you,
    Pankaj.
    Edited by: Pankaj Sharma XI on Oct 4, 2010 2:38 PM

    Hi Raj and Amol,
    Thank you for responding.
    anyway you can try to use dynamic configuration UDF, it will work.
    Yes I will do it using UDF.
    Add AF_Modules/DynamicConfigurationBean and set the value of the above
    If I use DynamicConfigurationBean, then the value will be static, the one which I fill in the Communication Channel. So I have to make use of UDF.
    What I think is:
    1) Create a UDF in message mapping with below logic:
    DynamicConfiguration conf = (DynamicConfiguration) container.getTransformationParameters().get
    (StreamTransformationConstants.DYNAMIC_CONFIGURATION);
    DynamicConfigurationKey key1 = DynamicConfigurationKey.create("http://sap.com/xi/XI/System/JMS","DCJMSMessageProperty0"); //also logic for Property1 and Property2.
    conf.put(key1,MessageType); //MessageType comes from IDOC.
    return "";  //no need to return a value.
    2) Create a Receiver JMS channel with below settings:
    Specify Additional JMS Message Properties
    Name - MsgType               Java Type - String
    Name - Sender               Java Type - String
    Name - Receiver               Java Type - String
    Now with the above settings I should (hopefully) get the headers like:
    <MsgType>AbcValidation</MsgType>
    <Sender>SAPR3</Sender>
    <Receiver>JMSReceiver</Receiver>
    I will try with the above configuration and update the thread accordingly. *If you feel that the approach is wrong/ incomplete, then
    please do respond.*
    Thank you,
    Pankaj.

  • JMS Message Export/Import XML on command line

    I need a command line (JAVA or WLST) to reproduce the Weblogic consol JMS message export and import to migrate manually message from a queue to another (online without filestore).
    There is an entry on the Weblogic console that export one or all message to an XML format file and the import command to reload this XML file.
    any idea of a java code used by the console or a jython fonction ?

    The following might be enough to get you started:
    For scripting and tracing examples, see the July 29th and August 10th 2009 newsgroup post with subject "Example using of getMessage(s) with JMS error queues?" [ here | http://forums.oracle.com/forums/thread.jspa?messageID=3657916] and the June 10th 2009 newsgroup post with subject "JMSDestinationRuntimeMBean - possible STATE values " [ here | http://forums.oracle.com/forums/thread.jspa?messageID=3531603 ]. Also take a look at the +Sept 23 2009 newsgroup posts with subject "Enable JMS - Queue/Topic Trace on console"+ [ here | http://forums.oracle.com/forums/thread.jspa?messageID=3782486].
    +WARNING: Exporting too many messages at a time can cause out-of-memory errors.+
    Tom

Maybe you are looking for

  • Prints are too small

    I bought a new printer (HP Photosmart D5460) and whenever I print certain PDF files from www.mes-english.com it prints too small. I have large margins on the right side and the bottom. Ive clicked choose paper source by PDF paper size. Ive tried prin

  • Run Crystal Report from URL includes username and password

    Hello, I've downloaded CR 2008, and CR Server 2008 demo's. I'm trying to use a feature I've used with CR10 enterprise, and XI report server, where I can run a report direct from the URL. Something like: HTTP://scada-ho/crystal/enterprise/admin/en/vie

  • HT4623 how to pass music from my computer to iphone5

    How to pass the music from my computer to iphone 5?

  • Problem accessing ECC 6.0 with Crystal

    Hi, I installed SAP INtegration Kit for BO and the transports etc., Then i tried to access ECC via Crystal 2008. I choose the new connection for 'Sap table, cluster or function" which when connected showing me three groups CL,DD,FN which donot have t

  • Change MRP Controller Description

    Hi, We have maintained Same MRP Controller with Description for all 100 Plants. Now we want to change Description of these MRP Controller for all 100 Plants. Is there any way to change in One go or we need to manually change one by one? Thanks & Rega