Peformance of setting JVM attribute or callback.

I have a program that receives feeds in the native world and then calls the JVM through JNI with a callback like receivedFeed(attr1, attr2 ....attr20). There are a large number of attributes being passed back for each callback.
The question I have has to do with performance.
Is it faster to use this callback approach where the attributes are put in the signature and then reassembled on the java side into an object? Compared to directly setting each attribute on the Java object from within the native world and then prompting the JVM with a callback like updated();

Very true. I would normally agree. Wrap the parameters in an object to minimize the number of arguments and make it flexible.
Specifically, I am thinking about performance and I am willing to compromise a bit on the beauty of the solution, if it is faster.
I have receiving a feed that has about 20 data items. Mostly ints and longs, and maybe a string. This format is relatively fixed and is not likely to change any time soon. If it does, it is all of my own code so the changes are easy.
In the parameter passing approach, my assumption is that I would have a callback into the JVM with a long signature like
receiveFeedCallback(jint1,jint2,jint3,...jint20);
For the object wrapping approach, I would first have to construct an object. and then do the callback:
jvalue args[4];
     args[0].i=(int) 0;
     args[1].i=(int) val1;
     args[2].i=(int) val2;
     args[3].i=(int) val3;
jobject trans = jniENV_->NewObjectA(clazz,"<init>",args);
jniENV_->CallStaticVoidMethod(jObj,_method_JNITEST_callback,feedTransaction);
In the end, I probably need to know what the overhead of creating a class in Java vs. C++ is compared to the parameter passing approach.
I may be doing this callback about 20(or more) times per millisecond. About 85% of the time in my program is on this one step so I would like to try the fastest approach possible.
In the end, I am trying to write a test case to test the performance....which leads me to another questions and likely another thread in the JNI world....to be posted soon.
Thanks for the help.

