Passing large number of parameters

In chapter 6 of the reports 6i documentation it states that one of the advantages of using a ref cursor is to "avoid the use of lexical parameters in your reports". I am not clear how it does this. Can anyone explain how this would work?
In my application, I would like to print an exception report (ie use run_report) when an item in the base report exceeds a threshold amount. I would rather not pass all the subtotal values, as that would require passing a large number of parameters to the exception report. I can do it, but it seems like there should be an easier way. Passing a parameter of type RECORD would do it, but isn't allowed, right?
null

1. In some cases, you can avoid the use of lexical parameters in your reports
with "static" ref cursor.
Example for "static" ref cursor:
1.1 Stored package
CREATE OR REPLACE PACKAGE report_static IS
TYPE type_ref_cur_sta IS REF CURSOR RETURN dept%ROWTYPE;
FUNCTION func_sta (p_order_by VARCHAR2) RETURN type_ref_cur_sta;
END;
CREATE OR REPLACE PACKAGE BODY report_static IS
FUNCTION func_sta (p_order_by VARCHAR2) RETURN type_ref_cur_sta IS
ref_cur_sta type_ref_cur_sta;
BEGIN
IF p_order_by = 'dname' THEN
OPEN ref_cur_sta FOR
SELECT * FROM dept ORDER BY dname;
ELSE
OPEN ref_cur_sta FOR
SELECT * FROM dept ORDER BY deptno;
END IF;
RETURN ref_cur_sta;
END;
END;
1.2 Query PL/SQL in Reports
function QR_1RefCurQuery return report_static.type_ref_cur_sta is
begin
return report_static.func_sta (:p_order_by);
end;
2. But if you need (for example) dynamic where, you (practically)
can't use "static" ref cursor. In this case, you can use "dynamic" ref cursor
(available from Oracle 8.1.5).
Example for "dynamic" ref cursor (note that Reports need
"static" ref cursor type for building Report Layout):
2.1 Stored package
CREATE OR REPLACE PACKAGE report_dynamic IS
TYPE type_ref_cur_sta IS REF CURSOR RETURN dept%ROWTYPE; -- for Report Layout only
TYPE type_ref_cur_dyn IS REF CURSOR;
FUNCTION func_dyn (p_where VARCHAR2) RETURN type_ref_cur_dyn;
END;
CREATE OR REPLACE PACKAGE BODY report_dynamic IS
FUNCTION func_dyn (p_where VARCHAR2) RETURN type_ref_cur_dyn IS
ref_cur_dyn type_ref_cur_dyn;
BEGIN
OPEN ref_cur_dyn FOR
'SELECT * FROM dept WHERE ' | | NVL (p_where, '1 = 1');
RETURN ref_cur_dyn;
END;
END;
2.2 Query PL/SQL in Reports
function QR_1RefCurQuery return report_dynamic.type_ref_cur_sta is
begin
return report_dynamic.func_dyn (:p_where);
end;
Regards

