Glassfish LB Plug-in limit?

Dear all,
I configured the SUN Webserver7 with Glassfish LB plugin.
It worked fine with Glassfish in normal SOAP request.
Unfortunately, in my real case, each SOAP request might need about 1-4 seconds to response back to client.
So I used Thread.sleep(1000~4000) to simulate the request. The reason why it takes so long is that in my
SOAP service it will send another SOAP to another server not in my domain.
Normally without sleep(N) seconds, the Glassfish's throughput is about 800 TPS on 2GB Head with 4core Q8200 CPU
on CentOS 5.3.
But with sleep 1000 ms, the throughput drop to 400.
with sleep 2000 ms, the throughput drop to 300.
with sleep 10000 ms, the throughput drop to about 45 only.
I am curiouly about G.F. performance and it looks like the upper-limit of G.F. HTTP Thread-Count is 500. then my TPS
could not over 500 just because each worker thread is locked.
Another issue is once I used sleep(N), then the max. request thread through SUN webserver 7 with LB plugin can not exceed
256 thread.
If I did not use sleep(N) it worked fine. I am curious about this.
Then I switched to HAProxy, it can accept more thread than SUN did.
Can anyone helpme about this?
Thanks in advance.
Eric

should u not post this question to glassfish alias as it pertains more about glassfish than web server 7

