Can't get unparsed (XML string) BPEL response in servlet

(Reposted from "OC4J and Java EE" forum)
I'm trying to invoke a two-way BPEL process from within a servlet like so:
        NormalizedMessage requestMessage = new NormalizedMessage();
        requestMessage.addPart("payload", requestXml);
        Locator lctr = new Locator(domainId, password);
        IDeliveryService dService = (IDeliveryService) lctr.lookupService(IDeliveryService.SERVICE_NAME);
        NormalizedMessage responseMessage = dService.request(bpelId, operationId, requestMessage);I would like to retrieve the unparsed XML String response. I thought that would be possible using the following:
        String responsePayload = responseMessage.getPayloadString();but that returns null. responseMessage.getPayload() returns a Map from which I can successfully obtain the payload XMLElement, so the BPEL process is definitely working.
Any ideas why getPayloadString is not working as I expect it to? SOA suite is version 10.1.3.1. Thanks!

hmm, if you poke around in decomiled version of DeliveryBean and NormalizedMessage, you can see that NormalizedMessage mPayloadString is not set by anybody, may be that is the cause.
Probably you can write your own function:
e.g. something like:
NonSyncStringBuffer buf = new NonSyncStringBuffer();
Iterator it = mPayload.keySet().iterator();
buf.append("<part>");
int i = 0;
for(int size = mPayload.size(); size > 0;)
String key = (String)it.next();
if(i > 0)
buf.append(", ");
buf.append(key).append('=').append(mPayload.get(key));
size--;
i++;
buf.append('</>');
return buf.toString();