Similar Messages

  • How to pass variable number of parameters to a FORM.

    Hi,
    What is the correct syntax to pass variable number of parameters to a subroutine?
    PERFORM TEST TABLES BRETURN USING TEST_NAME CHANGING MY_OUTPUT.
    FORM TEST TABLES RETURN STRUCTURE BAPIRET2
              ITAB STRUCTURE ITABLE_LINE OPTIONAL
              USING VALUE(NAME) TYPE STRING
              CHANGING VALUE(OUTPUT) TYPE STRING.
    The above code does not work. How can we specify an optional parameter?
    Thanks and Regards,
    Sheetal
    Message was edited by: Sheetal Pisolkar

    Hi,
    I am trying to use a subroutine instead of function.A FUNCTION understands optional keyword.
    How can this work for a FORM?
    CALL FUNCTION 'TEST'
         EXPORTING
              MY_OUTPUT = 'output'
         IMPORTING
              TEST_NAME = 'mytest'.     
    FUNCTION TEST
    *     EXPORTING
    *          VALUE(OUTPUT) TYPE STRING
    *     IMPORTING
    *          VALUE(NAME) TYPE STRING
    *     TABLES
    *          RETURN STRUCTURE BAPIRET2 OPTIONAL
    *          ITAB STRUCTURE ITABLE_LINE OPTIONAL          
    ENDFUNCTION.
    PERFORM TEST USING TEST_NAME CHANGING MY_OUTPUT.
    FORM TEST TABLES RETURN STRUCTURE BAPIRET2 OPTIONAL
    ITAB STRUCTURE ITABLE_LINE OPTIONAL
    USING VALUE(NAME) TYPE STRING
    CHANGING VALUE(OUTPUT) TYPE STRING.
    ENDFORM.
    Is this be possible?
    Thanks
    Sheetal.

  • Passing Variable Number of Parameters to Cobol Stored Procedure

    Hi. I have a web front end that needs to access several different tables via Cobol stored procedures. It seems simple enough to call the stored procedures straight away (DAO Pattern perhaps?) but my boss is insistent on having an intermediate Cobol program that decides which table to access. I think he at a bigger picture than I can see.
    The problem lies in the number of parameters that need to be passed to the stored procedures; some need 3, others needs 5, a few need 4. The only two solutions that I can think of are to pass EVERYTHING (we're talking 50 parameters or so) to the intermediate stored procedure and then pulling only what is needed from that data set to access the desired table. Solution number two involves passing everything to a temp table and then pulling what is needed from it. The former solution seems a little cleaner but still involves passing a lot of parameters. If Cobol could handle some sort of dynamic memory allocation (Vector) there seems to be a possible solution there. Though, as far as I know, that isn't possible.
    Any ideas are much appreciated.
    Thanks in advance,
    Chris

    Hi Saurabh,
    The method in which stored procedures are called on form submit is something as follows.
    Let us take your scenario of a form which has multiple checkboxes and a submit button. On clicking the submit button, this form data is submitted using either get or post. The form's submit action invokes a procedure.
    The HTML form code will look something like this..
    htp.formOpen( curl => 'URL /myProcedure',
    cmethod => 'post' );
    htp.formCheckbox( cname => 'myCheckbox'
    cvalue => 'A');
    htp.formCheckbox( cname => 'myCheckbox'
    cvalue => 'B');
    htp.formCheckbox( cname => 'myCheckbox'
    cvalue => 'C');
    htp.formSubmit( cname => 'myButton',
    cvalue => 'OK');
    Now, whenever the submit button is clicked, all these form values are passed to our stored procedure 'myProcedure'.
    "myProcedure" looks something like this.
    procedure myProcedure
    myCheckbox IN sys.owa_util.vc_arr,
    myButton IN VARCHAR2
    is
    begin
    end myProcedure;
    The point to be noted here is that the name of the variable being passed in the procedure is the same as the name of the HTML element being created in the HTML form. So, there is a direct mapping between the elements in the HTML form and the procedure parameters.
    Another noteworthy point is that since you have multiple checkboxes in your HTML form, it is impractical to name all the checkboxes differently and then pass those many parameters to your procedure (Imagine a scenario where there are a hundred check-boxes in an HTML form!). So portal allows you to give the same name (cname) to all the checkboxes in your HTML form, and if multiple checkboxes are checked, it will return all the checkbox values in an array (Note the usage of "myCheckbox IN sys.owa_util.vc_arr" in myProcedure).
    You can check out this link for more information.
    Re: retrieving data from fields
    Thanks,
    Ashish.

  • Communicate large number of parameters and variables between Verstand and Labview Model

    We have a dyno setup with a PXI-E chassis running Veristand 2014 and Inertia 2014. In order to enhance capabilities and timing of Veristand, I would like to use Labview models to perform tasks not possible by Veristand and Inertia. An example of this is to determine the maximum of a large number of thermocouples. Veristand has a compare funtion, but it compares only two values at a time. This makes for some lengthy and inflexible programming. Labview, on the other hand, has a function which aloows one to get the maximum of elements in an array in a single step. To use Labview I need to "send" the 50 or so thermocouples to the Labview model. In addition to the variables which need to be communicated between Veristand and Labview, I also need to present Labview with the threshold and confguration parameters. From the forums and user manuaIs understand that one has to use the connector pane in Labview and mapping in Veristand System Explorer to expose the inports and outports. The problem is that the Labview connector pane is limited to 27 I/O. How do I overcome that limitation?
    BTW. I am fairly new to Labview and Versitand.
    Thank you.
    Richard
    Solved!
    Go to Solution.

    @Jarrod:
    Thank you for the help. I created a simple test model and now understand how I can use clusters for a large number of variables. Regarding the mapping process: Can one map a folder of user channels to a cluster (one-step mapping)? Alternatively, I understand one can import a mapping (text) file in System Explorer. Is this import partial or does it replace all the mapping? The reason I am asking is that, if it is partial, then I can have separate mapping files for different configurations and my final mapping can be a combination of imported mapping files.
    @SteveK:
    Thank you for the hint on using a Custom Device. I understand that the Custom Device will be much more powerful and can be more generic. The problem at this stage is that my limitations in programming in Labview is far gretater than Labview models' limitations in Veristand. I'll definitely consider the Custom Device route once I am more provicient with LabView. Hopefully I'll be able to re-use some of the VI's I created for the LabView models.
    Thanks
    Richard

  • How to pass more number of parameters in procedure

    How can we send 1000 parametrs in a procedure?
    is there any other method to pass parameters without defning 1000 parametrs
    Any example really helpful

    I know it's a hint, but have you ever known it to be ignored? Can you provide a working example showing it being ignored?Well it is not hard to demonstrate it being ignored, but these restrictions, while not obvious, are relatively well documented.
    What does not appear to be documented is the behaviour when calling from 3GLs (or does this qualify as an external procedure call?) where I believe the hint is also ignored.
    http://download-uk.oracle.com/docs/cd/B19306_01/appdev.102/b14261/tuning.htm#sthref2261
    "The use of NOCOPY increases the likelihood of parameter aliasing. For more information, see "Understanding Subprogram Parameter Aliasing".
    Remember, NOCOPY is a hint, not a directive. In the following cases, the PL/SQL compiler ignores the NOCOPY hint and uses the by-value parameter-passing method; no error is generated:
    1. The actual parameter is an element of an associative array. This restriction does not apply if the parameter is an entire associative array.
    2. The actual parameter is constrained, such as by scale or NOT NULL. This restriction does not apply to size-constrained character strings. This restriction does not extend to constrained elements or attributes of composite types.
    3. The actual and formal parameters are records, one or both records were declared using %ROWTYPE or %TYPE, and constraints on corresponding fields in the records differ.
    4. The actual and formal parameters are records, the actual parameter was declared (implicitly) as the index of a cursor FOR loop, and constraints on corresponding fields in the records differ.
    5. Passing the actual parameter requires an implicit datatype conversion.
    6. The subprogram is called through a database link or as an external procedure."
    For example, consider rule #2 above and compare output of first block (with unconstrained NUMBER datatype) with second (with constrained NUMBER datatype).
    Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production
    SQL> SET SERVEROUTPUT ON;
    SQL> <<anonymous_block>>
      2  DECLARE
      3     variable_name NUMBER := 0;
      4
      5     PROCEDURE procedure_name (
      6        parameter_name   IN OUT NOCOPY   NUMBER)
      7     IS
      8     BEGIN
      9        dbms_output.put_line ('#2 variable_name => ' || variable_name);
    10        parameter_name := parameter_name + 1;
    11        dbms_output.put_line ('#3 variable_name => ' || variable_name);
    12     END procedure_name;
    13  BEGIN
    14     dbms_output.put_line ('#1 variable_name => ' || variable_name);
    15     procedure_name (variable_name);
    16     dbms_output.put_line ('#4 variable_name => ' || variable_name);
    17  END anonymous_block;
    18  /
    #1 variable_name => 0
    #2 variable_name => 0
    #3 variable_name => 1
    #4 variable_name => 1
    PL/SQL procedure successfully completed.
    SQL> <<anonymous_block>>
      2  DECLARE
      3     variable_name NUMBER (10) := 0;
      4
      5     PROCEDURE procedure_name (
      6        parameter_name IN OUT NOCOPY NUMBER)
      7     IS
      8     BEGIN
      9        dbms_output.put_line ('#2 variable_name => ' || variable_name);
    10        parameter_name := parameter_name + 1;
    11        dbms_output.put_line ('#3 variable_name => ' || variable_name);
    12     END procedure_name;
    13  BEGIN
    14     dbms_output.put_line ('#1 variable_name => ' || variable_name);
    15     procedure_name (variable_name);
    16     dbms_output.put_line ('#4 variable_name => ' || variable_name);
    17  END anonymous_block;
    18  /
    #1 variable_name => 0
    #2 variable_name => 0
    #3 variable_name => 0
    #4 variable_name => 1
    PL/SQL procedure successfully completed.
    SQL>

  • Passing large number of values to a WebI prompt from external application

    Hello all,
    BIt of a strange request this!
    I need to abuse the OpenDocument function and pass A LOT of prompt values into a webi report. 
    The users can select hundreds/thousands of records in an external web based application and click to open a BO WebI report which needs to refresh restricting on the records selected by the user in the other application.
    If I do this with OpenDocument i can pass so many values in a list that I'll exceed the limits of the URL length (although I think opendoc itself is shorter than this limit). 
    So I'm hitting the same limit as these guys...
    http://bembengarifin.wordpress.com/2009/02/19/business-objects-opendocument-api-url-length-limitation-gotcha/
    Anyone got any ideas?
    Was thinking of programatically accessing the document via SDK and adding restrictions or possibly changing open doc to use a POST function... but any ideas on if this would work or any other options?
    Cheers,
    Jez

    Hi Jeremy,
    No solution, but a warning note...
    I'm afraid that even if you pass the hurdle of the URL length,
    you will hit the limit of the in list() number of values on the database side.
    So I would go for storing the selected list in the database.
    Then you can either create a predefined filter to select the records using the contents of the table,
    or bring in the table in the structure, create object and use these to create the where condition in the report.
    Needless to say you will probably want to limit this table to just the records from a specific user,
    but you stand a better chance of getting to a working solution then the road you're thinking of traveling.
    Hope this helps,
    Marianne

  • Using booleans to change a large number of parameters

    Hi all,
    We have a number of booleans. We want that when any one becomes TRUE, we would change a parameter in a different button.
    If it was only one boolean, we would have no problem, but we have 36 such booleans. Does anyone have a way of programming this so that we don't have 36 nested IF cases? the booleans can become TRUE together.
    To check if any boolean is true, we poll all of them in a while loop (they are hardware-connected and unfortunately the hardware is not built for interrupts, so polling is the only way).
    Can anyone help?
    Thanks,
    Danielle
    "Wisdom comes from experience. Experience is often a result of lack of wisdom.”
    ― Terry Pratchett
    Solved!
    Go to Solution.

    Hi Mike,
    It is unfortunately necessary to poll them.
    The problem is not setting the values, it is knowing to which control to set the value. We get a number of booleans, and we need to check which are true and set our controls accordingly. for example, booleans 1,6 and 20 are true, so we need to change controls 101, 106 and 120. Other then checking each of the 36 booleans in 36 parallel IF loops, are there any suggestions for how to determine which controls we need to change?
    Thanks,
    Danielle
    "Wisdom comes from experience. Experience is often a result of lack of wisdom.”
    ― Terry Pratchett

  • How to handle a large number of query parameters for a Browse screen

    I need to implement an advanced search functionality in a browse screen for a large table.  The table has 80+ columns and therefore will have a large number of possible query parameters.  The screen will be built on a modeled query with all
    of the parameters marked as optional.  Given the large number of parameters, I am thinking that it would be better to use a separate screen to receive the parameter input from the user, rather than a Popup.  Is it possible for example to have a search
    button on the browse screen (screen a) open a new screen (screen b) that contains all of the search parameters, have the user enter the parameters they want, then click a button to send all of the parameters back to screen a where the query is executed and
    the search results are returned to the table control?  This would effectively make screen b an advanced modal window for screen a.  In addition, if the user were to execute the query, then want to change a parameter, they would need to be able to
    re-open screen b and have all of their original parameters still set.  How would you implement this, or otherwise deal with a large number of optional query parameters in the html client?  My initial thinking is to store all of the parameters in
    an object and use beforeShown/afterClosed to pass them between the screens, but I'm not quite sure how to make that work.  TIA

    Wow Josh, thanks.  I have a lot of reading to do.  What I ultimately plan to do with this (my other posts relate to this too), is have a separate screen for advanced filtering that also allows the user to save their queries if desired. 
    There is an excellent way to get at all of the query information in the Query_Executed() method.  I just put an extra Boolean parameter in the query called "SaveQuery" and when true, the Query_Executed event triggers an entry into a table with
    the query name, user name, and parameter value pairs that the user entered.  Upon revisiting the screen, I want the user to be able to select from their saved queries and load all the screen parameters (screen properties) from their selected query. 
    I almost have it working.  It may be as easy as marking all of the screen properties that are query parameters as screen parameters (not required), then passing them in from the saved query data (filtered by username, queryname, and selected
    item).  I'll post an update once I get it.  Probably will have some more questions as I go through it.  Thanks again! 

  • Variable number of parameters to procedure

    I have a requirement to pass variable number of parameters for an attribute, to a stored procedure.
    example:
    procedure getSum(country_code IN varchar2, sum OUT number)
    Inside the procedure, I am currently
    writing SQL as
    where eligible_code in (country_code).
    This is ok when I pass just one code.
    However I need to deal with n number of
    country codes at a given time.
    i.e. if I want to pass 3 country codes
    as a concatinated string say "A-B-C"
    where A, B, C are 3 different codes,
    how do I decode them into a
    meaning full
    where eligible_code in ('A', 'B', 'C')
    Or is there any other way of dealing
    with this kind of situation.
    The bottom line is I must have a stored
    procedure, that takes parameter(s).
    Any input/suggestion is highly appreciated.

    Please try the following, substituting the appropriate table name for your_table and the appropriate column name for eligible_code, then see if you can incorporate some of it into your procedure. Please let me know if it works for you or not.
    SQL> EDIT getsum
    CREATE OR REPLACE PROCEDURE getsum
    (country_code IN VARCHAR2,
    p_sum OUT NUMBER)
    AS
    v_country_codes VARCHAR2 (300);
    v_sum NUMBER := 0;
    v_sql_statement VARCHAR2 (3000);
    v_sql_syntax VARCHAR2 (30000);
    cursor_name INTEGER;
    ignore INTEGER;
    BEGIN
    v_country_codes := REPLACE (country_code, '-', ''',''');
    v_sql_statement := ' SELECT COUNT (*)
    INTO :v_sum
    FROM your_table
    WHERE eligible_code IN (''' &#0124; &#0124; v_country_codes &#0124; &#0124; ''');';
    v_sql_syntax := 'BEGIN '&#0124; &#0124; v_sql_statement &#0124; &#0124;' END;';
    cursor_name := DBMS_SQL.OPEN_CURSOR;
    DBMS_SQL.PARSE (cursor_name, v_sql_syntax, DBMS_SQL.NATIVE);
    DBMS_SQL.BIND_VARIABLE (cursor_name, ':v_sum', v_sum);
    ignore := DBMS_SQL.EXECUTE (cursor_name);
    DBMS_SQL.VARIABLE_VALUE (cursor_name, ':v_sum', v_sum);
    DBMS_SQL.CLOSE_CURSOR (cursor_name);
    p_sum := v_sum;
    END getsum;
    Save the file.
    SQL> START getsum
    Procedure created.
    SQL> VARIABLE g_sum NUMBER
    SQL> EXEC getsum ('A-B-C', :g_sum)
    PL/SQL procedure successfully completed.
    SQL> PRINT g_sum
    G_SUM
    3
    null

  • Problem in compilation with very large number of method parameters

    I have java file which I created using WSDL2Java. Since the actual WSDL has a complex type with a large number of elements(around 600) in it, Consequently the resulting java file(from WSDL2Java) has a method that takes 600 parameters of various types. When I try to compile it using javac at command prompt, it says "Too many parameters" and doesn't compile. The same is compiling successfully using JBuilder X . The only way I could compile successfully at command prompt is by reducing the number of parameters to around 250 but unfortunately that it's not a workable solution. Does Sun specify any upper bound on number of parameters that can be passed to a method?

    ... a method that takes 600 parameters ...Not compatible with the spec, see Method Descriptors.
    When I try to compile it using javac at
    command prompt, it says "Too many parameters" and
    doesn't compile.As it should.
    The same is compiling successfully using JBuilder X .If JBuilder produces a class file, that class file may very well be invalid.
    The only way I could compile
    successfully at command prompt is by reducing the
    number of parameters to around 250Which is what the spec says.
    but unfortunately that it's not a workable solution.Pass an array of objects - an array is just one object.
    Does Sun specify
    any upper bound on number of parameters that can be
    passed to a method?Yes.

  • Passing a large number of column values to an Oracle insert procedure

    I am quite new to the ODP space, so can someone please tell me what's the best and most efficient way to pass a large number of column values to an Oracle procedure from my C# program ? Passing a small number of values as parameters seem OK but when there are many, this seems inelegant.

    Passing a small number
    of values as parameters seem OK but when there are
    many, this seems inelegant.Is it possible that your table with a staggering amount of columns or method that collapses without so many inputs is ultimately what is inelegant?
    I once did a database conversion from VAX RMS system with a "table" with 11,000 columns to a normalized schema in an Oracle database. That was inelegant.
    Michael O
    http://blog.crisatunity.com

  • Is there a max number of parameters that can be passed to a C function in test stand v. 1.0.1

    I have had an issue with test stand version 1.0.1 (yes, I know; it's quite old) and calling a C function thru an action step. when I call this function with 18 parameters, it seems to hang. I have called a function with 16 and it seems to work. Is this a limit of the software? I am calling the function from a windows DLL that we've created. When I try to pull the function from the dll into test stand I also get a { error...but I get that in the other function's call and it seems to work fine. Any ideas?

    ok, upon re-reading what I posted I can clearly see your confusion. haha. I think there are two separate issues.
    1) Are there a maximum number of parameters one can use when calling a C function from a DLL? Yes, i'm trying to call a C function from test stand.
    2) when I select the "module" tab, and select which DLL contains my function, the prototype has no information associated with it (by clicking the reload prototype button). I'm not sure why, as I'm using a declspec to send the function information out of the dll, but that's another topic. So I click on the source file tab and point the window to the .cpp of my function (within the DLL's project workspace) and when it begins to parse the file, I get an error about mis-matched curly brackets and if I wish to continue, and skip the rest of the parsing.
    I click "OK" and when I go back to the module tab, I am able to see all my functions, along with the parameters in the drop down menu below. I fill in all the parameters and everything looks ok; no syntax errors, or anything else seemingly suspicious. I then run my test stand code and when I get to the step which calls this function, the system hangs and cannot proceed.
    Any thoughts as to what might cause these issues? 

  • Reading large number of similiar parameters problem

    I have a servlet that is being sent a number of parameters that are called q1,q2,q3 etc. When activated the number of parameters sent could be "q1" on its own or "q1,q2,q3" all the way upto "q20". Is there a way of making the servlet read in only the parameters that are sent that are named like this or do i have to write 20 getParameter lines for each "q" like this:
    String qu1 = req.getParameter("q1");
              String qu2 = req.getParameter("q2");
              String qu3 = req.getParameter("q3");
              String qu4 = req.getParameter("q4");
              String qu5 = req.getParameter("q5");
              String qu6 = req.getParameter("q6");
              String qu7 = req.getParameter("q7");
              String qu8 = req.getParameter("q8");
              String qu9 = req.getParameter("q9");
    help!

    String params = new String[21];
    for (int i=1; i<=20; i++) {
      params[i] = req.getParameter("q" + Integer.toString(i));
    }

  • Hello , FMS is how to prevent the client into a large number of bytes?

    Hello , FMS how to prevent the client to pass a large number of bytes , such as one person put a 1G file in the argument , I also silly to receive ?Although there Client.setBandwidthLimit ( ) limit his maximum traffic per second , but is there a way , one more than the maximum amount of bytes to disconnect his.I assume that methods to determine the length is also obtained all of his transfer is finished , in order to determine out of it .

    How to limit the size of the parameters of the method.I wrote a method in the main.asc then the client NetConnection.call assignment, but if the client is malicious to upload very large data, how to limit it, I view the document did not find the clues, I hope that those parameters up to100KB.

  • Always get MaxMessageSizeExceededException on large number of MBeans

    I have 60 apps deployed on my Cluster (with 2 ManagedServers), and each App has a large number of MBeans. If I go to the custom tree using wlst, I always get this error, even though the MaxMessageSize has been set way way higher.
    weblogic.socket.MaxMessageSizeExceededException: Incoming message of size: '10000080' bytes exceeds the configured maximum of: '10000000' bytes for protocol: 't3'
    The ManagedServers are started with the ClusterManager, and each ManagedServer has the Arguments set for ServerStart:
    -Xms4g -Xmx8g -XX:MaxPermSize=7g -d64 -XX:+UseCodeCacheFlushing -XX:NewSizeThreadIncrease=100 -Dweblogic.ThreadPoolPercentSocketReaders=50 -Dweblogic.ThreadPoolSize=100 -Dweblogic.SelfTuningThreadPoolSizeMin=1000 -Dweblogic.MaxMessageSize=20971520 -Djava.library.path=/install/Middleware/wlserver_10.3/server/native/linux/x86_64
    The AdminServer has been set with a similar MaxMessageSize, and the wlst from where I issue the custom() command, has been started with "-Dweblogic.MaxMessageSize=20971520" too.
    To top it off, I checked the JVM's with jinfo to double check the weblogic.MaxMessageSize, and all do comply to the specified bytes, none being 10M of the error message.
    I am able to reproduce the issue on Linux x64 as well as Solaris 11 Sparc.
    Could it be related to the MBeans (as I assume)? When I only deploy 55 apps, the issue does not occur. Any other tips are welcome.

    Here WLST would be acting as the client. It seems that you have placed the setting of the message max size on the server side (which is one part of the tuning), but you need to place the same to the WLST too or for that matter any other client like applet, stand-alone java code.
    In short you can try the following, if you wish:
    set the environment using setDomainEnv.sh/cmd and the run:
    java -Dweblogic.MaxMessageSize=20971520 weblogic.WLST
    Note: I read through your note about providing "-Dweblogic.MaxMessageSize=20971520" parameter to WLST, but not sure whether you have checked WLST process with jinfo or the WLS server nodes.
    Also I am not sure what type of application you are using by you can consider passing the above property via System.property() call to the application.
    Additionally, I would request you to share some more information, like the config (snippet), jinfo output, and WLST output if you try to locate the current MaxMessageSize value of the server by connecting to it, complete stack (if any).. in case the above does not help.
    Note: I have tried this multiple times and it works like a charm. But from your notes it seems to a case of overridding of parameters value.
    HTH,
    AJ

Maybe you are looking for