Similar Messages

  • Setting an attribute back to null

    Hi All.
    During provisioning to certain resource, I set an attribute to some value (It gets set properly), Now I want to set it back to null(empty string). It is not setting back to null and still displays the old value
    <set name='user.global.attr1'>
    <null/> or <s></s>
    </set>
    Is there any way to set the attribute value back to null or clear that particular attribute
    Thanks,

    Any update on this, Please reply

  • Problem with setting custom attribute and it being searchable

    I'm having an issue with setting a custom attribute and having it be searchable using Portal 10.1.4. The situation that we have is that we initially added a bunch of files to Oracle Portal using webdrive. Later on, we decided that we needed another custom attribute called "Pinned Item" that will be used for searching (boolean value) and gave it a default value of false. The attribute was then added to the "File" item type in the "Shared Objects" group.
    It appears that since this attribute wasn't initially available on the file object, we couldn't search on it so we decided to set it programatically. First, I tried using wwsbr.set_attribute but it errored out seemingly because the value wasn't set in the first place. If I set a value first by using the web front end, I could then use the set_attribute procedure.
    So, I moved on to using wwsbr_api.modify_item and it appears to set it (although everything is being set to false until I changed it to "text" instead of "boolean" which is OK because that's what I wanted anyway... see metalink bug 390618.1). I'm using the method outlined in metalink doc 413079.1. When I do set it to a "1", and edit the item the check box is checked indicating that it is set correctly. And if I just click "OK" to save the attributes after I open it everything works like it should.
    However, the advanced search (and custom search portlet) and the search APIs are not picking it up. I'm not sure if I'm hitting Metalink bug ID 5592472 or not as that's using the "set_attribute" procedure instead of the modify_item procedure. And their "workaround" of setting the attribute in the UI isn't really feasible for a couple thousand files.
    So far I've tried the following things to get it working:
    1. I am calling wwpro_api_invalidation.execute_cache_invalidation
    2. I have executed wwv_context.sync
    3. I cleared the page group cache
    4. I invalidated all of the web cache
    Does anyone else have any other suggestions?

    I'm having an issue with setting a custom attribute and having it be searchable using Portal 10.1.4. The situation that we have is that we initially added a bunch of files to Oracle Portal using webdrive. Later on, we decided that we needed another custom attribute called "Pinned Item" that will be used for searching (boolean value) and gave it a default value of false. The attribute was then added to the "File" item type in the "Shared Objects" group.
    It appears that since this attribute wasn't initially available on the file object, we couldn't search on it so we decided to set it programatically. First, I tried using wwsbr.set_attribute but it errored out seemingly because the value wasn't set in the first place. If I set a value first by using the web front end, I could then use the set_attribute procedure.
    So, I moved on to using wwsbr_api.modify_item and it appears to set it (although everything is being set to false until I changed it to "text" instead of "boolean" which is OK because that's what I wanted anyway... see metalink bug 390618.1). I'm using the method outlined in metalink doc 413079.1. When I do set it to a "1", and edit the item the check box is checked indicating that it is set correctly. And if I just click "OK" to save the attributes after I open it everything works like it should.
    However, the advanced search (and custom search portlet) and the search APIs are not picking it up. I'm not sure if I'm hitting Metalink bug ID 5592472 or not as that's using the "set_attribute" procedure instead of the modify_item procedure. And their "workaround" of setting the attribute in the UI isn't really feasible for a couple thousand files.
    So far I've tried the following things to get it working:
    1. I am calling wwpro_api_invalidation.execute_cache_invalidation
    2. I have executed wwv_context.sync
    3. I cleared the page group cache
    4. I invalidated all of the web cache
    Does anyone else have any other suggestions?

  • How to set session attributes in a bean?

    How do I set a session attribute in a server-side bean?
    I'm not sure if I asked the question the right way. What I meant is, while it's easy to set session attributes in a JSP page (session.setAttribute("sessionname", "sessionvalue")), I'd want to set such an attribute within a server-side bean defined in this web application. But what is the syntax for doing it?

    Here a simple bean that stores something in the session and retrieves something from it.
    import javax.servlet.http.HttpSession;
    public class TestBean {
      private String value;
      public void doSomething(HttpSession session, int a, int b) {
        if (a+b > 0) {
          session.setAttribute("ab",Boolean.TRUE);
        } else {
          session.setAttribute("ab",Boolean.FALSE);
      public void init(HttpSession session) {
        if (session != null) {
          Boolean b = (Boolean)session.getAttribute("ab");
          if (b == Boolean.TRUE) {
            value = "a + b is greater than zero";
          } else {
            value = "a + b is not greater than zero";
        } else {
          value = "no session";
      public String getValue() {
        return value;
    }In your JSP, use something along the lines of :
    <%
      TestBean bean = new TestBean();
      bean.init(session);
      bean.doSomething(session,1,2);
    %>If your bean only lives during one request, you can pass the session to the constructor, which stores it in a private variable. This saves passing the session each time.
    Hope this helps,
    --Arnout                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • Setting an attribute value of a tag equal to a String variable in scope

    Hi,
    I don't think this is possible because I get an "expression not allowed" error when trying it. But long story short I'm trying dynamically set attribute values on a taglib. For example:
    <%
    String value="attributevalue";
    // set the attribute of the tag below equal to this variable value
    %>
    <tag:mytaglib name="<%=value%>"/>
    I looked at the generated jsp page and seems like the variable "value" is not in scope of the method that processes the tag. Does anyone have any ideas or can confirm that there is no way to do this. Thanks!

    You can do it.
    In your tag library (*.tld) file, have an entry as:
        <attribute>
            <name>name</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
        </attribute>This should do the trick.
    Let us know if it worked for you.
    Thanks and regards,
    Pazhanikanthan. P

  • Set type attribute search help in Web UI

    Hello,
    I've created a set type attribute in the SAP GUI in CRM 2007 which links to value table BUT000. On the product in the SAP GUI, the F4 search help brings up the standard BP search help (COM_PARTNER).
    I've assigned the attribute to the web UI, and the field displays correctly, however when I click on the F4 help, the system only shows me a list of BP numbers without even a description description, and not the standard search help. The response to my OSS message is that this is "standard".
    Any suggestions as to how to enable the correct search help for this?
    Thanks,
    Alison

    Hello,
    This is an example :
      READ TABLE lt_multivalues WITH KEY fieldname = 'ZOPERATION_ID'
      INTO ls_multivalues.
      IF sy-subrc NE 0.
        READ TABLE lt_multivalues WITH KEY fieldname = 'ZKIT_ID'
        INTO ls_multivalues.
      ENDIF.
      IF sy-subrc EQ 0.
    Z search
        CALL METHOD me->search_by_kit
          EXPORTING
            it_search_tab          = it_search_tab
            it_multivalues         = lt_multivalues
            iv_number              = iv_number
            iv_item                = iv_item
            iv_archive             = iv_archive
            iv_call_authority_badi = iv_call_authority_badi
          IMPORTING
            et_guidlist            = et_guidlist
            et_return              = et_return.
      ELSE.
    Standard search
        CALL METHOD me->search_standard
          EXPORTING
            it_search_tab          = it_search_tab
            it_multivalues         = lt_multivalues
            iv_number              = iv_number
            iv_item                = iv_item
            iv_archive             = iv_archive
            iv_call_authority_badi = iv_call_authority_badi
          IMPORTING
            et_guidlist            = et_guidlist
            et_return              = et_return.
      ENDIF.
    You have to fill et_guidlist with the results.
    Benoî

  • How to change set type attribute of a product

    Hi ;
    I created additional fields for products by using "COMM_ATTRSET". It created a table and functions but I dont know how to change this additional attributes.I cant use these attribute set functions because i dont know fragment_id yet. I think there must be a function encapsulates them.
    Is there any BAPI to change set type attributes?
    PS: In forums , I found an FM "COM_PRODUCT_MAINTAIN_MULT_API" but I think it hasnt been used anymore in CRM7.0
    Thanks

    Thanks for your reply ;
    but FM 'COM_PRODUCT_UI_MAINTAIN' doesnt have any generic import parameters to send my data to it in form of  newly created attribute set type table "ZPRODUCT".
    I want to set some fields of ZPRODUCT and i need to send them in this structure,  this table has column FRG_ID , if you set an additional  parameter for the first time , it generates new GUID..I think  'COM_PRODUCT_UI_MAINTAIN'  generates this GUID but i dont know how to use it.
    Can you give an example about using this FM?

  • Unable to set volume attribute "min-autosize" for volume

    We have a TDP volume(destination), that is in snapmirrored state from 7Mode to cDOT.While trying to resize/increment the volume size by say 100g we get the following error. clusterName> volume size volumneName -vserver vserverName +100gWarning: Volume "vserver:volumeName" is a SnapMirror destination volume. The Filesystem Size for this volume is derived from its source and cannot be changed. The specified size will be used as the Volume Size.
    Do you want to continue? {y|n}: y Error setting size of volume "vserver:volumeName". Unable to set volume attribute "min-autosize" for volume
    "volumeName" on Vserver "vserverName". Reason: Volume 'volumenName' is a snapmirrored volume.
    vol size: Flexible volume 'volumeName' size limit set to 8022664413184.  Any idea ?  Volumes autosize mode is false.

    Hi    I am not trying to change any setting. I am trying to increase the size of the volume. I understand in case of a Snapmirrored volume the fs_fixed options is ON.But one can always increase the actual volume size using vol size command. Even if I increase the size on ONTAP on the file system side it will show as the size same as source. I understand that. So my question is why is it prevenitng me from increasing the size. RegardsAdai

  • Javascript to JSP question...Can javascript function set session attributes

    hello,
    i have a web app that, on one of its pages, displays "tabbed pane" as an image map at the top (a la amazon.com). my problem is this: each "logical" page contains separate forms that all use the same javabean. in other words, imagine that the tabs represent an account maintenance web ui for an on-line record store. the first tab might be labeled "General," the second "Contact info," the third "Shipping Info." Each uses the same account bean and displays portions of its properties relevant to the tab at hand. what i want to do is allow a user to enter the account maintenance ui, update info on the first tab, click on tab two and have the request with the changes sent to a processing jsp. yet, since each "tab" is actually a separate URL to another page, how do i get the updated info on the first tabe without adding some sort of "SAVE" button on each tab. ive considered using javascript, but dont know how to get the request params out of the first tab whn i click on another tab. is it possible to include an "onClick" function in each URL that "grabs" the updated form fields off the preceeding tab? can a javacript function set session attributes in jsp?

    hello there,
    wow, you've created one big mammy-jammy tool.
    first, javascript cannot access, set values to the session, without having to post to another JSP. javascript is great for manipulating objects, layers, form values, etc.
    you have 2 issues [if i understand correctly]:
    1) you need to able to save user info for a specific tab without having to reloading the page.
    ---you can create a form for EACH of your tabs and POST all the information to a hidden IFRAME or LAYER for NN4. that hidden IFRAME / LAYER will load a JSP page which with all the parameters you posted to it. or you can build a FRAMESET and target that document["frame-name"].src with that same JSP.
    2) handling when the SAVE INFO action should happen: hence some javascript event handler: onMouseOver, onClick, etc
    ---i don't know the dynamics of your tabs, but if store which tab was clicked on last, then if the user clicks on some other tab, javascript can submit that FORM to a JSP [see condition above]
    you have an interesting tool. can i see?
    i hope i wasn't too confusing, but your problem is sooo interesting. =)
    -WJP

  • Setting property attribute values for multiple selected objects.

    Hello,
    Is there an easy way to set the attribute property values for more that one selected Table Operator Attribute (column) at a time. For example the target table has over 100 columns but I only want to INSERT/UPDATE 10 of those columns. The generated MERGE, INSERT and UPDATE statements will perform DML on all of the columns in the target table, setting the 90 columns with no mapping set to NULL. This is due to the Loading Properties 'Load Column when Updating Row' and 'Load Column when Inserting Row' both default to Yes. I would like to select multiple Attributes in the Table Operator and change the 'Load Column when Updating Row' and 'Load Column when Inserting Row' to No. This is similar to what you were able to do in Oracle Forms 9.0 Designer select multiple Items in a Block and change the properties en-masse.
    Thanks

    Hi,
    Using OMB scripting to set attribute properties in a data mapping sort of defeats the purpose of utilizing a graphical user interface to define and set properties for a data mapping? Surely the GUI data mapping tool was created to get away from writing scripts and scripting would also require that you know the name of the data mapping, table operator and the set of attribute names for which you have to write one line of script to set each property value, i.e. 90 lines to set 90 attribute values.
    Cheers,
    Phil

  • How do I get and set column attributes in a table or a treetable with Java?

    Using 11.1.1.4.0
    Hi,
    How do I get and set column attributes in a table or a treetable with Java? For a simple example, say I have a table and want certain roles to see all columns (including address), and other roles can see only certain columns (no address). In a Java method, I want to test if a table's column visible attribute is true and if so, set it to false before rendering it.
    Thanks in advance,
    Troy

    Hi,
    this use case would be a perfect example for using seeded MDS customization. Instead of checking what users are allowed to see or not upon rendering time, you have a customization class and thus the framework doing this for you.
    http://www.oracle.com/technetwork/developer-tools/adf/learnmore/31-mds-sample-169173.pdf
    In this paper and sample, specific users see different layouts. It also contains a customization class that shows how this can leverage ADF Security
    Frank

  • Easy and efficient way to set dynamic attributes

    My integration scenario is quite complex involving many different receivers and an integration process. For some receivers I have to set dynamic attributes.
    I know that I can set them by using a UDF, however in my case I mostly use XSLT so this is not applicable.
    Is there any other way to do this relatively easy so that I can avoid Java Mappings? Problem ist that I would need to use several Java Mappings to set the attributes where no transformation to the payload itself is taking place which seems to be too much for me. Especially when I consider that these Java Mappings are hard to maintain as they have to be imported again and again if any changes occur.
    So my question is:
    1. Do I really have to go for several Java Mappings just to set some dynamic attributes ?
    2. If so, should I use different Java Packages or is it advisable to leave all Java Mappings in one package?

    Hi Florian,
    yes, you can!
    set dyn atts in XSLT:
    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:map="java:java.util.Map" xmlns:dyn="java:com.sap.aii.mapping.api.DynamicConfiguration" xmlns:key="java:com.sap.aii.mapping.api.DynamicConfigurationKey">
    <xsl:if test="REFERENCEQUALIFIER='MSU'">
         <xsl:variable name="dynamic-conf" select="map:get($inputparam, 'DynamicConfiguration')"></xsl:variable>
         <!--  mit dem folgenden Key-Key-Paar muss dann via UDF die Adresse aus den dyn. Attr. gelesen werden -->
              <xsl:variable name="dynamic-key" select="key:create('http://sap.com/xi/XI/System/Mail', 'MAILADRESS_SU')"></xsl:variable>
              <xsl:variable name="dummy" select="dyn:put($dynamic-conf, $dynamic-key, $MAILADRESS)"></xsl:variable>
              <xsl:comment>Mailadresse SU ermittelt: <xsl:value-of select="$MAILADRESS"></xsl:value-of>
              </xsl:comment>
    Hoffe es hilft.
    Grüße
    Mario
    Edited by: Mario Müller on Oct 15, 2009 1:47 PM

  • How to set a attribute value of a sub node binded to a table.. pls respond.

    Hi friends,
    I have context defined like this.
         Head_node ( table 1)
              Item_node ( table 2, sub node ).  ( now this im saving in global internal table).
    so now when i hit save button, im passing my internal table (it has col1- sales order no, col2 item details(table type, which can have more than one record) to a FM, to create sales order.
    My sales order is getting saved.
    But the function module will return some new values (like sales order number, item number etc).
    Now i want these values to be updated in my context.
    Meaning whenever after that i do get_attribute, i should get these new (sales order no, item no ) also.
    I dont know how to set the context values of sub nodes , so im missing these values.
    kindly respond back to me..
    thanks in advance,
    Niraja

    Its very simple.
    Follow these steps. e.g you want to get the new sales order number. Define a attribute in ur node (or set of attributes in ur case as per reqruirement) say new_so_number.
    Check your FM, if its returning new_so_number then it's fine, otherwise you have to change the FM to return the new_so_number or you have to get from db table somehow, which best suites your req.
    So once you have new_so_number after calling the FM, say in lv_new_so_number field. Then write this code to set the attribute (change the variables as per your context attributes)
    DATA lo_nd_head TYPE REF TO if_wd_context_node.
      DATA lo_el_head TYPE REF TO if_wd_context_element.
      DATA ls_head TYPE wd_this->element_head.
      DATA lv_new_so_number LIKE ls_head-new_so_number.
    * navigate from <CONTEXT> to <HEAD> via lead selection
      lo_nd_head = wd_context->get_child_node( name = wd_this->wdctx_head ).
    * get element via lead selection
      lo_el_head = lo_nd_head->get_element(  ).
    lv_new_so_number = new_so_number. " (You got this as a exporting parameter of FM etc..)
    * get single attribute
      lo_el_head->set_attribute(
        EXPORTING
          name =  `NEW_SO_NUMBER`
          value = lv_new_so_number ).
    Hope it works.

  • How to set the attributes of request in JSF Programming

    Hi All,
    for setting the attribute values for session, we do something like below.
    setValue("#{sessionScope.PREFERED_TOTALDAYS}",request.getParameter("txtDays")!=null?request.getParameter("txtDays"): ""+jobRowSet.getInt("PREFERED_TOTALDAYS"));
    Now my query is for setting the attribute values of request what is the code I need to use??
    thanks,
    sudhakar

    Just replace "sessionScope" with "requestScope". That will set the attribute request scope.
    Regards
    -Jayashri
    Creator team.

  • Using VM level application constant to set the attributes on the interview screen

    Hi All,
    We have a Performed By as one of the interview question which should be defaulted with the user id of the person who launched the OPA session (through web determinations).
    There is a user-id application constant which is available at the VM layer. Is there a way to set the Performed By question on the interview screen with this user-id by modifying the VM templates?
    Please help.
    Thanks,
    KK

    I tried with that code, its giving compile error for this: Can you please let me know what I am missing here:
    PreSeedValues.java:44: isUnknown(com.oracle.determinations.engine.EntityInstance
    ) in com.oracle.determinations.engine.Attribute cannot be applied to ()
                    boolean userIdKnown = (! performedBy.isUnknown()) && (! performe
    dBy.isUncertain() );
    Because an attribute exists for an entity, it can have different values across different instances, so, when you try to get the value (or check its know/unknown state) you need to pass in the entity instance. In you case the global entity instance: performedBy.isUnknown(ruleSessionGlobal) and performedBy.isUncertain(ruleSessionGlobal)
    Also, one more thing, we have around 50 different screens and each screen has this performed by attribute with different name. Now to set this in code, it would not be a good idea to write 50 lines for different performed by attributes. Can we have something like getting the screen name for the current screen in user context and user that as a prefix for the attrubute name. e.g. RA0084_Sheet_Performed_By in this RA0084_Sheet will be the interview screen name.
    It sounds like you want to set the user id when each screen is submitted. The OnInvestigationStartedEvent will only fire once, when the investigation starts. If you want to set an attribute when a screen is submitted, you probably want to use something like a OnValidateScreenEventHandler which is fired when a screen is submitted and has the screen details in the event.
    See Events and Event Handlers in Oracle Policy Automation Developer's Guide

Maybe you are looking for

  • On a new imac how much of the HDD is already used with the OS,iLife,apps..

    Looking to buy my 1st ever iMac, the one Im going to get is the base one, with 250Gb HDD (I may upgrade to 320Gb for UK £29 though) My question is how much of the HDD is already used by OS X and everything on it? I understand there is some free trial

  • Lightroom 2.1 not opening images in cs3

    I had 2.0 and read that there was a problem open images in to photoshop so downloaded 2.1 as it said this would sort it out but I still can't open in 2.1 had no problems at all in lightroom 1.

  • How do I export iPhoto album in Mac to iPhone5s

    How do I export iPhoto album in Mac to iPhone5s

  • Button AS help!

    Hi. I've tried numerous ways but I cant seem to find the right script to make a movie clip play on release of a button in a different movie clip. Thanks in advance for any help!

  • UISegmentedControl & "prompt" property Problem

    Hello everybody, I'm developing an application with the official iPhone SDK. I'm trying to put a UISegmentedControl in the title of a UIView. For this I used the style UISegmentedControlStyleBar. However, I also would like to put a title to denote wh