Similar Messages

  • How to get an XML string from a Java Bean without wrting to a file first ?

    I know we can save a Java Bean to an XML file with XMLEncoder and then read it back with XMLDecoder.
    But how can I get an XML string of a Java Bean without writing to a file first ?
    For instance :
    My_Class A_Class = new My_Class("a",1,2,"Z", ...);
    String XML_String_Of_The_Class = an XML representation of A_Class ?
    Of course I can save it to a file with XMLEncoder, and read it in using XMLDecoder, then delete the file, I wonder if it is possible to skip all that and get the XML string directly ?
    Frank

    I think so too, but I am trying to send the object to a servlet as shown below, since I don't know how to send an object to a servlet, I can only turn it into a string and reconstruct it back to an object on the server side after receiving it :
    import java.io.*;
    import java.net.*;
    import java.util.*;
    class Servlet_Message        // Send a message to an HTTP servlet. The protocol is a GET or POST request with a URLEncoded string holding the arguments sent as name=value pairs.
      public static int GET=0;
      public static int POST=1;
      private URL servlet;
      // the URL of the servlet to send messages to
      public Servlet_Message(URL servlet) { this.servlet=servlet; }
      public String sendMessage(Properties args) throws IOException { return sendMessage(args,POST); }
      // Send the request. Return the input stream with the response if the request succeeds.
      // @param args the arguments to send to the servlet
      // @param method GET or POST
      // @exception IOException if error sending request
      // @return the response from the servlet to this message
      public String sendMessage(Properties args,int method) throws IOException
        String Input_Line;
        StringBuffer Result_Buf=new StringBuffer();
        // Set this up any way you want -- POST can be used for all calls, but request headers
        // cannot be set in JDK 1.0.2 so the query string still must be used to pass arguments.
        if (method==GET)
          URL url=new URL(servlet.toExternalForm()+"?"+toEncodedString(args));
          BufferedReader in=new BufferedReader(new InputStreamReader(url.openStream()));
          while ((Input_Line=in.readLine()) != null) Result_Buf.append(Input_Line+"\n");
        else     
          URLConnection conn=servlet.openConnection();
          conn.setDoInput(true);
          conn.setDoOutput(true);           
          conn.setUseCaches(false);
          // Work around a Netscape bug
          conn.setRequestProperty("Content-Type","application/x-www-form-urlencoded");
          // POST the request data (html form encoded)
          DataOutputStream out=new DataOutputStream(conn.getOutputStream());
          if (args!=null && args.size()>0)
            out.writeBytes(toEncodedString(args));
    //        System.out.println("ServletMessage args: "+args);
    //        System.out.println("ServletMessage toEncString args: "+toEncodedString(args));     
          BufferedReader in=new BufferedReader(new InputStreamReader(conn.getInputStream()));
          while ((Input_Line=in.readLine()) != null) Result_Buf.append(Input_Line+"\n");
          out.flush();
          out.close(); // ESSENTIAL for this to work!          
        return Result_Buf.toString();               // Read the POST response data   
      // Encode the arguments in the property set as a URL-encoded string. Multiple name=value pairs are separated by ampersands.
      // @return the URLEncoded string with name=value pairs
      public String toEncodedString(Properties args)
        StringBuffer sb=new StringBuffer();
        if (args!=null)
          String sep="";
          Enumeration names=args.propertyNames();
          while (names.hasMoreElements())
            String name=(String)names.nextElement();
            try { sb.append(sep+URLEncoder.encode(name,"UTF-8")+"="+URLEncoder.encode(args.getProperty(name),"UTF-8")); }
    //        try { sb.append(sep+URLEncoder.encode(name,"UTF-16")+"="+URLEncoder.encode(args.getProperty(name),"UTF-16")); }
            catch (UnsupportedEncodingException e) { System.out.println(e); }
            sep="&";
        return sb.toString();
    }As shown above the servlet need to encode a string.
    Now my question becomes :
    <1> Is it possible to send an object to a servlet, if so how ? And at the receiving end how to get it back to an object ?
    <2> If it can't be done, how can I be sure to encode the string in the right format to send it over to the servlet ?
    Frank

  • Urgent!! PL/SQL web service can not get output param in BPEL

    OC4J 10.1.2 generate PL/SQL web service can not get output param can not get output param in BPEL when call a pl/sql webservice.
    wsdl as follow:
    <types>
    <schema targetNamespace="http://db.func.getqf/COMMON.xsd" xmlns:tns="http://db.func.getqf/COMMON.xsd" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <complexType name="db_func_getqf_COMMONUser_getqf_Out">
    <all>
    <element name="pnqfysOut" type="xsd:decimal"/>
    <element name="pnzqfOut" type="xsd:decimal"/>
    </all>
    </complexType>
    </schema>
    </types>
    <message name="getqfOutput">
    <part name="return" type="xsd1:db_func_getqf_COMMONUser_getqf_Out"/>
    </message>

    the wsdl which generate by OC4J is as follows:
    <?xml version="1.0" ?>
    - <definitions name="COMMON" targetNamespace="http://db.func.getqf/COMMON.wsdl" xmlns="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://db.func.getqf/COMMON.wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd1="http://db.func.getqf/COMMON.xsd">
    <documentation>WSDL for Service: COMMON, generated by Oracle WSDL toolkit (version: 1.1)</documentation>
    - <types>
    - <schema attributeFormDefault="qualified" elementFormDefault="qualified" targetNamespace="http://db.func.getqf/COMMON.xsd" xmlns:tns="http://db.func.getqf/COMMON.xsd" xmlns="http://www.w3.org/2001/XMLSchema" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    - <complexType name="db_func_getqf_COMMONUser_getqf_Out">
    - <all>
    <element name="pnqfysOut" type="xsd:decimal" />
    <element name="pnzqfOut" type="xsd:decimal" />
    </all>
    </complexType>
    </schema>
    </types>
    - <message name="getqfOutput">
    <part name="return" type="xsd1:db_func_getqf_COMMONUser_getqf_Out" />
    </message>
    - <message name="getqfInput">
    <part name="param0" type="xsd:string" />
    </message>
    - <portType name="COMMONPortType">
    - <operation name="getqf">
    <input message="tns:getqfInput" />
    <output message="tns:getqfOutput" />
    </operation>
    </portType>
    - <binding name="COMMONBinding" type="tns:COMMONPortType">
    <soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="rpc" />
    - <operation name="getqf">
    <soap:operation soapAction="urn:db-func-getqf-COMMON/getqf" />
    - <input>
    <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:db-func-getqf-COMMON" />
    </input>
    - <output>
    <soap:body use="encoded" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" namespace="urn:db-func-getqf-COMMON" />
    </output>
    </operation>
    </binding>
    - <service name="COMMON">
    - <port name="COMMONPort" binding="tns:COMMONBinding">
    <soap:address location="http://localhost:9700/plsqlgetqf/getqf" />
    </port>
    </service>
    </definitions>

  • How can I get the XML structure from a flat structure?

    Hi all,
    in my XI SP 12 I use a JMS adapter to read information using the WebSphereMQ transport protocol.
    The structure that I receive have this format:
    <Name_A.KeyFieldValue><Name_A.fieldName_A1_Value>...<Name_A.fieldName_AN_Value>
    <NumberRecordType_B><NumberRecordType_c>
    <Name_B.KeyFieldValue><Name_B.fieldName_B1_Value>...<Name_B.fieldName_BN_Value>
    <Name_B.KeyFieldValue><Name_B.fieldName_B1_Value>...<Name_B.fieldName_BN_Value>
    <Name_C.KeyFieldValue><Name_C.fieldName_C1_Value>...<Name_C.fieldName_CN_Value>
    <Name_C.KeyFieldValue><Name_C.fieldName_C1_Value>...<Name_C.fieldName_CN_Value>
    the problem is that in this structure each line is not separated by a carriage return or a comma, I have all the information in a single line:
    <Name_A.KeyFieldValue><Name_A.fieldName_A1_Value>...<Name_A.fieldName_AN_Value><NumberRecordType_B><NumberRecordType_c><Name_B.KeyFieldValue><Name_B.fieldName_B1_Value>...<Name_B.fieldName_BN_Value>...<Name_B.KeyFieldValue><Name_B.fieldName_B1_Value>...<Name_B.fieldName_BN_Value><Name_C.KeyFieldValue><Name_C.fieldName_C1_Value>...<Name_C.fieldName_CN_Value>...<Name_C.KeyFieldValue><Name_C.fieldName_C1_Value>...<Name_C.fieldName_CN_Value>
    and the customer don't want to insert a line separator.
    Then, the question is:
    How can I get the XML structure from this structure?
    If possible, I don't want to develop new Module and add it in the JMS Module Sequence.
    PS I have already read the article "How to Use the Content Conversion Module with the XI 3 J2EE JMS Adapter.pdf" and it doesn't seem to help me.
    Best Regards,
    Paolo

    To get context parameters from your web.xml file you can simply get the ActionServlet object from an implementing action object class. In the perform (or execute) method make the following call.
    ServletContext context = getServlet().getServletContext();
    String tempContextVar =
    context.getInitParameter("<your context param >");

  • How to get an XML string store in CLOB or LONG column ?

    How to get an XML string store in CLOB or LONG column ?
    We use XSU with the following command
    String str = qry.getXMLString();
    but all the "<" are replace by "&lt;"
    It's impossible to parse the result for XSLT transformation
    Thank's for your help
    Denis Calvayrac
    Example :
    in the column "TT_NAME"
    "<name><firstname>aaa</<firstname><lastname>bbb</lastname></name>
    I want this result
    <TT_NAME>
    <name>
    <firstname>aaa</firstname>
    <lastname>bbb</lastname>
    </name>
    </TT_NAME>
    but, I have this result
    <TT_NAME>
    &lt;name&gt;
    &lt;firstname&gt;aaa&lt;/firstname&gt;
    &lt;lastname&gt;bbb&lt;/lastname&gt;
    &lt;/name&gt;
    </TT_NAME>

    Can you post some of your code, so I can take a look ?
    Thanks

  • How can i get getwayed url string using pluggable nav in news portlet?

    hi.
    How can i get getwayed url string using pluggable nav in news portlet?
    A code just like below is what I want.
    <param value="param=http://.../portal/server.pt/gateway/PTARGS_.../http/...">
    I tryed the following, but didn't work as I wanted.
    1.<param value="<pcs:valueexpr='var'/>">
    -> transformed. but I want the prefix 'param=' in the enquoted string's too.
    2. <param value="param=<pcs:valueexpr='var'/>">
    -> not transformed.
    Any idea?
    Hiroyuki

    Hi all,
    We have HPROF functionality in our latest roadmap, so you will see that feature in our next major release called JRockit R28.
    I recommend, above from the MemLeak documentation suggested by Makiey, the following information on how to use JRockit tools.
    Performance Tuning & Profiling:
    http://download.oracle.com/docs/cd/E13150_01/jrockit_jvm/jrockit/geninfo/diagnos/part_02.html
    Using JRockit tools:
    http://download.oracle.com/docs/cd/E13150_01/jrockit_jvm/jrockit/geninfo/diagnos/part_03.html
    Diagnostics & Troubleshooting
    http://download.oracle.com/docs/cd/E13150_01/jrockit_jvm/jrockit/geninfo/diagnos/part_04.html
    Best Regards,
    Tuva
    JRockit PM

  • How can I get in a String a text.... ?

    How can I get in a String a text in database,
    I tried =result.getString("fieldName") but don�t
    work.
    Tiago ticdd

    try this:
    String text = results.getString(columnIndex);
    or loop thru the ResultSetMetaData as follows:
    String text = results.getString(resultSetMetaData, columnName);
    function getColumnIndex(ResultSetMetaData rsmd, String columnName){
         int numCols = rsmd.getColumnCount();
         for (i=1; i <= numCols; i++){           
              if(rsmd.getColumnName(i).equalsIgnoreCase(columnName)){
                   return i;
         return -1;

  • How to get an xml string into a Document w/o escaping mark-up characters?

    Hi,
    I am using one of the latest xerces using Java. I am pretty sure I am using xerces-2.
    I have an existing Document and I am trying to add more content to it. The new content itself is xml string. I am trying to insert this xml string into the document using document.createTextNode. I am able to insert, but somewhere it is escaping the mark-up characters (<,>,etc). When I convert the document into String, I can see, for example, <userData> instead of <userData>.
    There is an alternative option to accomplish this by creating a new document with this xml string, get the root element, import this element into my document. Execution time for this procedure is very high - means, this is very bad in terms of time-wise performance.
    Can any help on how to accomplish this (bringing an xml string into a document without escaping mark-up characters) in time-efficient way.

    So you want to treat the contents of the string as XML rather than as text? Then you have to parse it.
    Or if your reason for asking is just that you don't like the look of escaped text, then use a CDATA section to contain the text.

  • How can I read an XML string that's not from an XML file?

    I've got a script I'm trying to setup that communicates over a socket to retrieve different directions from a custom built Java program.  The Java program listens to requests from the Adobe scripting engine (in my case it's a Photoshop script) on a socket and immediately responds with the next set of directions.  These directions are currently in XML format.  The issue I'm having is that I can't parse the XML data since it's entered into a new XML object from a string rather than being read from a file.  Even without the socket code, you can see the issue by doing the following:
    var xml = new XML("<test><data>hey!</data></test>");
    alert(xml.test.data);
    alert(xml);
    The first alert "should" return "hey!" (without quotes, of course), but it doesn't, while the second alert returns what you would expect it to:
    <test>
        <data>hey!</data>
    </test>
    It works fine if read from an XML file, but from a string, like shown above, it just presents an empty alert box when attempting to access "xml.test.data".  Any ideas on how to fix this issue?  Can it be fixed?  Has it been fixed in newer versions (I'm currently using CS4)?
    Thanks in advance for any help!

    Duh... found my error... I was attempting to access the data by referencing the created "root" element.  Since <test> is the very first element tag, it's setup as the root element, which you don't need to reference.  Changing the alert to alert(xml.data); fixed it.
    Now I just feel dumb, lol...

  • Getting an XML string into BI

    Hi,
    I am loading data through flat files and have a field in te flat file which is an XML string. It is esentially a combination of characterisitic value embedded in one string. What should i do to pick specific values from the string and put it into a BW field. Can you give me an example, if we have to write a routine for that
    Thanks
    Rashmi.

    The issue got resolved with a routine in the transformations where specific characters were chosen.

  • Can we get Arraylist from String.Please check the code

    Hi all,
    I have just pasted my code over here.Can anyone of you find the solution for obtaining the Array list from the String.
    For Example :
    ArrayList al = new ArrayList();
    al.add(new byte[2]);
    al.add("2");
    String stringVar = "" + (ArrayList) al;
    Here I can convert the arraylist into string.But can we do he vice versa like obtaining the above arraylist from the string?If please advice me.
    URGENT!!!!

    cudIf you run the code you posted you will observe that the string form of the list does not contain all the information of the list: in particular the array elements are missing. It follows that the "vice versa" conversion you seek is simply not possible.
    A variation on this theme is the following:import java.util.ArrayList;
    public class ListEg {
        public static void main(String[] args) {
            ArrayList al = new ArrayList();
            al.add("foo");
            al.add("bar, baz");
            String stringVar = "" + (ArrayList) al;     
            System.out.println(stringVar);
    }If you think about the output you should be able to conclude that lists with different contents can easily have the same string form.
    Just something to chew on.

  • How can I parse an XML string, (not an XML file)?

    Hi,
    I am using Xerces2 Java Parser 2.4.0,
    I wanta parse an XML string, not an XML file, but
    in the Parser class there is only following methods:
    parse(InputSource source)
    parse(java.lang.String systemId)
    thanks

    hi
      InputSource is = new InputSource(new ByteArrayInputStream(xmlSrc.getBytes()));
      HTH
    vasanth-ct

  • How can I get a reference to ApplicationModule in a servlet

    I know that I can easily get the reference to my ApplicationModule in any JSP using the tags but I need to use a servlet instead of a JSP.
    Would you please let me know how I can a reference to my ApplicationModule in my Servlet? Every function that I am trying to use has been depricated.
    I appreciate any help.

    The following code will instantiate a module for you...
    public static ApplicationModule getGenericApplicationModule(String sAppModule, String sConnection)
    throws Exception {
    if (am != null)
    return am;
    sName = sAppModule;
    sConn = sConnection;
    Hashtable env = new Hashtable(2);
    env.put(Context.INITIAL_CONTEXT_FACTORY, JboContext.JBO_CONTEXT_FACTORY);
    env.put(JboContext.DEPLOY_PLATFORM, JboContext.PLATFORM_LOCAL);
    Context ic = new InitialContext(env);
    ApplicationModuleHome home = (ApplicationModuleHome)ic.lookup(sName);
    am = home.create();
    am.getTransaction().connect(sConn);
    return am;
    Problem in a servlet environment is that this is not pooled so you want to use the pool manager like this...
    public static EDMSMgrImpl getPooledApplicationModule(String sPoolName) throws BaseBc4jException
    ApplicationPool aPool = getApplicationPool(sPoolName);
    try
    return (EDMSMgrImpl)aPool.checkout();
    catch (Exception e)
    String message = "Exception checking out pool: "+sPoolName+" : "+e.getMessage();
    LogBroker.getInstance().severe(_instance,message ,e);
    throw new BaseBc4jException(message, e);
    protected static ApplicationPool getApplicationPool(String sPoolName) throws BaseBc4jException
    ApplicationPool aPool = PoolMgr.getInstance().getPool(sPoolName);
    if (aPool == null)
    try
    createPools();
    aPool = PoolMgr.getInstance().getPool(sPoolName);
    catch(IOException ioe)
    String message = "IOException thrown in EDMSAppModuleHelper.createPools" + ioe.getMessage();
    LogBroker.getInstance().severe(_instance,message, ioe);
    throw new BaseBc4jException(message, ioe);
    if (aPool == null)
    String message = "got a null result when getting pool: "+sPoolName;
    BaseBc4jException e = new BaseBc4jException(message);
    LogBroker.getInstance().severe(_instance, message, e);
    throw e;
    return aPool;
    Where a pool is created like this...
    sPoolName = poolElem.getAttribute(POOL_NAME_ATTRIBUTE);
    sAppModule = poolElem.getAttribute(APP_MODULE_ATTRIBUTE);
    sConnection = poolElem.getAttribute(CONNECTION_ATTRIBUTE);
    stateFull = poolElem.getAttribute(STATEFULL_ATTRIBUTE);
    sClass = getPoolClass(poolElem);
    if(PoolMgr.getInstance().getPool(sPoolName) == null) {
    Hashtable info = new Hashtable();
    info.put(JboContext.INITIAL_CONTEXT_FACTORY, JboContext.JBO_CONTEXT_FACTORY);
    info.put(JboContext.DEPLOY_PLATFORM, "LOCAL");
    info.put("IsStateLessRuntime", stateFull);
    PoolMgr.getInstance().createPool(sPoolName, sClass, sAppModule , sConnection, info);

  • How can I get Data in String Array from TABLE

    hi all
    I have table in MS Access databse called Login with two coulmn (User, Password),
    I want to get all the User Name in a string[] called USER,
    (LIKE USER = {"AA","BB","CC",........"zz"};
    i made somthing like this
    public class User_Name
    final String driver = Login_Dialog.T_driver.getSelectedItem().toString();
    final String url = Login_Dialog.T_URL.getSelectedItem().toString();
    final String user = Login_Dialog.T_User.getText().toString();
    final String password = new String(Login_Dialog.T_Password.getPassword());
    static Connection connection;
    static Statement statement;
    static String sql;
    static ResultSet rs = null;
    static String[] User ;
    public String User_Name()
    try
    //Load Driver
    Class.forName(driver);
    // Make Connection
    connection=DriverManager.getConnection(url,user,password);
    // Create Statement
    statement = connection.createStatement();
    sql = "SELECT User FROM Login" ;
    // Create Resultset
    rs = statement.executeQuery(sql);
    ResultSetMetaData MD = rs.getMetaData();
    int C_N = MD.getColumnCount();
    if(rs.next())
    for(int i = 2 ; i<=C_N ; i++)
    User = rs.getString(2);
    statement.close();
    rs.close();
    connection.close();
    return User;
    catch(ClassNotFoundException cnfex) {
    //show message
    JOptionPane.showMessageDialog((Component) null,
    "Failed to load driver..."+
    "\n"+cnfex.getMessage(),
    "Error...",
    JOptionPane.ERROR_MESSAGE,
    UserDatabase.Error_Icon);
    catch(SQLException sqlex){
    //show message
    JOptionPane.showMessageDialog((Component) null,
    "Unable to connect to Database..."+
    "\n"+sqlex.getMessage(),
    "Error...",
    JOptionPane.ERROR_MESSAGE,
    UserDatabase.Error_Icon);
    but i can get any thing so plz anybody send me a code for this one or help me out
    Thanx
    Regards
    Satinderjit

    in for loop, try;
    user[i] = rs.getString(2);

  • BC4J HOW Can I GET the CONNECTION String

    hi everyone
    I'm using Jdev 3.2. In my BC4J prooject I want to get the current connection String used by the application module to connect to database.
    can some one help me please.
    Ghassen

    I don't know what's really the problem, but I recomplie the same code and I receive the same error.
    I added also the import statement: import oracle.dacf.dataset.connections.NamedConnection.
    and I receive the same error message.
    can that be a mising library problem?
    ghassen
    null

Maybe you are looking for