Similar Messages

  • Sound window only has digital choice

    have analog speakers plugged into lime green...sound window has digital checked but no other option in window to change to speakers[for analog]

    Right-click in the Sound Properties window (on a space that is empty) and select "Show disconnected devices".
    ... an HP employee expressing his own opinion.
    Please post rather than send me a Message. It's good for the community and I might not be able to get back quickly. - Thank you.

  • When I plug my iphone in to my USB port in the car or computer I get an error message which says the USB has exceeded it power limit

    When I plug my iphone in to my USB port in the car or computer I get an error message which says the USB has exceeded it power limit.
    What can I do?

    madonnafromqld wrote:
    When I plug my iphone in to my USB port in the car or computer I get an error message which says the USB has exceeded it power limit.
    What can I do?
    Stop doing that.

  • Why is the sound low on my Ipod?  When I have my earbuds in I have to have the volume almost all the way up.  I have the volume limit maxed out also.  Same thing when I plug it into a boombox

    Why does my Ipod play at a low volume?  When I have my earbuds in I have to have it at almost full volume, and when I plug it into a boombox it doesn't play as loud as the radio or a cd.  I have the volume limit turned all the way up in the settings also.  All my songs on my Ipod were burned from cd's(if that helps) thanks.

    Sorry, I have the same issue.
    So far searching threads here is not coming up with anything.
    I have set aside my restore discs, to start the process of ripping the drive clean.
    I tried Omni Sweep, but all it did was confirm the space I counted up.
    Still does not show what's hidding. 113GB worth on mine.
    That software really boggs down the system.
    I could not load an email with it running.
    Good LUck as well.

  • To read outlook exhange limit in outlook plug in(2010 and 2013)

    Hi,
       I have to read the outlook exchange limit size in my outlook plug in (c#). I tried below code bit it did not work.Please help me out on this.
    this.Application.Session.Stores[i].PropertyAccessor.GetProperty("PR_MAX_SUBMIT_MESSAGE_SIZE")
                               this.Application.Session.DefaultStore.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x666D0003");
    Thanks
    Chandramohan

    Hello,
    Do you get any exception in the code? Could you please be more specific?
    Anyway, try to you any low-level property viewer such as MFCMAPI or Outlook Spy to explore properties. Do you see that property set?
    You may find the
    similar forum thread helpful.

  • How do I limit access of a computer that is plugged directly into the router?

    I have an AirPort Extreme, Version 7.6.1  I need to limit access of a computer that's plugged by usb directly into the router.  I have the MAC address for this computer and have had restrictions on it the in the past, but it was connected by WiFi then.  How do I do this?  Do I limit access to the Ethernet ID?  I don't want to lock myself out trying to figure it out; I did that last night.  Can someone advise please.

    You could use OpenDNS's parental controls:
    http://www.opendns.com/home-solutions/parental-controls
    It can restrict access according to your specifications for everyone on your network.
    It's free.

  • Error creating plug-in in Apex 4.2 using GlassFish and ORDS

    Hi All,
    Having problems importing plugins in Apex 4.2.4 using Glassfish and ORDS.
    Error message:
    ORA-20987: APEX - Execution  of the statement was unsuccessful. ORA-20001: Error creating plug-in id="7527582887400956434" ORA-20001: Application ID and current security group ID are not consistent.
    Error_On_Component_Type:
    WWV_FLOW_SECURITY
    Error_On_Component_Name:
    FINAL_EXCEPTION_HANDLER
    Environment:
    Linux
    - Oracle11g r2 Linux database.
    Windows 2012
    - Glassfish version 3.1.2.2
    - Oracle Restfull Data Service
    Is there a way to simply log the Glassfish / ORDS environment to find out what's the database connection it's using and the security information that is passed and used in the Apex environment?
    P.S:
    When using the Oracle 11g WebTier HTTP Server on Windows 2012 or the IIS Thoth Gateway on Windows 2012 i can import the plug-in without any problem.
    Any help or advice will be much appreciated.
    Thx,
    Anibal

    I would start by putting this after submit, to check the contents of the array.
    apex_debug.message('count:'||apex_application.g_f01.COUNT);
    FOR i IN 1..apex_application.g_f01.COUNT LOOP
        apex_debug.message('i:'||i||':'||apex_application.g_f01(i));
    END LOOP;
    Then compare the contents with your answers table.

  • PL/SQL Limit When Dealing with a CLOB?

    Greetings,
    I am constructing HTML into a CLOB in a PL/SQL routine which I later display in an APEX application. The HTML can get large, because I am constructing a grid over an image, and the grid can have a lot of columns and rows which means there can be a lot of <area shape="rect" HTML lines. I did a search and found that another person had the same problem, because there is a 32K limit with HTML contents. That was very helpful.
    Thing is - I have another (maybe similar) issue. The procedure that constructs the HTML gets a numeric error when the number of cells in the grid reach a certain point. I checked and this happens when the CLOB in the procedure gets close to 32K. Sorry, it difficult to know exactly when it fails, but the most I have been able to put into the CLOB is 32,852 characters. Therefore my question - is there in internal limit in PL/SQL (or some other Oracle aspect) that is limited to 32K? The coluimn in the table that contains the HTML is a CLOB and the variable in the PL/SQL that the HTML is parsed into is a CLOB, so I thought I was good to go since the CLOB limit is 4GB. But, it looks like I may be missing something.
    We are running Oracle 11i and APEX 4.0.2.00.07. If other system info is needed let me know and I will get that for you.
    Also, if it helps. The code from the procedure is copied below. v_html is the variable that holds the HTML. The table column for the HTML is imagemap_html. Both v_html and imagemap_html are defined as CLOB's.
    Thanks, Tony
    = = = = = = =
    create or replace
    procedure create_grid (p_action IN VARCHAR2) as
        v_wcount integer := 0;   
        v_wmax integer := 20;
        v_width integer := 720;
        v_w1 integer := 0;
        v_w2 integer := 0;
        v_winc integer := 0;
        v_wstart integer := 0;
        v_wend integer := 0;   
        v_hcount integer := 0;
        v_hmax integer := 10;
        v_height integer := 520;
        v_h1 integer := 0;
        v_h2 integer := 0;
        v_hinc integer := 0;
        v_hstart integer := 0;
        v_hend integer := 0;   
        v_cell_row integer := 0;
        v_cell_col integer := 0;
        v_cell_title varchar2(10) := NULL;
        v_whitespace varchar2(10) := NULL;
        v_url_1 varchar2(100) := NULL;
        v_url_2 varchar2(100) := NULL;
        v_url_3 varchar2(100) := NULL;
        v_brand_id integer := 0;
        v_division_id integer := 0;
        v_plant_id integer := 0;
        v_model_id integer := 0;
        v_acc_group integer := 0;
        v_accessory integer := 0;
        v_acc_grp integer := 0;
        v_acc integer := 0;
        v_station_id integer := 0;
        v_substation_id integer := 0;     
        v_image_id integer := 0;
        v_id integer := 0;  
        v_html clob;
      begin
      v_brand_id := v('P4_BRAND_ID');
      v_division_id :=v('P4_DIVISION_ID');
      v_plant_id := v('P4_PLANT_ID');
      v_model_id := v('P4_MODEL_ID');
      v_acc_group := v('P4_ACC_GROUP');
      v_accessory := v('P4_ACCESSORY');
      v_station_id := v('P4_STATION_ID');
      v_substation_id := v('P4_SUBSTATION_ID');
      v_image_id := v('P4_IMAGES_ID');
      v_wmax := v('P4_COLUMNS');
      v_hmax := v('P4_ROWS');
      v_wstart := v('P4_XSTART');
      v_hstart := v('P4_YSTART');
      v_wend := v('P4_XEND');
      v_hend := v('P4_YEND'); 
      v_whitespace := v('P4_WHITESPACE');
    if p_action = 'INSERT' then
    -- insert the row now, so that the cell table rows can be inserted with the correct FK 
    insert into IM_TEMPLATE_DRAFT
    (plant_id, brand_id, division_id, model_id, acc_group, accessory, station_id,
    substation_id, image_id)
    values
    (v_plant_id,v_brand_id,v_division_id,v_model_id,v_acc_group,v_accessory,v_station_id,v_substation_id,v_image_id);
    commit;
    end if;
    -- get the id of the row that was just inserted
    select header_id into v_id from  IM_TEMPLATE_DRAFT where
    plant_id=v_plant_id and brand_id=v_brand_id and division_id=v_division_id and
    model_id=v_model_id and acc_group=v_acc_group and accessory=v_accessory and
    station_id=v_station_id and substation_id=v_substation_id and image_id=v_image_id;
    -- remove all the cell rows for the draft, they will be created anew
    delete from qcis_draft_cells where draft_id = v_id;
      BEGIN
      select pixel_width, pixel_height into v_width, v_height from images
      where images_id = v_image_id;
      EXCEPTION
        WHEN NO_DATA_FOUND THEN
        v_height := 720;
        v_width := 520;
      END;
    -- the first part of the href for the image is stored in the keyword table and put into v_url_1 for use later
      BEGIN
      select keyword_value into v_url_1 from qcis_keywords
      where keyword_type = 'Control' and keyword_code = 'URL_PATH';
      EXCEPTION
        WHEN NO_DATA_FOUND THEN
        v_url_1 := 'http://xxx.xxx.com:8000/apex40/f?p=';
      END; 
    -- construct the first three lines of the div tag 
      v_html := '<div style="text-align:center; width:'||v_width||'px; margin-left:auto; margin-right:auto;">';
      v_html := v_html || chr(10) || '<img id="ImageMap" src="download_image?p_id='||v_image_id||'" usemap="#ImageMap" border="0" width="'||v_width||'" height="'||v_height||'" alt="" />';
      v_html := v_html || chr(10) || '<map id="_ImageMap" name="ImageMap">';
    -- subtract the ending inset amounts from the image dimensions
      v_width := v_width - v_wend;
      v_height := v_height - v_hend;
    -- calculate the increment for each cell and subtract the starting inset amounts
      v_winc := floor((v_width - v_wstart) / v_wmax);
      v_hinc := floor((v_height - v_hstart) / v_hmax);
    -- there are two main loops, one for the columns, one for the rows
    -- one loop is inside the other, which helps to build the cells in logical order and helps with the naming of the cells 
      loop
    -- if this is the first row (count = 0) and they have inset values we need to adust the first x y values to something other than zero 
    if ((v_wstart != 0) and (v_wcount = 0)) then v_w1 := v_wstart; end if;
    if ((v_hstart != 0) and (v_hcount = 0)) then v_h1 := v_hstart; end if;
    if ((v_wstart != 0) and (v_wcount = 0)) then v_w2 := v_wstart; end if;
    if ((v_hstart != 0) and (v_hcount = 0)) then v_h2 := v_hstart; end if;
    v_wcount := v_wcount + 1;
    v_w2 := v_w2 + v_winc;
    -- checking to see if this is the last row and whether they want the grid to go to the end or have all cells the same size which may leave whitespace
             if (v_wcount = v_wmax) and (v_whitespace = 'Y') then v_w2 := v_width - 2; end if;
      v_cell_row := 0;
      v_cell_col := v_cell_col +1;
             loop
             v_hcount := v_hcount + 1;           
             v_h2 := v_h2 + v_hinc;
    -- checking to see if this is the last row and whether they want the grid to go to the end or have all cells the same size which may leave whitespace
                    if (v_hcount = v_hmax) and (v_whitespace = 'Y') then v_h2 := v_height - 2; end if;
             v_cell_row := v_cell_row + 1;
             -- put it all together and construct the line for the area shape tag
             v_html := v_html || chr(10) || '<area shape="rect" coords="'
             ||v_w1||','||v_h1||','||v_w2||','||v_h2||
             '" href="'||v_url_1|| '" alt="'||v_cell_col||'-'||v_cell_row||'" title="'||v_cell_col||'-'||v_cell_row||'"    />';
             v_cell_title := v_cell_col||'-'||v_cell_row;
                insert into DRAFT_CELLS (DRAFT_ID, CELL_TITLE) values(v_id, v_cell_title);          
             v_h1 := v_h1 + v_hinc;
                exit when v_hcount = v_hmax;
            end loop;
      v_hcount := 0;
      v_h1 := 0;
      v_h2 := 0;
      v_w1 := v_w1 + v_winc;
         exit when v_wcount = v_wmax;     
      end loop;
      v_html := v_html || chr(10) || '</div>';
    update IM_TEMPLATE_DRAFT set imagemap_html = v_html
    where header_id = v_id;  
    END create_grid;Edited by: cloaked on Nov 7, 2011 4:45 AM

    For "Application Express 4.2.1.00.08" i created such good solution.
    I downloaded freeware plugin "Enkitec Clob Load Plug-in Version: 1.0.0 - APEX Version: 4.2.0" from there:
    http://www.enkitec.com/products/plugins/clob-load/help
    Then i followed plugin installation steps and created a APEX page where i added an item of type "Rich Text Editor".
    I found the plugin crashes when my database CLOB field is empty, also crashed when i tried to save down empty value to database.
    I changed Plugin code a little, and now everything works as needed, i can save down larga data, and also empty data.
    1. In Apex open plugin "Enkitec CLOB Load".
    2. Navigate to "Source-->PL/SQL Code" where is text area with plugin source code.
    3. there you have such code:
    FUNCTION enkitec_clob_load_render (
       p_dynamic_action IN APEX_PLUGIN.T_DYNAMIC_ACTION,
       p_plugin         IN APEX_PLUGIN.T_PLUGIN
       RETURN APEX_PLUGIN.T_DYNAMIC_ACTION_RENDER_RESULT
    IS
       l_retval           APEX_PLUGIN.T_DYNAMIC_ACTION_RENDER_RESULT;
       l_show_modal       VARCHAR2(1) := p_plugin.attribute_01;
       l_dialog_title     VARCHAR2(4000) := NVL(p_plugin.attribute_02, 'Please wait...');
       l_loading_img_type VARCHAR2(30) := p_plugin.attribute_03;
       l_loading_img_c    VARCHAR2(4000) := p_plugin.attribute_04;
       l_action           VARCHAR2(10) := NVL(p_dynamic_action.attribute_01, 'RENDER');
       l_change_only      VARCHAR2(1) := NVL(p_dynamic_action.attribute_06, 'Y');
       l_make_blocking    VARCHAR2(1) := NVL(p_dynamic_action.attribute_07, 'Y');
       l_loading_img_src  VARCHAR2(32767);
       l_crlf             VARCHAR2(2) := CHR(13)||CHR(10);
       l_js_function      VARCHAR2(32767);
       l_onload_code      VARCHAR2(32767);
    BEGIN
       IF apex_application.g_debug
       THEN
          apex_plugin_util.debug_dynamic_action(
             p_plugin         => p_plugin,
             p_dynamic_action => p_dynamic_action
       END IF;
       IF l_loading_img_type = 'DEFAULT'
       THEN
          l_loading_img_src := p_plugin.file_prefix || 'enkitec-loading.gif';
       ELSE
          l_loading_img_src := REPLACE(l_loading_img_c, '#IMAGE_PREFIX#', apex_application.g_image_prefix);
          l_loading_img_src := REPLACE(l_loading_img_src, '#PLUGIN_PREFIX#', p_plugin.file_prefix);
       END IF;
       apex_css.add(
          p_css => '.clob-load-dialog .ui-dialog-titlebar-close {display: none;}',
          p_key => 'clob-load-hide-modal-close'
       apex_javascript.add_library(
          p_name      => 'enkitec-clob-load.min',
          p_directory => p_plugin.file_prefix,
          p_version   => NULL
       l_onload_code :=
          'apex.jQuery(document).clob_load({'|| l_crlf ||
          '   showModal: "' || l_show_modal ||'",'|| l_crlf ||
          '   dialogTitle: "' || l_dialog_title ||'",'|| l_crlf ||
          '   loadingImageSrc: "' || l_loading_img_src ||'",'|| l_crlf ||
          '   pluginFilePrefix: "' || p_plugin.file_prefix || '",' || l_crlf ||
          '   apexImagePrefix: "' || apex_application.g_image_prefix || ',"' || l_crlf ||
       apex_javascript.add_onload_code(
          p_code => l_onload_code
       IF l_action = 'RENDER'
       THEN
          l_js_function :=
             'function(){'|| l_crlf ||
             '   apex.jQuery(document).clob_load("renderClob", {' || l_crlf ||
             '      $elmt: this.affectedElements.eq(0),' || l_crlf ||
             '      ajaxIdentifier: "' || apex_plugin.get_ajax_identifier() || '"' || l_crlf ||
             '   });'|| l_crlf ||
       ELSE
          l_js_function :=
             'function(){'|| l_crlf ||
             '   apex.jQuery(document).clob_load("submitClob", {' || l_crlf ||
             '      $elmt: this.affectedElements.eq(0),' || l_crlf ||
             '      ajaxIdentifier: "' || apex_plugin.get_ajax_identifier() || '",' || l_crlf ||
             '      changeOnly: "' || l_change_only || '",' || l_crlf ||
             '      makeBlocking: "' || l_make_blocking || '"' || l_crlf ||
             '   });'|| l_crlf ||
       END IF;
       l_retval.javascript_function := l_js_function;
       RETURN l_retval;
    END enkitec_clob_load_render;
    FUNCTION enkitec_clob_load_ajax (
       p_dynamic_action IN APEX_PLUGIN.T_DYNAMIC_ACTION,
       p_plugin         IN APEX_PLUGIN.T_PLUGIN
        RETURN APEX_PLUGIN.T_DYNAMIC_ACTION_AJAX_RESULT
    IS
       l_retval                   APEX_PLUGIN.T_DYNAMIC_ACTION_AJAX_RESULT;
       l_ajax_function            VARCHAR2(32767) := apex_application.g_x01;
       l_source                   VARCHAR2(20) := NVL(p_dynamic_action.attribute_02, 'COLLECTION');
       l_render_collection_name   VARCHAR2(255) := p_dynamic_action.attribute_03;
       l_query                    VARCHAR2(32767) := p_dynamic_action.attribute_04;
       l_submit_collection_name   VARCHAR2(255) := p_dynamic_action.attribute_05;
       l_column_value_list        APEX_PLUGIN_UTIL.T_COLUMN_VALUE_LIST2;    
       l_clob_text                CLOB := EMPTY_CLOB();
       l_token                    VARCHAR2(32000);
       l_chunk_size               NUMBER := 4000;
    BEGIN
       IF l_ajax_function = 'RENDER_CLOB'
       THEN
          IF l_source = 'COLLECTION'
          THEN
             IF apex_collection.collection_exists(l_render_collection_name)
             THEN
                SELECT clob001
                INTO l_clob_text
                FROM apex_collections
                WHERE collection_name = l_render_collection_name
                   AND seq_id = 1;
             END IF;
          ELSE --must be SQL_QUERY
             BEGIN
                l_column_value_list := apex_plugin_util.get_data2(
                   p_sql_statement  => l_query,
                   p_min_columns    => 1,
                   p_max_columns    => 1,
                   p_component_name => p_dynamic_action.action,
                   p_first_row      => 1,
                   p_max_rows       => 1
             EXCEPTION
                WHEN NO_DATA_FOUND
                THEN
                   NULL;
             END;
             IF l_column_value_list.exists(1)
                AND l_column_value_list(1).value_list.exists(1)
             THEN
                l_clob_text := l_column_value_list(1).value_list(1).clob_value;
             END IF;
          END IF;
          FOR i IN 0 .. FLOOR(LENGTH(l_clob_text)/l_chunk_size)
          LOOP 
             sys.htp.prn(substr(l_clob_text, i * l_chunk_size + 1, l_chunk_size)); 
          END LOOP;
       ELSE --must be SUBMIT_CLOB
          dbms_lob.createtemporary(l_clob_text, false, dbms_lob.session);
          FOR i IN 1..apex_application.g_f01.count
          LOOP
             l_token := wwv_flow.g_f01(i);
             dbms_lob.writeappend(l_clob_text, length(l_token), l_token);
          END LOOP;
          apex_collection.create_or_truncate_collection(
             p_collection_name => l_submit_collection_name
          apex_collection.add_member(
             p_collection_name => l_submit_collection_name,
             p_clob001         => l_clob_text
       END IF;
       RETURN l_retval;
    END enkitec_clob_load_ajax;4. Change this code to this code:
    FUNCTION enkitec_clob_load_render (
       p_dynamic_action IN APEX_PLUGIN.T_DYNAMIC_ACTION,
       p_plugin         IN APEX_PLUGIN.T_PLUGIN
       RETURN APEX_PLUGIN.T_DYNAMIC_ACTION_RENDER_RESULT
    IS
       l_retval           APEX_PLUGIN.T_DYNAMIC_ACTION_RENDER_RESULT;
       l_show_modal       VARCHAR2(1) := p_plugin.attribute_01;
       l_dialog_title     VARCHAR2(4000) := NVL(p_plugin.attribute_02, 'Please wait...');
       l_loading_img_type VARCHAR2(30) := p_plugin.attribute_03;
       l_loading_img_c    VARCHAR2(4000) := p_plugin.attribute_04;
       l_action           VARCHAR2(10) := NVL(p_dynamic_action.attribute_01, 'RENDER');
       l_change_only      VARCHAR2(1) := NVL(p_dynamic_action.attribute_06, 'Y');
       l_make_blocking    VARCHAR2(1) := NVL(p_dynamic_action.attribute_07, 'Y');
       l_loading_img_src  VARCHAR2(32767);
       l_crlf             VARCHAR2(2) := CHR(13)||CHR(10);
       l_js_function      VARCHAR2(32767);
       l_onload_code      VARCHAR2(32767);
    BEGIN
       IF apex_application.g_debug
       THEN
          apex_plugin_util.debug_dynamic_action(
             p_plugin         => p_plugin,
             p_dynamic_action => p_dynamic_action
       END IF;
       IF l_loading_img_type = 'DEFAULT'
       THEN
          l_loading_img_src := p_plugin.file_prefix || 'enkitec-loading.gif';
       ELSE
          l_loading_img_src := REPLACE(l_loading_img_c, '#IMAGE_PREFIX#', apex_application.g_image_prefix);
          l_loading_img_src := REPLACE(l_loading_img_src, '#PLUGIN_PREFIX#', p_plugin.file_prefix);
       END IF;
       apex_css.add(
          p_css => '.clob-load-dialog .ui-dialog-titlebar-close {display: none;}',
          p_key => 'clob-load-hide-modal-close'
       apex_javascript.add_library(
          p_name      => 'enkitec-clob-load.min',
          p_directory => p_plugin.file_prefix,
          p_version   => NULL
       l_onload_code :=
          'apex.jQuery(document).clob_load({'|| l_crlf ||
          '   showModal: "' || l_show_modal ||'",'|| l_crlf ||
          '   dialogTitle: "' || l_dialog_title ||'",'|| l_crlf ||
          '   loadingImageSrc: "' || l_loading_img_src ||'",'|| l_crlf ||
          '   pluginFilePrefix: "' || p_plugin.file_prefix || '",' || l_crlf ||
          '   apexImagePrefix: "' || apex_application.g_image_prefix || ',"' || l_crlf ||
       apex_javascript.add_onload_code(
          p_code => l_onload_code
       IF l_action = 'RENDER'
       THEN
          l_js_function :=
             'function(){'|| l_crlf ||
             '   apex.jQuery(document).clob_load("renderClob", {' || l_crlf ||
             '      $elmt: this.affectedElements.eq(0),' || l_crlf ||
             '      ajaxIdentifier: "' || apex_plugin.get_ajax_identifier() || '"' || l_crlf ||
             '   });'|| l_crlf ||
       ELSE
          l_js_function :=
             'function(){'|| l_crlf ||
             '   apex.jQuery(document).clob_load("submitClob", {' || l_crlf ||
             '      $elmt: this.affectedElements.eq(0),' || l_crlf ||
             '      ajaxIdentifier: "' || apex_plugin.get_ajax_identifier() || '",' || l_crlf ||
             '      changeOnly: "' || l_change_only || '",' || l_crlf ||
             '      makeBlocking: "' || l_make_blocking || '"' || l_crlf ||
             '   });'|| l_crlf ||
       END IF;
       l_retval.javascript_function := l_js_function;
       RETURN l_retval;
    END enkitec_clob_load_render;
    FUNCTION enkitec_clob_load_ajax (
       p_dynamic_action IN APEX_PLUGIN.T_DYNAMIC_ACTION,
       p_plugin         IN APEX_PLUGIN.T_PLUGIN
        RETURN APEX_PLUGIN.T_DYNAMIC_ACTION_AJAX_RESULT
    IS
       l_retval                   APEX_PLUGIN.T_DYNAMIC_ACTION_AJAX_RESULT;
       l_ajax_function            VARCHAR2(32767) := apex_application.g_x01;
       l_source                   VARCHAR2(20) := NVL(p_dynamic_action.attribute_02, 'COLLECTION');
       l_render_collection_name   VARCHAR2(255) := p_dynamic_action.attribute_03;
       l_query                    VARCHAR2(32767) := p_dynamic_action.attribute_04;
       l_submit_collection_name   VARCHAR2(255) := p_dynamic_action.attribute_05;
       l_column_value_list        APEX_PLUGIN_UTIL.T_COLUMN_VALUE_LIST2;    
       l_clob_text                CLOB := EMPTY_CLOB();
       l_token                    VARCHAR2(32000);
       l_chunk_size               NUMBER := 4000;
    BEGIN
       IF l_ajax_function = 'RENDER_CLOB'
       THEN
          IF l_source = 'COLLECTION'
          THEN
             IF apex_collection.collection_exists(l_render_collection_name)
             THEN
                SELECT clob001
                INTO l_clob_text
                FROM apex_collections
                WHERE collection_name = l_render_collection_name
                   AND seq_id = 1;
             END IF;
          ELSE --must be SQL_QUERY
             BEGIN
                l_column_value_list := apex_plugin_util.get_data2(
                   p_sql_statement  => l_query,
                   p_min_columns    => 1,
                   p_max_columns    => 1,
                   p_component_name => p_dynamic_action.action,
                   p_first_row      => 1,
                   p_max_rows       => 1
             EXCEPTION
                WHEN NO_DATA_FOUND
                THEN
                   NULL;
             END;
             IF l_column_value_list.exists(1)
                AND l_column_value_list(1).value_list.exists(1)
             THEN
                l_clob_text := l_column_value_list(1).value_list(1).clob_value;
             END IF;
          END IF;
          FOR i IN 0 .. FLOOR(NVL(LENGTH(l_clob_text)/l_chunk_size,0))
          LOOP 
             sys.htp.prn(substr(l_clob_text, i * l_chunk_size + 1, l_chunk_size)); 
          END LOOP;
       ELSE --must be SUBMIT_CLOB
          dbms_lob.createtemporary(l_clob_text, false, dbms_lob.session);
          FOR i IN 1..apex_application.g_f01.count
          LOOP
             l_token := wwv_flow.g_f01(i);
             if NVL(length(l_token),0) > 0 Then
                dbms_lob.writeappend(l_clob_text, length(l_token), l_token);
             end if;
          END LOOP;
          apex_collection.create_or_truncate_collection(
             p_collection_name => l_submit_collection_name
          apex_collection.add_member(
             p_collection_name => l_submit_collection_name,
             p_clob001         => l_clob_text
       END IF;
       RETURN l_retval;
    END enkitec_clob_load_ajax;5. As you see only 2 places of plugin had to be fixed, when you compare previous 2 steps:
    FOR i IN 0 .. FLOOR(LENGTH(l_clob_text)/l_chunk_size)
          LOOP 
             sys.htp.prn(substr(l_clob_text, i * l_chunk_size + 1, l_chunk_size)); 
          END LOOP;-->
    FOR i IN 0 .. FLOOR(NVL(LENGTH(l_clob_text)/l_chunk_size,0))
          LOOP 
             sys.htp.prn(substr(l_clob_text, i * l_chunk_size + 1, l_chunk_size)); 
          END LOOP;And
    FOR i IN 1..apex_application.g_f01.count
          LOOP
             l_token := wwv_flow.g_f01(i);
             dbms_lob.writeappend(l_clob_text, length(l_token), l_token);
          END LOOP;-->
    FOR i IN 1..apex_application.g_f01.count
          LOOP
             l_token := wwv_flow.g_f01(i);
             if NVL(length(l_token),0) > 0 Then
                dbms_lob.writeappend(l_clob_text, length(l_token), l_token);
             end if;
          END LOOP;This way seems to be best way to handle APEX CLOBS today, using that plugin, and a little fix.

  • Just 'upgraded' to Windows Phone 7, now my contacts can't synch from the PC, and Windows Live has a 500KB limit? Is there a way around this nightmare??

    For years I was happily plugging in my Palm Treo Pro, and having my contacts and calendar synch with my PC, WITHOUT the need for that information to be stored on the cloud, where anyone could get at it. When that died recently, I bought a used Windows 7
    phone.
    So far, it sucks. And it's not the phone that's the problem.
    My main issue is that I have diligently exported my (over 5000) contacts from Outlook as a CSV file, and went to import them into Windows Live, only to discover that there's a 500KB limit. That's somewhere around 500 contacts.
    ARE YOU SERIOUS?!? You really need me to set up 10 different files, to import stuff onto the cloud? 
    Please tell me there is a way around this limit, or (better yet) a way to synch directly with my PC, so I can avoid this whole Windows Live disaster?? I want to use Outlook. It's a Microsoft product! 
    Please help!
    Deb

    Hi,
    I'm not sure about the Microsoft Account Contact limit, for this issue, you may post the question to Microsoft Community:
    http://answers.microsoft.com/en-us/outlook_com
    If you still have the contacts in your Outlook Client, I suggest you setup the Microsoft Account(Windows Live) in Outlook via Exchange ActiveSync, then move the contacts to the contacts folder of the Microsoft Account, let it sync, then all will be done,
    you don't have to export and import the .csv file any more.
    How to configure Outlook to connect to an outlook.com email account
    http://support.microsoft.com/kb/2735989
    Regards,
    Melon Chen
    TechNet Community Support

  • Question Re: connecting 2960C switch to 3750 stack, max number of VLANS limit...

    Hypothetical question: Let's suppose for example I've got a 3750 switch stack in a data center with over 300 VLANs defined on the 3750 stack, and that stack is also my VTP domain server. I wish to connect a small compact 2960C switch (which has a max limit of 255 VLIDs) as a VTP client to the 3750 stack's VTP domain and have the port at each end of this uplink connection set up to be an 802.1q trunk, but limit the VLIDs trunked to the 2960 to just a small handful (let's say just 3 or 4 vlans) via for example something like "switchport trunk allowed vlan 1,2,11,18" on the uplink port of the 2960C switch. Will the mere fact that there are hundreds of  VLIDs present in the vlan configs on the 3750 stack confuse the little 2960C switch's max 255 vlans limits?  Or will the 2960C with its "Lan Base" software happily show all 300+ vlans present in the parent switch stack in a "show vlan" command but simply only let you activate up to the 255 limit locally on that switch?
    Normally I'd just use a 3560C switch with IP Base software for this purpose and not worry about any vlan max limit, but we're having to penny-pinch the project and save a few hundred dollars on this compact switch purchase and I've never used the 2960 family before. The small compact switch will be used to host a non-Cisco, 3rd party wireless LAN controller with several APs that will have a handful of different SSIDS, each on a separate vlan, and will not be located in the data center, but in another building connected by a fiberoptic link that will carry the "trunk".  
    EDIT: I found an old discussion thread where someone else was faced with a similar scenario, and he discovered that even with using "switchport trunk allowed..." and "switchport trunk pruning..." commands on the interfaces at both ends of the link, that  the 2960 switch would still fall out of VTP client mode into transparent mode, which make you lose the benefit of having centralized management of a VTP domain. Seems the VTP protocol will always publish the full list of vlans from the server and this blows the mind of the small switches which  drop into VTP transparent mode because they cannot handle all that many spanning tree sessions. Looks like the 2960 simply cannot be used in a high-vlan-density network if you wish to preserve central VTP domain management features. Rats.

    The house network machine can browse and playback/stream video fine, however at the same time the machine on the wireless shows significant slowdown when browsing the web.
    The issue is defiantly on the wireless side, If i plug a machine directly into the switch and assign it a static ip, i do not get slowdown, so this is happening before it reaches the poe switch.
    So many factors affect the way to stream data up and down wireless.  Sure, I have seen >40 clients on 802.11a AND 802.11b radio of a single 1140 AP.  But this is not good.  Why?  Because wireless is a very "noisy" environment.  When one talks, everyone else has to stop, listen and waits for their turn.  The > 80 wireless clients connected to the 1140 AP had a detected maximum speed of 11 Mbps and they couldn't get any higher than that.  They couldn't get any lower than 11 Mbps because I've disabled lower data rates.   
    You said you hard-code the channels to 1, 6 and 11 but what is the co-channel interferrence like in your wireless environment?  

  • Can you limit the list of AirPlay devices seen on the iPad if multiple devices exist?

    We are setting up a school to use iPads, Apple Tvs and Projectors in classrooms.
    - Teachers are using iPads in classrooms and we are setting up wireless projection using AirPlay.
    - Each classroom has an Airport Express with a unique WiFi name.
    - Each classroom has a projector with an Apple TV mounted on it and each Apple TV has a unique AirPlay name.
    - An iPad and the AppleTV are the only two devices on each classroom’s wifi.
    - When a teacher wants to mirror iPad to the projector, we thought they would just see their own AppleTv (projector) but, I think because the underlying school network is the same in each classroom, the teacher sees every device in the school.
    Question:  If you have multiple AirPlay devices on the same network, can you limit the list that one sees on an iPad?
    And/or: Is there a way to set up the wifi differently so the teacher is not presented with a huge list of devices?

    I wish teachers like you would leave technology you don't understand alone. The fact you were allowed to plug-in "consumer grade" access points into a enterprise network says a lot about your lack of knowledge; next you want to turn all of these low end access points into routers!? Your going configure a unique SSID on every AP setup each device to only connect to that network? Do you have any consent of wireless networks? Management?
    It's teachers like you that bring down a network. Then you insult the very IT staff that work in a very thankless position in which most of their interaction occurs when something doesn't work.

  • Authentication Plug-ins for active directory Multiple Domains(oidspad2.sh)

    hi ,
    i have use note 294791.1 from metalink to try link to active directory i have 2 one is staff and another is student
    i first ran oidspadi.sh to create plugin for staff it works then i edit the 2 script to oidspad2.pls and oidspad2.sh with the require changes inside the files then i ran it it work but now the problem is the first ad now cant work this is my changes below
    FOR oidspad2.pls
    Rem
    Rem $Header: oidspada.pls 02-aug-2004.04:45:11 saroy Exp $
    Rem
    Rem oidspads.pls
    Rem
    Rem Copyright (c) 2002, 2004, Oracle. All rights reserved.
    Rem
    Rem NAME
    Rem oidspada.pls - 9.0.4 OID Password Active Directory
    Rem External Authentication Plug-in
    Rem
    Rem
    Rem NOTES
    Rem <other useful comments, qualifications, etc.>
    Rem
    Rem MODIFIED (MM/DD/YY)
    Rem saroy 08/02/04 - Fix for bug 3807482
    Rem qdinh 01/27/04 - bug 3374115
    Rem dlin 01/08/04 - pingan perf
    Rem dlin 08/22/03 - 3111770 bug fix
    Rem dlin 08/27/03 - change the way to get name
    Rem dlin 08/13/03 - bug 2962082 fix
    Rem dlin 02/21/03 - plug-in install changes
    Rem dlin 02/13/03 - dlin_bug-2625027
    Rem dlin 02/05/03 - fix ssl & failover
    Rem dlin 01/31/03 - dlin_adextauth1
    Rem dlin 01/30/03 - Created
    Rem
    SET echo off;
    SET serveroutput off;
    SET feedback off;
    SET verify off;
    CREATE OR REPLACE PACKAGE OIDADPSW2 AS
    PROCEDURE when_bind_replace (ldapplugincontext IN ODS.plugincontext,
    result OUT INTEGER,
    dn IN VARCHAR2,
    passwd IN VARCHAR2,
    rc OUT INTEGER,
    errormsg OUT VARCHAR2
    PROCEDURE when_compare_replace (ldapplugincontext IN ODS.plugincontext,
    result OUT INTEGER,
    dn IN VARCHAR2,
    attrname IN VARCHAR2,
    attrval IN VARCHAR2,
    rc OUT INTEGER,
    errormsg OUT VARCHAR2
    AD_HANDLE DBMS_LDAP.session DEFAULT NULL;
    END OIDADPSW2;
    SHOW ERROR
    CREATE OR REPLACE PACKAGE BODY OIDADPSW2 AS
    SUBTYPE LDAP_SESSION IS RAW(32);
    SUBTYPE LDAP_MESSAGE IS RAW(32);
    SUBTYPE LDAP_BER_ELEMENT IS RAW(32);
    SUBTYPE ATTRLIST IS DBMS_LDAP.STRING_COLLECTION;
    SUBTYPE MOD_ARRAY IS RAW(32);
    SUBTYPE BERLIST IS DBMS_LDAP.BERVAL_COLLECTION;
    PROCEDURE when_bind_replace (ldapplugincontext IN ODS.plugincontext,
    result OUT INTEGER,
    dn IN VARCHAR2,
    passwd IN VARCHAR2,
    rc OUT INTEGER,
    errormsg OUT VARCHAR2
    IS
    retval pls_integer;
    lresult BOOLEAN;
    my_session DBMS_LDAP.session;
    my_session1 DBMS_LDAP.session;
    tmp_session DBMS_LDAP.session;
    adupname VARCHAR2(1024) DEFAULT NULL;
    BEGIN
    plg_debug( '=== Begin when_bind_replace()');
    DBMS_LDAP.USE_EXCEPTION := FALSE;
    result := 49;
    adupname := LDAP_PLUGIN.get_adupname(ldapplugincontext);
    IF (adupname IS NULL) THEN
    result := 1;
    plg_debug('Can not get ADUserPrincipalName');
    rc := DBMS_LDAP.SUCCESS;
    errormsg := 'Exception in when_bind_replace: Can not get ADUserPrincipalName';
    plg_debug( '=== End when_bind_replace() ===');
    RETURN;
    END IF;
    plg_debug( 'Go to AD for authentication');
    -- externally authenticate user
    IF ('&1' = 'n') THEN
         IF (OIDADPSW2.AD_HANDLE IS NULL) THEN
         my_session := DBMS_LDAP.init('&2', &3);
         OIDADPSW2.AD_HANDLE := my_session;
         ELSE
         my_session := OIDADPSW2.AD_HANDLE;
         END IF;
    plg_debug( 'ldap_session: ' || RAWTOHEX(SUBSTR(my_session,1,8)));
    retval := DBMS_LDAP.simple_bind_s(my_session, adupname, passwd);
    plg_debug( 'simple_bind_res: ' || TO_CHAR(retval));
    -- Retry logic should be invoked only
    -- when retval = LDAP_UNWILLING_TO_PERFORM || LDAP_UNAVAILABLE
    -- Should free the old session if retry logic kept failing
    -- to cause the number of outstanding sessions exceeding the
    -- limit session number
         IF (retval = 52 OR retval = 53 OR retval = 81) THEN
         retval := DBMS_LDAP.unbind_s(my_session);
         plg_debug( 'unbind_res returns ' || TO_CHAR(retval));
         my_session1 := DBMS_LDAP.init('&4', &5);
         plg_debug( 'ldap_session: ' || RAWTOHEX(SUBSTR(my_session1,1,8)));
         tmp_session := my_session1;
         retval := DBMS_LDAP.simple_bind_s(my_session1, adupname, passwd);
         plg_debug( 'simple_bind_res again: ' || TO_CHAR(retval));
         IF (retval != 52 AND retval != 53 AND retval != 81) THEN
         OIDADPSW2.AD_HANDLE := tmp_session;
         ELSE
         retval := DBMS_LDAP.unbind_s(tmp_session);
         plg_debug( 'unbind_res result ' || TO_CHAR(retval));
         END IF;
         END IF;
    ELSE
    -- SSL bind
         IF (OIDADPSW2.AD_HANDLE IS NULL) THEN
         my_session := DBMS_LDAP.init('&6', &7);
         plg_debug( 'ldap_session initialized: ' || RAWTOHEX(SUBSTR(my_session,1,8)));
         retval := DBMS_LDAP.open_ssl(my_session,
                             'file:' || '&8', '&9', 2);
         IF (retval != 0) THEN
         plg_debug( 'open_ssl failed error: ' || TO_CHAR(retval));
         retval := DBMS_LDAP.unbind_s(my_session);
         plg_debug( 'unbind_res returns ' || TO_CHAR(retval));
         result := 82;
         RETURN;
         END IF;
         plg_debug( 'open_ssl: ' || TO_CHAR(retval));
         OIDADPSW2.AD_HANDLE := my_session;
         ELSE
         my_session := OIDADPSW2.AD_HANDLE;
         END IF;
    retval := DBMS_LDAP.simple_bind_s(my_session, adupname, passwd);
    plg_debug( 'simple_bind_res: ' || TO_CHAR(retval));
    -- Retry logic should be invoked only
    -- when retval = LDAP_UNWILLING_TO_PERFORM
    -- or LDAP_UNAVAILABLE
         IF (retval = 52 OR retval = 53 OR retval = 81) THEN
         retval := DBMS_LDAP.unbind_s(my_session);
         plg_debug( 'unbind_res returns ' || TO_CHAR(retval));
         my_session1 := DBMS_LDAP.init('&10', &11);
         plg_debug( 'ldap_session: ' || RAWTOHEX(SUBSTR(my_session1,1,8)));
         tmp_session := my_session1;
         retval := DBMS_LDAP.open_ssl(my_session1,
                             'file:' || '&12', '&13', 2);
         IF (retval != 0) THEN
         plg_debug( 'retry open_ssl failed error: ' || TO_CHAR(retval));
         retval := DBMS_LDAP.unbind_s(my_session1);
         plg_debug( 'retry unbind_res returns ' || TO_CHAR(retval));
         result := 82;
         RETURN;
         END IF;
         plg_debug( 'retry open_ssl: ' || TO_CHAR(retval));
         retval := DBMS_LDAP.simple_bind_s(my_session1, adupname, passwd);
         plg_debug( 'simple_bind_res: again ' || TO_CHAR(retval));
         IF (retval != 52 AND retval != 53 AND retval != 81) THEN
         OIDADPSW2.AD_HANDLE := tmp_session;
         ELSE
         retval := DBMS_LDAP.unbind_s(tmp_session);
         plg_debug( 'unbind_res Returns ' || TO_CHAR(retval));
         END IF;
         END IF;
    END IF;
    -- for failover to connect to the secondary server
    IF ('&14' = 'y' AND retval != 0) THEN
    IF ('&15' = 'n') THEN
         IF (OIDADPSW2.AD_HANDLE IS NULL) THEN
         my_session := DBMS_LDAP.init('&16', &17);
         OIDADPSW2.AD_HANDLE := my_session;
         ELSE
         my_session := OIDADPSW2.AD_HANDLE;
         END IF;
    plg_debug( 'ldap_session initialized: ' || RAWTOHEX(SUBSTR(my_session,1,8)));
    retval := DBMS_LDAP.simple_bind_s(my_session, adupname, passwd);
    plg_debug( 'simple_bind_res: ' || TO_CHAR(retval));
         IF (retval = 52 OR retval = 53 OR retval = 81) THEN
         retval := DBMS_LDAP.unbind_s(my_session);
         plg_debug( 'unbind_res returns ' || TO_CHAR(retval));
         my_session1 := DBMS_LDAP.init('&18', &19);
         plg_debug( 'retry ldap_session: ' || RAWTOHEX(SUBSTR(my_session1,1,8)));
         tmp_session := my_session1;
         retval := DBMS_LDAP.simple_bind_s(my_session1, adupname, passwd);
         plg_debug( 'retry simple_bind_res again: ' || TO_CHAR(retval));
         IF (retval != 52 AND retval != 53 AND retval != 81) THEN
              OIDADPSW2.AD_HANDLE := tmp_session;
         ELSE
         retval := DBMS_LDAP.unbind_s(tmp_session);
              plg_debug( 'unbind_res Returns ' || TO_CHAR(retval));
         END IF;
         END IF;
    ELSE
         IF (OIDADPSW2.AD_HANDLE IS NULL) THEN
         my_session := DBMS_LDAP.init('&20', &21);
         plg_debug( 'ldap_session: ' || RAWTOHEX(SUBSTR(my_session,1,8)));
         retval := DBMS_LDAP.open_ssl(my_session,
                             'file:' || '&22', '&23', 2);
         IF (retval != 0) THEN
         plg_debug( 'open_ssl failed error: ' || TO_CHAR(retval));
         retval := DBMS_LDAP.unbind_s(my_session);
         plg_debug( 'unbind_res returns ' || TO_CHAR(retval));
         result := 82;
         RETURN;
         END IF;
         plg_debug( 'open_ssl: ' || TO_CHAR(retval));
         OIDADPSW2.AD_HANDLE := my_session;
         ELSE
         my_session := OIDADPSW2.AD_HANDLE;
         END IF;
    retval := DBMS_LDAP.simple_bind_s(my_session, adupname, passwd);
    plg_debug( 'simple_bind_res: ' || TO_CHAR(retval));
    -- Retry logic should be invoked only
    -- when retval = LDAP_UNWILLING_TO_PERFORM || LDAP_UNAVAILABLE
         IF (retval = 52 OR retval = 53 OR retval = 81) THEN
         retval := DBMS_LDAP.unbind_s(my_session);
         plg_debug( 'unbind_res returns ' || TO_CHAR(retval));
         my_session1 := DBMS_LDAP.init('&24', &25);
         plg_debug( 'retry ldap_session: ' || RAWTOHEX(SUBSTR(my_session1,1,8)));
         tmp_session := my_session1;
         retval := DBMS_LDAP.open_ssl(my_session1,
                             'file:' || '&26', '&27', 2);
         IF (retval != 0) THEN
         plg_debug( 'retry open_ssl failed error: ' || TO_CHAR(retval));
         retval := DBMS_LDAP.unbind_s(my_session);
         plg_debug( 'retry unbind_res returns ' || TO_CHAR(retval));
         result := 82;
         RETURN;
         END IF;
         plg_debug( 'retry open_ssl: ' || TO_CHAR(retval));
         retval := DBMS_LDAP.simple_bind_s(my_session1, adupname, passwd);
         plg_debug( 'simple_bind_res: again ' || TO_CHAR(retval));
         IF (retval != 52 AND retval != 53 AND retval != 81) THEN
              OIDADPSW2.AD_HANDLE := tmp_session;
         ELSE
         retval := DBMS_LDAP.unbind_s(tmp_session);
         plg_debug( 'unbind_res result ' || TO_CHAR(retval));
         END IF;
         END IF;
         END IF;
    END IF;
    IF (retval = 0) THEN
    result := 0;
    plg_debug('AD auth return TRUE');
    ELSE
         result := retval;
    plg_debug('AD auth return FALSE or ERROR');
    END IF;
    -- retval := DBMS_LDAP.unbind_s(my_session);
    -- plg_debug( 'unbind_res Returns ' || TO_CHAR(retval));
    rc := DBMS_LDAP.SUCCESS;
    errormsg := 'No error msg.';
    plg_debug( '=== End when_bind_replace() ===');
    EXCEPTION
    WHEN OTHERS THEN
    rc := DBMS_LDAP.OPERATIONS_ERROR;
         retval := DBMS_LDAP.unbind_s(OIDADPSW2.AD_HANDLE);
         OIDADPSW2.AD_HANDLE := NULL;
         plg_debug( ' exception unbind_res returns ' || TO_CHAR(retval));
    errormsg := 'Exception: when_bind_replace plugin';
    plg_debug( 'Exception in when_bind_replace(). Error code is ' ||
              TO_CHAR(sqlcode));
    plg_debug( ' ' || Sqlerrm);
    END;
    PROCEDURE when_compare_replace (ldapplugincontext IN ODS.plugincontext,
    result OUT INTEGER,
    dn IN VARCHAR2,
    attrname IN VARCHAR2,
    attrval IN VARCHAR2,
    rc OUT INTEGER,
    errormsg OUT VARCHAR2
    IS
    retval pls_integer;
    lresult BOOLEAN;
    my_session DBMS_LDAP.session;
    my_session1 DBMS_LDAP.session;
    tmp_session DBMS_LDAP.session;
    adupname VARCHAR2(1024) DEFAULT NULL;
    BEGIN
    plg_debug( '=== Begin when_compare_replace()');
    result := DBMS_LDAP.COMPARE_FALSE;
    DBMS_LDAP.USE_EXCEPTION := FALSE;
    adupname := LDAP_PLUGIN.get_adupname(ldapplugincontext);
    IF (adupname IS NULL) THEN
    result := DBMS_LDAP.COMPARE_FALSE;
    plg_debug('Can not get ADuserPrincipalName');
    rc := DBMS_LDAP.SUCCESS;
    errormsg := 'Exception in when_compare_replace: Can not get ADUserPrincipalName';
    plg_debug( '=== End when_compare_replace() ===');
    RETURN;
    END IF;
    -- externally authenticate user
    IF ('&28' = 'n') THEN
         IF (OIDADPSW2.AD_HANDLE IS NULL) THEN
         my_session := DBMS_LDAP.init('&29', &30);
         OIDADPSW2.AD_HANDLE := my_session;
         ELSE
         my_session := OIDADPSW2.AD_HANDLE;
         END IF;
    plg_debug( 'ldap_session: ' || RAWTOHEX(SUBSTR(my_session,1,8)));
    retval := DBMS_LDAP.simple_bind_s(my_session, adupname, attrval);
    plg_debug( 'simple_bind_res: ' || TO_CHAR(retval));
    -- Retry logic should be invoked only
    -- when retval = LDAP_UNWILLING_TO_PERFORM || LDAP_UNAVAILABLE
    IF (retval = 52 OR retval = 53 OR retval = 81) THEN
         retval := DBMS_LDAP.unbind_s(my_session);
    plg_debug( 'retry unbind_res returns ' || TO_CHAR(retval));
         my_session1 := DBMS_LDAP.init('&31', &32);
         plg_debug( 'ldap_session: ' || RAWTOHEX(SUBSTR(my_session1,1,8)));
         tmp_session := my_session1;
         retval := DBMS_LDAP.simple_bind_s(my_session1, adupname, attrval);
         plg_debug( 'simple_bind_res again: ' || TO_CHAR(retval));
         IF (retval != 52 AND retval != 53 AND retval != 81) THEN
         OIDADPSW2.AD_HANDLE := tmp_session;
    ELSE
         retval := DBMS_LDAP.unbind_s(tmp_session);
         plg_debug( 'unbind_res result ' || TO_CHAR(retval));
         END IF;
         END IF;
    ELSE
         IF (OIDADPSW2.AD_HANDLE IS NULL) THEN
         my_session := DBMS_LDAP.init('&33', &34);
         plg_debug( 'ldap_session: ' || RAWTOHEX(SUBSTR(my_session,1,8)));
         retval := DBMS_LDAP.open_ssl(my_session,
                             'file:' || '&35', '&36', 2);
         IF (retval != 0) THEN
         plg_debug( 'open_ssl failed error: ' || TO_CHAR(retval));
         retval := DBMS_LDAP.unbind_s(my_session);
         plg_debug( 'unbind_res returns ' || TO_CHAR(retval));
         result := 82;
         RETURN;
         END IF;
         plg_debug( 'open_ssl: ' || TO_CHAR(retval));
         OIDADPSW2.AD_HANDLE := my_session;
         ELSE
         my_session := OIDADPSW2.AD_HANDLE;
         END IF;
    retval := DBMS_LDAP.simple_bind_s(my_session, adupname, attrval);
    plg_debug( 'simple_bind_res: ' || TO_CHAR(retval));
    -- Retry logic should be invoked only
    -- when retval = LDAP_UNWILLING_TO_PERFORM || LDAP_UNAVAILABLE
    IF (retval = 52 OR retval = 53 OR retval = 81) THEN
         retval := DBMS_LDAP.unbind_s(my_session);
    plg_debug( 'retry unbind_res returns ' || TO_CHAR(retval));
         my_session1 := DBMS_LDAP.init('&37', &38);
         plg_debug( 'ldap_session: ' || RAWTOHEX(SUBSTR(my_session1,1,8)));
         tmp_session := my_session1;
         retval := DBMS_LDAP.open_ssl(my_session1,
                             'file:' || '&39', '&40', 2);
    IF (retval != 0) THEN
         plg_debug( 'open_ssl failed error: ' || TO_CHAR(retval));
         retval := DBMS_LDAP.unbind_s(my_session);
         plg_debug( 'unbind_res returns ' || TO_CHAR(retval));
         result := 82;
         RETURN;
         END IF;
         plg_debug( 'open_ssl: ' || TO_CHAR(retval));
         retval := DBMS_LDAP.simple_bind_s(my_session1, adupname, attrval);
         plg_debug( 'simple_bind_res: again ' || TO_CHAR(retval));
         IF (retval != 52 AND retval != 53 AND retval != 81) THEN
         OIDADPSW2.AD_HANDLE := tmp_session;
    ELSE
         retval := DBMS_LDAP.unbind_s(tmp_session);
         plg_debug( 'unbind_res result ' || TO_CHAR(retval));
         END IF;
         END IF;
    END IF;
    -- for failover to connect to the secondary AD
    IF ('&41' = 'y' AND retval != 0) THEN
    IF ('&42' = 'n') THEN
         IF (OIDADPSW2.AD_HANDLE IS NULL) THEN
         my_session := DBMS_LDAP.init('&43', &44);
         OIDADPSW2.AD_HANDLE := my_session;
         ELSE
         my_session := OIDADPSW2.AD_HANDLE;
         END IF;
    plg_debug( 'ldap_session: ' || RAWTOHEX(SUBSTR(my_session,1,8)));
    retval := DBMS_LDAP.simple_bind_s(my_session, adupname, attrval);
    plg_debug( 'simple_bind_res: ' || TO_CHAR(retval));
    -- Retry logic should be invoked only
    -- when retval = LDAP_UNWILLING_TO_PERFORM || LDAP_UNAVAILABLE
         IF (retval = 52 OR retval = 53 OR retval = 81) THEN
         retval := DBMS_LDAP.unbind_s(my_session);
    plg_debug( 'retry unbind_res returns ' || TO_CHAR(retval));
         my_session1 := DBMS_LDAP.init('&45', &46);
         plg_debug( 'ldap_session: ' || RAWTOHEX(SUBSTR(my_session1,1,8)));
         tmp_session := my_session1;
         retval := DBMS_LDAP.simple_bind_s(my_session1, adupname, attrval);
         plg_debug( 'simple_bind_res again: ' || TO_CHAR(retval));
         IF (retval != 52 AND retval != 53 AND retval != 81) THEN
              OIDADPSW2.AD_HANDLE := tmp_session;
    ELSE
         retval := DBMS_LDAP.unbind_s(tmp_session);
         plg_debug( 'unbind_res result ' || TO_CHAR(retval));
         END IF;
         END IF;
         ELSE
         IF (OIDADPSW2.AD_HANDLE IS NULL) THEN
         my_session := DBMS_LDAP.init('&47', &48);
         plg_debug( 'ldap_session: ' || RAWTOHEX(SUBSTR(my_session,1,8)));
         retval := DBMS_LDAP.open_ssl(my_session,
                             'file:' || '&49', '&50', 2);
         IF (retval != 0) THEN
         plg_debug( 'open_ssl failed error: ' || TO_CHAR(retval));
         retval := DBMS_LDAP.unbind_s(my_session);
         plg_debug( 'unbind_res returns ' || TO_CHAR(retval));
         result := 82;
         RETURN;
         END IF;
         plg_debug( 'open_ssl: ' || TO_CHAR(retval));
         OIDADPSW2.AD_HANDLE := my_session;
         ELSE
         my_session := OIDADPSW2.AD_HANDLE;
         END IF;
    retval := DBMS_LDAP.simple_bind_s(my_session, adupname, attrval);
    plg_debug( 'simple_bind_res: ' || TO_CHAR(retval));
    -- Retry logic should be invoked only
    -- when retval = LDAP_UNWILLING_TO_PERFORM || LDAP_UNAVAILABLE
         IF (retval = 52 OR retval = 53 OR retval = 81) THEN
         retval := DBMS_LDAP.unbind_s(my_session);
    plg_debug( 'retry unbind_res returns ' || TO_CHAR(retval));
         my_session1 := DBMS_LDAP.init('&51', &52);
         plg_debug( 'ldap_session: ' || RAWTOHEX(SUBSTR(my_session1,1,8)));
         tmp_session := my_session1;
         retval := DBMS_LDAP.open_ssl(my_session1,
                             'file:' || '&53', '&54', 2);
         IF (retval != 0) THEN
         plg_debug( 'open_ssl failed error: ' || TO_CHAR(retval));
         retval := DBMS_LDAP.unbind_s(my_session1);
         plg_debug( 'unbind_res returns ' || TO_CHAR(retval));
         result := 82;
         RETURN;
         END IF;
         plg_debug( 'open_ssl: ' || TO_CHAR(retval));
         retval := DBMS_LDAP.simple_bind_s(my_session1, adupname, attrval);
         plg_debug( 'simple_bind_res: again ' || TO_CHAR(retval));
         IF (retval != 52 AND retval != 53 AND retval != 81) THEN
              OIDADPSW2.AD_HANDLE := tmp_session;
         ELSE
         retval := DBMS_LDAP.unbind_s(tmp_session);
         plg_debug( 'unbind_res result ' || TO_CHAR(retval));
         END IF;
         END IF;
         END IF;
    END IF;
    IF (retval = 0) THEN
    result := DBMS_LDAP.COMPARE_TRUE;
    plg_debug('AD auth return TRUE');
    ELSE
    result := DBMS_LDAP.COMPARE_FALSE;
    plg_debug('AD auth return FALSE or ERROR');
    END IF;
    -- retval := DBMS_LDAP.unbind_s(my_session);
    -- plg_debug( 'unbind_res Returns ' || TO_CHAR(retval));
    rc := DBMS_LDAP.SUCCESS;
    errormsg := 'No error msg.';
    plg_debug( '=== End when_compare_replace() ===');
    EXCEPTION
    WHEN OTHERS THEN
    rc := DBMS_LDAP.OPERATIONS_ERROR;
    errormsg := 'Exception: when_compare_replace plugin';
    plg_debug( 'Exception in when_compare_replace(). Error code is ' ||
              TO_CHAR(sqlcode));
    plg_debug( ' ' || Sqlerrm);
         retval := DBMS_LDAP.unbind_s(OIDADPSW2.AD_HANDLE);
         OIDADPSW2.AD_HANDLE := NULL;
    END;
    END OIDADPSW2;
    SHOW ERRORS
    EXIT;
    -- usessl, adhost, adport, adhost, adsslport, walletloc, walletpwd
    -- isfailover, isfailoverssl, sechost, secport, sechost, secsslport
    -- secwalletloc, secwalletpwd
    -- usessl, adhost, adport, adhost, adsslport, walletloc, walletpwd
    -- isfailover, isfailoverssl, sechost, secport, sechost, secsslport
    -- secwalletloc, secwalletpwd
    FOR oidspadi.sh
    #!/bin/sh
    # $Header: oidspadi.sh 13-may-2005.13:48:51 saroy Exp $
    # oidspadi.sh
    # Copyright (c) 2002, 2005, Oracle. All rights reserved.
    # NAME
    # oidspadi.sh - AD external authentication plug-in install
    # DESCRIPTION
    # <short description of component this file declares/defines>
    # NOTES
    # <other useful comments, qualifications, etc.>
    # MODIFIED (MM/DD/YY)
    # saroy 05/13/05 - Fix for bug 4233817
    # saroy 02/18/05 - Fix for bug 4054414
    # saroy 11/02/04 - Fix for bug 3980370
    # qdinh 01/19/04 - bug 3374115
    # dlin 07/10/03 - turn off debug
    # dlin 02/21/03 - plug-in install changes
    # dlin 02/13/03 - dlin_bug-2625027
    # dlin 07/22/02 - Creation
    ADHOST="A"
    ADPORT="1"
    ADSSLPORT="1"
    WALLETLOC="A"
    WALLETPWD="A"
    WALLETPWD2="A"
    CONNECT="A"
    ODSPWD="A"
    ODSPWD2="A"
    OIDHOST="A"
    OIDPORT="1"
    ORCLADMINPWD="A"
    ORCLADMINPWD2="A"
    PRGDN="A"
    SCUSB="A"
    EP="A"
    ISSSL="n"
    ISFAILOVER="n"
    ISFAILOVERSSL="n"
    SECADHOST="A"
    SECADPORT="1"
    SECADSSLPORT="1"
    SECWALLETLOC="A"
    SECWALLETPWD="A"
    SECWALLETPWD2="A"
    clear
    echo "---------------------------------------------"
    echo " OID Active Directory Plug-in Configuration"
    echo "---------------------------------------------"
    echo " "
    echo "Please make sure Database and OID are up and running."
    echo " "
    LDAP_DIR=${ORACLE_HOME}/ldap
    LDAP_LOG=${LDAP_DIR}/log
    ## ORACLE_HOME
    if [ -z $ORACLE_HOME ] ; then
    echo " ORACLE_HOME must be set for this installation script"
    exit 0
    fi
    # gather required information
    if [ ${ADHOST} = "A" ] ; then
    printf "Please enter Active Directory host name: "
    read ADHOST
    fi
    ## active directory host name is required
    if [ "${ADHOST}" = "" ]
    then
    echo "Active Directory host name is required";
    exit 1;
    fi
    printf "Do you want to use SSL to connect to Active Directory? (y/n) "
    read ISSSL
    if [ "${ISSSL}" = "n" ]
    then
    if [ ${ADPORT} = "1" ] ; then
    printf "Please enter Active Directory port number [389]: "
    read ADPORT
    if [ "${ADPORT}" = "" ]
    then
    ADPORT="389"
    fi
    fi
    fi
    if [ "${ISSSL}" = "y" ]
    then
    if [ ${ADSSLPORT} = "1" ] ; then
    printf "Please enter Active Directory SSL port number [636]: "
    read ADSSLPORT
    if [ "${ADSSLPORT}" = "" ]
    then
    ADSSLPORT="636"
    fi
    fi
    if [ ${WALLETLOC} = "A" ] ; then
    echo " "
    printf "Please enter Oracle wallet location: "
    read WALLETLOC
    fi
    ## wallet location is required
    if [ "${WALLETLOC}" = "" ]
    then
    echo "Oracle wallet location is required";
    exit 1;
    fi
    if [ ${WALLETPWD} = "A" ] ; then
    printf "Please enter Oracle wallet password: "
    stty -echo ; read WALLETPWD ; stty echo ; echo
    fi
    if [ "${WALLETPWD}" = "" ]
    then
    echo "Oracle wallet password is required";
    exit 1;
    fi
    if [ ${WALLETPWD2} = "A" ] ; then
    printf "Please enter confirmed Oracle wallet password: "
    stty -echo ; read WALLETPWD2 ; stty echo ; echo
    fi
    if [ "${WALLETPWD}" != "${WALLETPWD2}" ]
    then
    echo "The input passwords are not matched";
    exit 1;
    fi
    fi
    if [ ${CONNECT} = "A" ] ; then
    echo " "
    printf "Please enter DB connect string: "
    read CONNECT
    fi
    if [ ${ODSPWD} = "A" ] ; then
    printf "Please enter ODS password: "
    stty -echo ; read ODSPWD ; stty echo ; echo
    fi
    ## password is required
    if [ "${ODSPWD}" = "" ]
    then
    echo "ODS password is required";
    exit 1;
    fi
    if [ ${ODSPWD2} = "A" ] ; then
    printf "Please enter confirmed ODS password: "
    stty -echo ; read ODSPWD2 ; stty echo ; echo
    fi
    if [ "${ODSPWD}" != "${ODSPWD2}" ]
    then
    echo "The input passwords are not matched";
    exit 1;
    fi
    if [ "${CONNECT}" = "" ]
    then
    CMDNAME="$ORACLE_HOME/bin/sqlplus -s ods/${ODSPWD} "
    else
    CMDNAME="$ORACLE_HOME/bin/sqlplus -s ods/${ODSPWD}@${CONNECT} "
    fi
    # Check if ODS password and connect string is correct
    ${ORACLE_HOME}/bin/sqlplus -L ods/${ODSPWD}@${CONNECT} << END 1>/dev/null 2>/dev/null
    exit;
    END
    if [ $? -ne 0 ]; then
    echo "Incorrect connect string or ODS password specified"
    exit 1;
    fi
    if [ ${OIDHOST} = "A" ] ; then
    echo " "
    printf "Please enter OID host name: "
    read OIDHOST
    fi
    ## oid host is required
    if [ "${OIDHOST}" = "" ]
    then
    echo "OID host name is required";
    exit 1;
    fi
    if [ ${OIDPORT} = "1" ] ; then
    printf "Please enter OID port number [389]: "
    read OIDPORT
    if [ "${OIDPORT}" = "" ]
    then
    OIDPORT="389"
    fi
    fi
    # Check if OID host and port is correct
    ${ORACLE_HOME}/bin/ldapbind -h ${OIDHOST} -p ${OIDPORT} 1>/dev/null 2>/dev/null
    if [ $? -ne 0 ]; then
    echo "Incorrect OID host or port specified"
    exit 1;
    fi
    if [ ${ORCLADMINPWD} = "A" ] ; then
    printf "Please enter orcladmin password: "
    stty -echo ; read ORCLADMINPWD ; stty echo ; echo
    fi
    if [ "${ORCLADMINPWD}" = "" ]
    then
    echo "orcladmin password is required";
    exit 1;
    fi
    if [ ${ORCLADMINPWD2} = "A" ] ; then
    printf "Please enter confirmed orcladmin password: "
    stty -echo ; read ORCLADMINPWD2 ; stty echo ; echo
    fi
    if [ "${ORCLADMINPWD}" != "${ORCLADMINPWD2}" ]
    then
    echo "The input passwords are not matched";
    exit 1;
    fi
    # Check if orcladmin password is correct
    ${ORACLE_HOME}/bin/ldapbind -h ${OIDHOST} -p ${OIDPORT} -D 'cn=orcladmin' -w ${ORCLADMINPWD} 1>/dev/null 2>/dev/null
    if [ $? -ne 0 ]; then
    echo "Incorrect orcladmin password specified"
    exit 1;
    fi
    echo " "
    if [ ${SCUSB} = "A" ] ; then
    printf "Please enter the subscriber common user search base [orclcommonusersearchbase]: "
    read SCUSB
    if [ "${SCUSB}" = "" ]
    then
    SCUSB=`${ORACLE_HOME}/bin/ldapsearch -h ${OIDHOST} -p ${OIDPORT} -D 'cn=orcladmin' -w ${ORCLADMINPWD} -s base -b 'cn=common,cn=products,cn=oraclecontext' -L 'objectclass=*' orclcommonusersearchbase | head -2 | grep -v 'dn:' | awk '{printf $2}'`
    fi
    fi
    if [ ${PRGDN} = "A" ] ; then
    printf "Please enter the Plug-in Request Group DN: "
    read PRGDN
    fi
    if [ ${EP} = "A" ] ; then
    printf "Please enter the exception entry property [(!(objectclass=orcladuser))]: "
    read EP
    if [ "${EP}" = "" ]
    then
    EP='(!(objectclass=orcladuser))'
    fi
    fi
    echo " "
    printf "Do you want to setup the backup Active Directory for failover? (y/n) "
    read ISFAILOVER
    if [ "${ISFAILOVER}" = "y" ]
    then
    if [ ${SECADHOST} = "A" ] ; then
    printf "Please enter the backup Active Directory host name: "
    read SECADHOST
    if [ "${SECADHOST}" = "" ]
    then
    echo "Backup Active Directory host name is required";
    exit 1;
    fi
    fi
    printf "Do you want to use SSL to connect to the backup Active Directory? (y/n) "
    read ISFAILOVERSSL
    if [ "${ISFAILOVERSSL}" = "n" ]
    then
    if [ ${SECADPORT} = "1" ] ; then
    printf "Please enter the backup Active Directory port number [389]: "
    read SECADPORT
    if [ "${SECADPORT}" = "" ]
    then
    SECADPORT="389"
    fi
    fi
    fi
    if [ "${ISFAILOVERSSL}" = "y" ]
    then
    if [ ${SECADSSLPORT} = "1" ] ; then
    printf "Please enter the backup Active Directory SSL port number [636]: "
    read SECADSSLPORT
    if [ "${SECADSSLPORT}" = "" ]
    then
    SECADSSLPORT="636"
    fi
    fi
    if [ ${SECWALLETLOC} = "A" ] ; then
    echo " "
    printf "Please enter Oracle wallet location: "
    read SECWALLETLOC
    fi
    ## wallet location is required
    if [ "${SECWALLETLOC}" = "" ]
    then
    echo "Oracle wallet location is required";
    exit 1;
    fi
    if [ ${SECWALLETPWD} = "A" ] ; then
    printf "Please enter Oracle wallet password: "
    stty -echo ; read SECWALLETPWD ; stty echo ; echo
    fi
    if [ "${SECWALLETPWD}" = "" ]
    then
    echo "Oracle wallet password is required";
    exit 1;
    fi
    if [ ${SECWALLETPWD2} = "A" ] ; then
    printf "Please enter confirmed Oracle wallet password: "
    stty -echo ; read SECWALLETPWD2 ; stty echo ; echo
    fi
         if [ "${SECWALLETPWD}" != "${SECWALLETPWD2}" ]
         then
         echo "The input passwords are not matched";
         exit 1;
         fi
    fi
    fi
    # install the plug-in PL/SQL packages
    echo " "
    echo "Installing Plug-in Packages ..."
    echo " "
    # install plug-in debug tool
    cp $ORACLE_HOME/ldap/admin/oidspdsu.pls $LDAP_LOG
    chmod +w $LDAP_LOG/oidspdsu.pls
    echo "EXIT;" >> $LDAP_LOG/oidspdsu.pls
    ${CMDNAME} @$LDAP_LOG/oidspdsu.pls
    rm $LDAP_LOG/oidspdsu.pls
    ${CMDNAME} @$ORACLE_HOME/ldap/admin/oidspdof.pls
    # install plug-in packages
    ${CMDNAME} @$ORACLE_HOME/ldap/admin/oidspad2.pls ${ISSSL} ${ADHOST} ${ADPORT} ${ADHOST} ${ADPORT} ${ADHOST} ${ADSSLPORT} ${WALLETLOC} ${WALLETPWD} ${ADHOST} ${ADSSLPORT} ${WALLETLOC} ${WALLETPWD} ${ISFAILOVER} ${ISFAILOVERSSL} ${SECADHOST} ${SECADPORT} ${SECADHOST} ${SECADPORT} ${SECADHOST} ${SECADSSLPORT} ${SECWALLETLOC} ${SECWALLETPWD} ${SECADHOST} ${SECADSSLPORT} ${SECWALLETLOC} ${SECWALLETPWD} ${ISSSL} ${ADHOST} ${ADPORT} ${ADHOST} ${ADPORT} ${ADHOST} ${ADSSLPORT} ${WALLETLOC} ${WALLETPWD} ${ADHOST} ${ADSSLPORT} ${WALLETLOC} ${WALLETPWD} ${ISFAILOVER} ${ISFAILOVERSSL} ${SECADHOST} ${SECADPORT} ${SECADHOST} ${SECADPORT} ${SECADHOST} ${SECADSSLPORT} ${SECWALLETLOC} ${SECWALLETPWD} ${SECADHOST} ${SECADSSLPORT} ${SECWALLETLOC} ${SECWALLETPWD} 2>&1 ; stty echo ; echo
    #stty -echo; eval ${CMDNAME} @$ORACLE_HOME/ldap/admin/oidspad2.pls ${ISSSL} ${ADHOST} ${ADPORT} ${ADHOST} ${ADPORT} ${ADHOST} ${ADSSLPORT} ${WALLETLOC} ${WALLETPWD} ${ADHOST} ${ADSSLPORT} ${WALLETLOC} ${WALLETPWD} ${ISFAILOVER} ${ISFAILOVERSSL} ${SECADHOST} ${SECADPORT} ${SECADHOST} ${SECADPORT} ${SECADHOST} ${SECADSSLPORT} ${SECWALLETLOC} ${SECWALLETPWD} ${SECADHOST} ${SECADSSLPORT} ${SECWALLETLOC} ${SECWALLETPWD} ${ISSSL} ${ADHOST} ${ADPORT} ${ADHOST} ${ADPORT} ${ADHOST} ${ADSSLPORT} ${WALLETLOC} ${WALLETPWD} ${ADHOST} ${ADSSLPORT} ${WALLETLOC} ${WALLETPWD} ${ISFAILOVER} ${ISFAILOVERSSL} ${SECADHOST} ${SECADPORT} ${SECADHOST} ${SECADPORT} ${SECADHOST} ${SECADSSLPORT} ${SECWALLETLOC} ${SECWALLETPWD} ${SECADHOST} ${SECADSSLPORT} ${SECWALLETLOC} ${SECWALLETPWD} 2>&1 ; stty echo ; echo
    # usessl, adhost, adport, adhost, adsslport, walletloc, walletpwd
    # isfailover, isfailoverssl, sechost, secport, sechost, secsslport
    # secwalletloc, secwalletpwd
    # usessl, adhost, adport, adhost, adsslport, walletloc, walletpwd
    # isfailover, isfailoverssl, sechost, secport, sechost, secsslport
    # secwalletloc, secwalletpwd
    # register the plug-ins
    echo " "
    echo "Registering Plug-ins ..."
    echo " "
    $ORACLE_HOME/bin/ldapadd -h ${OIDHOST} -p ${OIDPORT} -D cn=orcladmin -w ${ORCLADMINPWD} << EOF
    dn: cn=adwhencompare2,cn=plugin,cn=subconfigsubentry
    objectclass:orclPluginConfig
    objectclass:top
    orclpluginname:OIDADPSW2
    orclplugintype:operational
    orclplugintiming:when
    orclpluginldapoperation:ldapcompare
    orclpluginenable:1
    orclpluginversion:1.0.1
    orclPluginIsReplace:1
    cn:adwhencompare2
    orclpluginsubscriberdnlist:${SCUSB}
    orclpluginattributelist:userpassword
    orclpluginrequestgroup:${PRGDN}
    orclpluginentryproperties:${EP}
    dn: cn=adwhenbind2,cn=plugin,cn=subconfigsubentry
    objectclass:orclPluginConfig
    objectclass:top
    orclpluginname:OIDADPSW2
    orclplugintype:operational
    orclplugintiming:when
    orclpluginldapoperation:ldapbind
    orclpluginenable:1
    orclpluginversion:1.0.1
    orclPluginIsReplace:1
    cn:adwhenbind2
    orclpluginsubscriberdnlist:${SCUSB}
    orclpluginrequestgroup:${PRGDN}
    orclpluginentryproperties:${EP}
    EOF
    cat <<DONE
    Done.
    DONE

    Hi,
    This is a problem that is not made clear in the note. What is probably happening here is that both plugins are being fired when a user logs in. OID will only read the value returned from the final plugin to fire. This can be a problem if the user authenticates correctly against the first plug-in but fails on the second. This is entirely legitimate as this note tells you to configure this way but the OID only observes the final result. The note doesn't tell us this.
    Here's an example:
    We've two OID User users in different containers: cn=Al is in container cn=usersA,dc=oracle,dc=com and cn=BOB is in container cn=usersB,dc=oracle,dc=com.
    We have two plugins: pluginA and PluginB. Installed in that order.
    When Al logs in the two plugins fire. pluginA finds Al and returns a true, but then pluginB fires and returns a false undoing the good result. OID only accepts the final answer and so rejects the user. When Bob logins in both plugins fire again but it's the second plugin that returns the answer again. This is true and bob gets in.
    There's a couple of ways around this and one of the more effective ways is to associate the plugin with the dn. So in our example, we associate the pluginA to fire only for the dn cn=usersA,dc=oracle,dc=com and pluginB only to fire when a user is in cn=usersB,dc=oracle,dc=com. This gets around the problem of mulitple plugins firing and giving conflicting answers as the appropriate plugin only fires once.
    I've used this solution in a realtime environment when connecting and provisioning multiple ADs into one OID and found it to be extremely effective.
    Another solution is to associate the plugins with groups.
    Both of these options may be configured easily by modifying the plugin properties in ODM. Don't forget to restart OID after you've made the changes.
    HTH!
    Phil.
    If

  • Weird...Is there a polyphony limit to Logic?

    OK, I'm stumped.
    I've just started a new composition. So far I've used only 10 tracks. Each track is using an instance of EXS24. The tracks are, from 1-10, Piano, Bass (arco), Cellos, Violas, Violins, Soft pad, Celeste, Flute, Clarinet, and Harp.
    Measures 21-28 are using the harp, clarinet, flute, celeste, pad, violas and cellos. Starting in measure 29, I have the harp drop out completely, and the violins take over the melody, and I've add arco bass.
    Here's the strange thing that's happening:
    The problem is that everything except the flute cuts out half-way through measure 30! It's weird. It sounds just like it used to when I maxed out my polyphony on a keyboard -- back in the day when I used outboard keyboards . Everything cuts out, even the reverb. Actually, I think the flute cuts out too, but it probably doesn't seem like it because it's in a moving line, so the next note picks up right away. Everything else comes back in on the downbeat of measure 30, when each instrument has to play the next note.
    I think the problem is somehow related to the harp -- even though the harp isn't playing in measure 30. If I mute the harp track, measure 30 plays just fine. Or, if I start the track in measure 27 (2 measures before the harp section ends), it'll play fine. But if I play 4 or more measures of the harp section, measure 30 cuts out completely for a second.
    I've made sure that I'm never playing more than 3 notes at a time in the harp track, and have even played with the "voices" setting in the EXS24 instance on that track. But no matter how many voices I allocate to the harp (large or small) the effect on measure 30 remains the same. The only thing so far that solves the problem is muting the whole harp track.
    BTW, the polyphony requirement isn't very high in measure 30 -- probably only about 12 or 13 notes, although the damper pedal is used on the piano, so that would raise it a bit, but probably no more than 6 or 10 more notes. Certainly I've taxed sequences much harder in times past. But, I thought that MAYBE I've accidentally changed some global parameter that effects what's going on, thereby screwing up measure 30. BTW, this is the only measure in the song that's effected (although the sequence is only 38 measure long at present).
    Does this problem sound familiar at all? Or is this just a very bizarre problem that makes no sense to anyone? It certainly isn't making sense to me.
    I would greatly appreciate any advice you could give me.
    Thank you!
    Kevin
    Edited to add: BTW, I don't know if the following symptom is helpful or not, but I'm going to add it anyway, just in case it helps explain something.
    As I was playing with the "voices" parameter in the EXS24 instance on the harp track, I noticed that even though there is only 3 notes playing at any given time, and no pedal is being used, the "voices used" number keeps going up and up as the sequence plays the harp section. I'm assuming that the "voices used" number doesn't go down because of a long sample length (I'm using the harp that comes with VSL's Opus series).
    After the harp section ends in measure 28, the "voices used" starts going down slowly, taking about 3 measures to make it back down to zero.
    Does this make sense? I don't know if this is helpful to my problem, or if it's not related at all. But, I thought I'd better include it just in case.

    Sounds to me like you're experiencing "SIDS", or "sudden instrument dropout syndrome", an endemic problem with certain version of Logic. This was supposedly fixed in 7.2.3 (if memory serves), but it seems like you're running into SIDS nevertheless.
    There are other bugaboos with Logic (related to the performance of audio instrument plugs) that you might want to know about. For example, some sampler plugs, including instances of EXS-24 itself will not play back correctly if you initiate playback from a downbeat. It doesn't always happen, but then again, it happens a lot to me....
    For example, if you were to play a sequence back from, say, bar 54, beat 1, you might not hear some of the notes (or you'll hear bits and pieces of garbled sound), even if those notes are quantized to the downbeat, or, even if chase notes is enabled. But then, when this occurs, if you were to start from an 8th note before that point, playback is fine! It's an inexplicable and confounding problem that Logic can't play back correctly from a downbeat but will play back if you start playback off the downbeat.
    Next, polyphony. Logic does not have a polyphony limit exactly... The the number of plugs that can be handled (both sampler and fx plugs) dependent on your computer's horsepower. Taking into account non-Logic-related system requirements, other programs that might be running in the background, and then Logic and the cumulative needs of your plugs, these things all draw on processor resources. It's entirely possible to use up all available resources if you have too much going on. That's what the various benchmark tests are all about -- how far can you push the computer until it says, "uncle"...
    But it doesn't sound like you have a very heavy processor load, and as I said earlier, it sounds to me like you're running into SIDS.
    Now...
    By chance have you done any capture recording? (this is important, please let me know).
    Finally, regarding the polyphony count of EXS while only a few notes are being played... you are on the right track: as long as a sample is playing (even if it's nearly inaudible during the last moments of a long sample's release), it's using a voice. So let's say that you're playing a simple 3-note pattern outlining C major (C, E, G). If you play those notes over and over again, and assuming that you're playing a harp sound with a long release, here's the deal:
    The first 3 notes will indeed use 3 voices (CEG). Now you play another C, E, G. If those original 3 voices are still ringing out, you're now using 6 voices. Play C, E, G again. If those original 6 voices are still ringing out, you're now playing 9 voices. And so on.
    HTH. (Please let me know if you're using capture recording.)
    Message was edited by: iSchwartz

  • My PC restarts when I plug in my iPod Nano.

    Hi. Can anyone please help? Sometimes when I plug in my iPod Nano my computer re-boots. It doesn't always do a clean re-boot and I have to unplug the Nano and re-set the computer a couple of times. I have seen similar problems on this forum, and no, I am not using Aluria Spyware Eliminator. I use Norton Anti-virus.
    Help!

    Brian, another way of looking at this is: how many devices do you have connected to the USB port (the same one)? I've found through using external storage devices that one port can handle two devices. I had four going at once one time, but the same thing happened, only two would evenually connect.
    There's a limit to connections per USB port, I'm just trying to see if you have too many connectins on one port. If so, obviously, if you have other USB ports available, plug the nano into it's own port and see if that "cures" the missing nano.

  • Error during creation of application entity for the plug-in.

    Hi Experts,
    As part of creating Content Database source for SES....
    We,
    1 Activated the Oracle Internet Directory identity plug-in for the Oracle Content
    Database instance.
    2) However after activating Identity plug-in for Oracle Internet Directory.... ......... we used the csPlugin.ldif file to create an application entity for the plug-in by running the following command "$ORACLE_HOME/bin/ldapmodify -h oidHost -p OIDPortNumber -D "cn=oracle" -w password -f csPlugin.ldif" ....but in the process executing the above command.... getting the following error(we gave correct login details):
    SASL/DIGEST-MD5 authentication started
    ldap_sasl_interactive_bind_s: Invalid credentials (49)
    How can i resolve this.
    I have another query...in the command "$ORACLE_HOME/bin/ldapmodify -h oidHost -p OIDPortNumber -D "cn=oracle" -w password -f csPlugin.ldif" which user name should i specify..... is it "cn=oracle" or "cn=orcladmin"
    Thanks
    peter.

    Hi Raford,
    Thanks for your reply.
    We tried to create Content Database Source with the details we have...
    However in this process getting an exception....
    11:20:20:778 INFO     main          
    11:20:20:784 INFO     main          Oracle Secure Enterprise Search, Crawler: Release 10.1.8.2
    11:20:20:785 INFO     main          Copyright © 2006, 2007, Oracle. All rights reserved.
    11:20:20:785 INFO     main          
    11:20:20:785 INFO     main          ================== Crawling settings ==================
    11:20:20:785 INFO     main          Reading configuration file from /mnt/u08/SOADEVIL/seshome/search/data/config/crawler.dat
    11:20:20:785 INFO     main          Agent = Oracle Secure Enterprise Search
    11:20:20:807 INFO     main          User = EQ_TEST
    11:20:20:807 INFO     main          Database connect string = jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=devilrays.appsassociates.com)(PORT=1525))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=Devilses.devilrays.appsassociates.com)))
    11:20:20:807 INFO     main          Source type is User-defined
    11:20:20:807 INFO     main          Source is "BJ_Cont"
    11:20:20:807 INFO     main          Document access control policy is user-defined
    11:20:20:808 INFO     main          Number of crawling threads = 5
    11:20:20:808 INFO     main          Queue table = I1S8
    11:20:20:808 INFO     main          URL table = EQ$URL
    11:20:20:808 INFO     main          Maximum documents to crawl = no limit
    11:20:20:808 INFO     main          Maximum depth to crawl = 2
    11:20:20:808 INFO     main          Document size limit = 10M
    11:20:20:808 INFO     main          Locale of the crawler message is "en_US"
    11:20:20:808 INFO     main          URL exclusion rule = (?i:(?:\.gif)|(?:\.jpg)|(?:\.jar)|(?:\.tif)|(?:\.bmp)|(?:\.war)|(?:\.ear)|(?:\.mpg)|(?:\.wmv)|(?:\.mpeg)|(?:\.scm)|(?:\.iso)|(?:\.dmp)|(?:\.dll)|(?:\.cab)|(?:\.so)|(?:\.avi)|(?:\.wav)|(?:\.mp3)|(?:\.wma)|(?:\.bin)|(?:\.exe)|(?:\.iso)|(?:\.tar)|(?:\.png))$
    11:20:20:808 INFO     main          URL exclusion rule = \?.*(.*\+)\1{3}
    11:20:20:812 INFO     main          Document read timeout threshold = 30 second(s)
    11:20:20:812 INFO     main          Crawler default character set is "8859_1"
    11:20:20:812 INFO     main          Crawler default language is "en"
    11:20:20:813 INFO     main          Auto language detection is on
    11:20:20:813 INFO     main          Auto character set detection is off
    11:20:20:813 INFO     main          Document service pipeline is "Default pipeline"
    11:20:20:813 INFO     main          Verbose mode is on
    11:20:20:935 INFO     main          Caching on: directory = /mnt/u08/SOADEVIL/sesdata/Devilses/cache/I1DS8/, max size = 250, action = SES_TASK
    11:20:20:935 INFO     main          Filtering on: filter path = /mnt/u08/SOADEVIL/seshome/ctx/bin/ctxhx, number of filters = 2
    11:20:20:935 INFO     main          MIME inclusions = text/html text/plain application/pdf application/x-msexcel application/vnd.ms-excel application/ms-excel application/x-mspowerpoint application/vnd.ms-powerpoint application/msword
    11:20:20:935 INFO     main          URL table attributes = url, depth, signature, last_modified, status, url_id, access_url, enqueue_status, TITLE, DESCRIPTION, AUTHOR, CRAWLED_DATE, CONTENT_LENGTH, CONTENT_TYPE, LANG, CACHE_FILE_PATH, DS_ID
    11:20:20:936 INFO     main          SQL callback statement is "begin eq_crw.crawler_callback(?,?,?,?); exception when eq_def.search_error then eq_err.raise; when others then eq_err.raise; end;"
    11:20:20:936 INFO     main          Cookie support is enabled
    11:20:20:937 INFO     main          Maximum number of cookies = 300
    11:20:20:939 INFO     main          Maximum number of cookies per host = 20
    11:20:20:939 INFO     main          Maximum size of cookie = 4096 bytes
    11:20:20:940 INFO     main          Cache file deletion is disabled
    11:20:20:940 INFO     main          Crawler plug-in manager class is "oracle.search.plugin.ocs.cservices.OCSCSPluginMgr"
    11:20:20:940 INFO     main          SQL hook ID is "8"
    11:20:20:940 INFO     main          SQL command hook statement is "begin ? := eq_crw.crawler_get_command(?,?,?,?); end;"
    11:20:20:940 INFO     main          SQL response hook statement is "begin ? := eq_crw.crawler_send_response (?,?,?,?,?,?,?,?,?,?,?,?,?); end;"
    11:20:20:940 INFO     main          Crawler launched by schedule "BJ_Cont"
    11:20:20:940 INFO     main          
    11:20:20:940 INFO     main          =================== Crawling status ===================
    11:20:20:941 INFO     main          Crawling started at 9/18/07 11:20 AM
    11:20:21:912 INFO     main          URL manager connecting to Oracle...
    11:20:21:974 INFO     main          connected
    11:20:22:586 INFO     main          Queue manager connecting to Oracle...
    11:20:22:631 INFO     main          connected
    11:20:23:497 INFO     main          Invoking "oracle.search.plugin.ocs.cservices.OCSCSPluginMgr"
    11:20:23:501 INFO     main          URL manager connecting to Oracle...
    11:20:23:529 INFO     main          connected
    11:20:23:531 INFO     main          Initializing crawler plug-in manager "oracle.search.plugin.ocs.cservices.OCSCSPluginMgr"
    11:20:23:531 ERROR     main          SES keystore location: null
    11:20:23:532 ERROR     main     null oracle.search.sdk.crawler.PluginException     oracle.search.plugin.ocs.cservices.OCSCSPluginMgr:getParamValue:351     oracle.search.plugin.ocs.cservices.OCSCSPluginMgr:init:479     oracle.search.crawler.WebCrawler:begin:1076     ImtCrawler:run:1831     ImtCrawler:main:480
    11:20:23:532 ERROR     main     null oracle.search.sdk.crawler.PluginException     oracle.search.plugin.ocs.cservices.OCSCSPluginMgr:getParamValue:351     oracle.search.plugin.ocs.cservices.OCSCSPluginMgr:init:479     oracle.search.crawler.WebCrawler:begin:1076     ImtCrawler:run:1831     ImtCrawler:main:480
    11:20:23:676 INFO     Thread-1          Remote command "reportstatistics" received, argument = "quit"
    11:20:23:676 INFO     Thread-1          Executing remote command "reportstatistics"
    11:20:23:697 INFO     Thread-1          Send back remote command execution result
    11:20:25:944 INFO     main          Shutting down all crawling threads...
    11:20:25:948 INFO     main          
    11:20:25:949 INFO     main          =================== Crawling results ===================
    11:20:25:949 INFO     main          Crawling started at 9/18/07 11:20 AM
    11:20:25:949 INFO     main          Crawling stopped at 9/18/07 11:20 AM
    11:20:25:949 INFO     main          Total crawling time = 0:0:5
    11:20:25:949 INFO     main          
    11:20:25:954 INFO     main          Total number of documents fetched = 0
    11:20:25:954 INFO     main          Document fetch failures = 0
    11:20:25:954 INFO     main          Document conversion failures = 0
    11:20:25:954 INFO     main          Total number of unique documents indexed = 0
    11:20:25:954 INFO     main          Total data collected = 0 bytes
    11:20:25:954 INFO     main          Total number of non-indexable documents = 0
    11:20:25:955 INFO     main          
    11:20:25:955 INFO     main          Number of times disk cache is full = 0
    We have followed the installation details provided in "SESAdmiistratorGuide".
    In that guide.... during creation of Content Database source he did not mention any entry for "SES keystore location", and the exception which we are getting is related to "SES keystore location: null" (please look into the exception stack).
    could you please guide us.
    Thanks
    peter.

Maybe you are looking for

  • Dam, did you know that ppl make things harder then they should be

    As I look here and other places I see that people make things harder then what they need tobe.I see people fearing fear when it comes to programming.They are so worried if they are going to make it or if they will pass this test or that test,well I g

  • Apple Password doesn't work when it is the correct password

    A few days ago, in the middle of playing music on iTunes, I was no longer able to sign in. When I tried to sign into Apple that day, my password (which I know was correct) didn't work. So I reset my password. Today I tried to sign into Apple with the

  • Prepared statement error

    hello friends, iam using the following code when i tryo to compile it gives the error as follow <code> import java.sql.*; import java.util.*; class DbDemoPrepared public static void main (String args[]) throws SQLException Class.forName("com.mysql.jd

  • SSL Client Binding Error (does not support directory connections encryp....

    So I'm getting the dreaded "does not support directory connections encrypted with ssl" error when attempting to bind clients (10.5) to the server (10.5). I followed the Apple KB article, but it did not help...double-checked permissions and the config

  • Populating Cashed Rowset

    The default Cashed Rowset can hold 100 records. But if I want to put more than 100, how am I supposed to increase the limit. And also pls. let me know whether it is good to put say about 600 records in a cashed rowset or some other method should be u