URLConnection returns NULL when called from within a weblogic servlet

The following code snippet works when executed outside of weblogic, but does
not work from within a weblogic servlet instance.
URL u = new URL("http://" + ipString + newString.toString());
URLConnection uc = u.openConnection();
BufferedReader in = new BufferedReader (new InputStreamReader(uc.getInputStream()));
String response = "", response2 = "";
while(response2 != null)
     response = ((response2 = in.readLine()) == null) ? response : response + response2;
The response is quite big. When this code is executed from within a weblogic servlet instance,
in.readLine always returns a null right away. Yet a TCP/IP trace shows that the packets are coming
back to my NT machine.
Other info:
Inside of weblogic:
u's handler is of type weblogic.net.http.Hanlder
uc is of type weblogic.net.http.HttpURLConnection
Outside of weblogic:
u's handler is of type sun.net.www.protocol.http.Handler
uc is of type sun.new.www.protocol.http.HttpURLConnection
Weblogic V4.51. Running on NT.
Attempted the following to no avail:
1. installing sp11
2. changing the security to permission java.security.AllPermission;
3. adding the following calls : uc.setRequestProperty("Content-Type", "text/xml");          
          uc.setDoInput(true);
          uc.setDoOutput(true);
4. Started playing around with modifying the java.protocol.handler.pkgs system property,
but I shouldn't have to do this.
Any help would be appreciated.

There are some problems with the WL implementations of certain protocols.
WL hides the Sun implementations when you are in the WebLogic server. Here
is an a solution that was posted to a similar problem:
Https is an add-in so to speak. Try this before you create your url:
System.setProperty ("java.protocol.handler.pkgs",
"com.sun.net.ssl.internal.www.protocol");
// add the default security provider (again, in JSSE1.0.1)
int iap = java.security.Security.addProvider(new
com.sun.net.ssl.internal.ssl.Provider() );
dennisNote how the code overides the WL setting which overode the Sun setting.
Cameron Purdy
[email protected]
http://www.tangosol.com
WebLogic Consulting Available
"Brian Howell" <[email protected]> wrote in message
news:[email protected]...
>
The following code snippet works when executed outside of weblogic, butdoes
not work from within a weblogic servlet instance.
URL u = new URL("http://" + ipString + newString.toString());
URLConnection uc = u.openConnection();
BufferedReader in = new BufferedReader (newInputStreamReader(uc.getInputStream()));
>
String response = "", response2 = "";
while(response2 != null)
response = ((response2 = in.readLine()) == null) ? response : response +response2;
The response is quite big. When this code is executed from within aweblogic servlet instance,
in.readLine always returns a null right away. Yet a TCP/IP trace showsthat the packets are coming
back to my NT machine.
Other info:
Inside of weblogic:
u's handler is of type weblogic.net.http.Hanlder
uc is of type weblogic.net.http.HttpURLConnection
Outside of weblogic:
u's handler is of type sun.net.www.protocol.http.Handler
uc is of type sun.new.www.protocol.http.HttpURLConnection
Weblogic V4.51. Running on NT.
Attempted the following to no avail:
1. installing sp11
2. changing the security to permission java.security.AllPermission;
3. adding the following calls : uc.setRequestProperty("Content-Type","text/xml");
uc.setDoInput(true);
uc.setDoOutput(true);
4. Started playing around with modifying the java.protocol.handler.pkgssystem property,
but I shouldn't have to do this.
Any help would be appreciated.

Similar Messages

  • Refcursor not returning rows when called from non SQL*Plus IDE or other

    Hi all,
    I have a very weird problem.
    We have recently performed a minor upgrade to our oracle database and are now using:
    SQL> select * from v$version;
    BANNER
    Oracle Database 10g Enterprise Edition Release 10.2.0.5.0 - 64bi
    PL/SQL Release 10.2.0.5.0 - Production
    CORE    10.2.0.5.0      Production
    TNS for Linux: Version 10.2.0.5.0 - Production
    NLSRTL Version 10.2.0.5.0 - Production
    5 rows selected.We have a crystal report selecting data from a refcursor returned by a stored procedure.
    The stored procedure updates data when called as well as returning the refcursor in question.
    Observe the following test scenario executed in SQL*Plus:
    SQL> create table testtab (teststr varchar2(100));
    Table created.
    Elapsed: 00:00:00.00
    SQL> insert into testtab values ('X');
    1 row created.
    Elapsed: 00:00:00.00
    SQL> create or replace procedure testtabproc (p_listcur in out sys_refcursor)
      2  as
      3  begin
      4 
      5     open p_listcur for
      6        select *
      7          from testtab
      8         where teststr = 'X';
      9 
    10 
    11     update testtab
    12        set teststr = 'Y';
    13 
    14        commit;
    15 
    16  end;
    17  /
    Procedure created.
    Elapsed: 00:00:00.00
    SQL> declare
      2 
      3  v_list_cur sys_refcursor;
      4 
      5  type t_out_rec is record (teststr varchar2(100) );
      6 
      7 
      8 
      9  v_out_rec t_out_rec;
    10 
    11  v_rec_count   number := 0;
    12  v_count_limit number := 10000;
    13 
    14  begin
    15 
    16  dbms_output.put_line('about to call proc');
    17
    18  testtabproc(v_list_cur);
    19 
    20  dbms_output.put_line('about to fetch records');
    21 
    22  fetch v_list_cur into v_out_rec;
    23  while v_list_cur%found loop
    24     v_rec_count := v_rec_count + 1;
    25     if v_rec_count <= v_count_limit then
    26       dbms_output.put_line(v_out_rec.teststr);
    27     end if;
    28  fetch v_list_cur into v_out_rec;
    29  end loop;
    30  dbms_output.put_line('complete. selected '||v_rec_count||' records.');
    31 
    32 
    33  end;
    34  /
    about to call proc                                                                                                                 
    about to fetch records                                                                                                             
    X                                                                                                                                  
    complete. selected 1 records.                                                                                                      
    PL/SQL procedure successfully completed.
    Elapsed: 00:00:00.00
    SQL> select * from testtab;
    TESTSTR
    Y
    1 row selected.
    Elapsed: 00:00:00.00
    SQL> as you can see, the cursor returns data and the table is updated.
    now, our problem is with crystal and also when I use the same test case via another IDE like TOAD.
    No data is returned from the list but the table is still updated.
    We suspect that something is happening that is causing the table to be updated before the refcursor is opened, or at least before the predicates are applied.
    has anyone else encountered this problem before?

    Tubby wrote:
    WhiteHat wrote:
    nope - it works from sqlplus itermitantly (i.e. we always get the debug output but the cursor only sometimes fetches the rows).
    it is almost as if the commit is being executed before the cursor is opened.
    I still havn't been able to reproduce it except with the actual scenario that I am working with...Is the code you are dealing with exactly the same as the skeleton you've posted in your original post? Do you perhaps have a generic exception catcher in there somewhere (perhaps catching and hiding an ORA-01555) when the cursor is being fetched?
    Not that i expect it to make any difference, but i'm curious as to why you've declared your cursor as IN / OUT ?
    p_listcur in out sys_refcursor
    the code structure in the real example is almost identical to that test case I produced - the exception handler is only catering for no_data_found, all other errors should be raised as normal.
    edit: sorry I forgot to add - it's in/out because apparently that's what crystal reports needs in order to use the refcursor..... I'm not a crystal guy so I can't be any more specific than that sorry......
    Edited by: WhiteHat on Oct 11, 2010 9:34 AM

  • LocateRegistry.getRegistry() fails when called from Tomcat 5.5 servlet

    I'm trying to access a simple RMI server from a Tomcat 5.5 (Java 5) servlet. I get access exceptions having to do with java.util.logging.LoggingPermission. (The RMI server works fine with a simple command line Java app.)
    Is there some reason that calling getRegistry() from within a servlet should fail? Is there some reason that it should require LoggingPermission?
    I've modified the catalina.policy file to grant all permission to everything but I still get the same errors.
    Surely there is a way to make RMI calls from a servlet. Any suggestions on how to fix this? Thanks.

    show us the script

  • Java works stand alone does not when called from PL/SQL

    I have this piece of code, which works as a standalone program: It takes in the en_var and returns a path.
    But it wont work when called from a store procedure the line of code p = rt.exec("echo "+envar); returns a path as a standalone program returns null when called from a Oracle store procedure.
    Thanks for any help just going around and round in circles.
    import java.util.*;
    class translate
    public static String translatePath(String envar)
    Runtime rt = Runtime.getRuntime();
    int bufSize = 4096;
    byte buffer[] = new byte[bufSize];
    String path = null;
    Process p = null;
    String os = null;
    String name = null;
    String home = null;
    String dir = null;
    SecurityManager sm = null;
    int len = 0;
    try
    System.out.println("Calling echo "+envar);
    os = System.getProperty("os.name");
    name = System.getProperty("user.name");
    home = System.getProperty("user.home");
    dir = System.getProperty("user.dir");
    sm = System.getSecurityManager();
    p = rt.exec("echo "+envar);
    BufferedInputStream bis = new BufferedInputStream(p.getInputStream());
    while ((len = bis.read(buffer, 0, bufSize)) != -1)
    System.out.write(buffer, 0, len);
    path = new String(buffer);
    //p.waitFor();
    bis.close();
    return path;
    catch(Exception e)
    System.out.println("Exception "+e);
    return "ProcessProblem";
    //path = "/rims/live/log";

    Still cant get it to work, it doesnt fall over anymore, but when I input $PATH, it will output $PATH instead of the path for $PATH i.e /rims/live: What does your program output please:
    Here is my code:
    import java.io.*;
    import java.util.*;
    class translate
         public static String translatePath(String envar)
              Runtime rt = Runtime.getRuntime();
              Process p = null;
              String echoOutput = null;
              int len = 0;
              try
                   System.out.println("Calling echo "+envar);
                   p = rt.exec(new String[]{"/bin/echo",envar});
                   InputStreamReader isr = new InputStreamReader(p.getInputStream());
                   BufferedReader br = new BufferedReader(isr);
                   echoOutput = br.readLine();
                   br.close();
                   isr.close();
                   return echoOutput;
              catch(Exception e)
                   System.out.println("Exception "+e);
                   return "ProcessProblem";
              //path = "/rims/live/log";
    Thanks for all your help so far.
    Tony

  • JTextField update problem when called from PropertyChangeEvent

    Hi,
    I'm trying to create forms that can be dynamically loaded with Class.forname(formName).
    Those forms should always inherit some methods that make it easy to pass data to
    them and receive data from them. The idea is that the data comes from a table which
    sends a hashmap (String column/JTextField-name + String Value pairs) with firePropertyChanged
    as soon as a new row is seleceted. The JTextFields in the form are marked with setName("FieldName") that has to correspond to the name of the columns of the table.
    My problem is that I can't update the fields in my form when I'm calling getRow(HashMap)
    from within propertyChangeEvent but that's necessary to keep the forms flexible.
    JTextFieldName.setText(newText) just won't work. But it works when I call getRow(HashMap)
    from the constructor. SwingWorker and threads to update the form didn't help.
    I don't need to call pack() / update() / repaint() on the JFrame, do I ??
    update() / validate() / repaint() etc. didn't work on the JTextField themselves.
    Below is the code for one of the test-forms (just a JPanel that is inserted in a frame)
    with all of it's methods. Does anybody have a solution to this problem ??
    Thanks for taking time for that !!
    Benjamin
    * testTable.java
    * Created on 15. April 2004, 16:12
    package viewcontrol.GUI;
    * @author gerbarmb
    import javax.swing.*;
    import java.awt.*;
    import java.beans.*;
    import java.util.*;
    public class testTable extends javax.swing.JPanel
              implements
                   java.awt.event.KeyListener,
                   java.beans.PropertyChangeListener {
          * public static void main(String[] argv) { testTable tt = new testTable();
          * JFrame jf = new JFrame(); jf.setContentPane(tt); jf.setVisible(true); }
         /** Creates new customizer testTable */
         public testTable() {
              initComponents();
              HashMap hm = new HashMap();
               * Only for debugging, to see that the method getRow() works when
               * called from the constructor.
               hm.put("ttext", "TEst");
               this.getRow(hm);
          * This method is called from within the constructor to initialize the form.
          * WARNING: Do NOT modify this code. The content of this method is always
          * regenerated by the FormEditor.
         private void initComponents() {//GEN-BEGIN:initComponents
              java.awt.GridBagConstraints gridBagConstraints;
              jLabel1 = new javax.swing.JLabel();
              textIn = new javax.swing.JTextField();
              jLabel2 = new javax.swing.JLabel();
              intIn = new javax.swing.JTextField();
              jLabel3 = new javax.swing.JLabel();
              numIn = new javax.swing.JTextField();
              jLabel4 = new javax.swing.JLabel();
              dateIn = new javax.swing.JTextField();
              jLabel5 = new javax.swing.JLabel();
              dateTimeIn = new javax.swing.JTextField();
              jLabel6 = new javax.swing.JLabel();
              jCheckBox1 = new javax.swing.JCheckBox();
              keepValues = new javax.swing.JCheckBox();
              jButton1 = new javax.swing.JButton();
              setLayout(new java.awt.GridBagLayout());
              jLabel1.setText("Text");
              add(jLabel1, new java.awt.GridBagConstraints());
              textIn.setName("ttext");
              textIn.setPreferredSize(new java.awt.Dimension(100, 21));
              textIn.addActionListener(new java.awt.event.ActionListener() {
                   public void actionPerformed(java.awt.event.ActionEvent evt) {
                        textInActionPerformed(evt);
              gridBagConstraints = new java.awt.GridBagConstraints();
              gridBagConstraints.gridwidth = 2;
              add(textIn, gridBagConstraints);
              jLabel2.setText("Integer");
              add(jLabel2, new java.awt.GridBagConstraints());
              intIn.setName("tint");
              intIn.setPreferredSize(new java.awt.Dimension(50, 21));
              add(intIn, new java.awt.GridBagConstraints());
              jLabel3.setText("Number");
              add(jLabel3, new java.awt.GridBagConstraints());
              numIn.setName("tnum");
              numIn.setPreferredSize(new java.awt.Dimension(50, 21));
              add(numIn, new java.awt.GridBagConstraints());
              jLabel4.setText("Date");
              gridBagConstraints = new java.awt.GridBagConstraints();
              gridBagConstraints.gridx = 0;
              gridBagConstraints.gridy = 1;
              add(jLabel4, gridBagConstraints);
              dateIn.setName("tdate");
              dateIn.setPreferredSize(new java.awt.Dimension(50, 21));
              gridBagConstraints = new java.awt.GridBagConstraints();
              gridBagConstraints.gridx = 1;
              gridBagConstraints.gridy = 1;
              add(dateIn, gridBagConstraints);
              jLabel5.setText("DateTime");
              gridBagConstraints = new java.awt.GridBagConstraints();
              gridBagConstraints.gridx = 2;
              gridBagConstraints.gridy = 1;
              add(jLabel5, gridBagConstraints);
              dateTimeIn.setName("tidate");
              dateTimeIn.setPreferredSize(new java.awt.Dimension(80, 21));
              gridBagConstraints = new java.awt.GridBagConstraints();
              gridBagConstraints.gridy = 1;
              add(dateTimeIn, gridBagConstraints);
              jLabel6.setText("Bit");
              gridBagConstraints = new java.awt.GridBagConstraints();
              gridBagConstraints.gridy = 1;
              add(jLabel6, gridBagConstraints);
              jCheckBox1.setName("tbit");
              gridBagConstraints = new java.awt.GridBagConstraints();
              gridBagConstraints.gridy = 1;
              add(jCheckBox1, gridBagConstraints);
              keepValues.setText("keep values");
              gridBagConstraints = new java.awt.GridBagConstraints();
              gridBagConstraints.gridx = 7;
              gridBagConstraints.gridy = 3;
              add(keepValues, gridBagConstraints);
              jButton1.setText("Send");
              jButton1.addActionListener(new java.awt.event.ActionListener() {
                   public void actionPerformed(java.awt.event.ActionEvent evt) {
                        jButton1ActionPerformed(evt);
              gridBagConstraints = new java.awt.GridBagConstraints();
              gridBagConstraints.gridx = 7;
              gridBagConstraints.gridy = 2;
              add(jButton1, gridBagConstraints);
         }//GEN-END:initComponents
         private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton1ActionPerformed
              sendRow();
         }//GEN-LAST:event_jButton1ActionPerformed
         private boolean sendRow() {
              java.util.HashMap hm = new java.util.HashMap();
              Component[] cs = this.getComponents();
              for (int i = 0; i < cs.length; i++) {
                   if (((Component) cs).getName() != null) {
                        if (cs[i] instanceof JCheckBox) {
                             String value = ((JCheckBox) cs[i]).isSelected() ? "1" : "0";
                             hm.put(cs[i].getName(), value);
                        } else if (cs[i] instanceof JCheckBox) {
                             hm.put(cs[i].getName(), ((JTextField) cs[i]).getText());
              } // end for
              firePropertyChange("rowChanged", null, hm);
              return true;
         private void getRow(java.util.HashMap hm) {
              //if (! this.keepValues.isSelected()) {
              Component[] cs = this.getComponents();
              for (int i = 0; i < cs.length; i++) {
                   if (cs[i].getName() != null && hm.containsKey(cs[i].getName())) {
                        Component component = cs[i];
                        String componentName = cs[i].getName();
                        String componentValue = (String) hm.get(component.getName());
                        if (cs[i] instanceof JTextField) {
                             // output for debugging
                             System.out.println("Setting " + cs[i].getName() + " = "
                                       + componentValue);
                             ((JTextField) component).setText(componentValue);
                        } else if (cs[i] instanceof JCheckBox) {
                             // output for debugging
                             System.out.println("JCheckBox found");
                             JCheckBox cb = (JCheckBox) component;
                             boolean selected = (componentValue == null ? false : (componentValue.equals("1")
                                       ? true
                                       : false));
                             ((JCheckBox) component).setSelected(selected);
              } // end for
              /* Uncomment this code snippet to retrieve the text that has been set
              for the components (that means JTextFields)
              This is just for debugging !
              Component[] cs = this.getComponents(); for (int i = 0; i < cs.length;
              i++) { if (cs[i].getName() != null) { if (cs[i] instanceof
              JTextField) { System.out.println("Value of " +cs[i].getName() + " = " +
              ((JTextField) cs[i]).getText()); } } } // end for
         private void textInActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_textInActionPerformed
         }//GEN-LAST:event_textInActionPerformed
         public void keyPressed(java.awt.event.KeyEvent e) {
              if (e.getKeyCode() == java.awt.event.KeyEvent.VK_ENTER) {
                   sendRow();
         public void keyReleased(java.awt.event.KeyEvent e) {
         public void keyTyped(java.awt.event.KeyEvent e) {
         public void propertyChange(java.beans.PropertyChangeEvent evt) {
              if (evt.getPropertyName().equals("newRow")) {
                   final PropertyChangeEvent finalEvt = evt;
                   Runnable makeChanges = new Runnable () {
                        public void run() {
                             getRow((java.util.HashMap) finalEvt.getNewValue());
         // Variables declaration - do not modify//GEN-BEGIN:variables
         private javax.swing.JTextField dateIn;
         private javax.swing.JTextField dateTimeIn;
         private javax.swing.JTextField intIn;
         private javax.swing.JButton jButton1;
         private javax.swing.JCheckBox jCheckBox1;
         private javax.swing.JLabel jLabel1;
         private javax.swing.JLabel jLabel2;
         private javax.swing.JLabel jLabel3;
         private javax.swing.JLabel jLabel4;
         private javax.swing.JLabel jLabel5;
         private javax.swing.JLabel jLabel6;
         private javax.swing.JCheckBox keepValues;
         private javax.swing.JTextField numIn;
         private javax.swing.JTextField textIn;
         // End of variables declaration//GEN-END:variables

    The problem of the change in the form not being comitted is that
    I forgot SwingUtilities.invokeLater(makeChanges); in the bottom
    part in public void propertyChange(java.beans.PropertyChangeEvent evt)
    after having created a new Runnable.
    Changes to the UI often have to be comitted by SwingUtitlities.invokeLater()
    though I don't know that much about Swing yet.
    Thanks to everybody who tried to solve that problem.
    Benjamin

  • SESSION EXPIRED and CPU Utilisation is 100% when called from Pro*C

    Dear Colleague
    We are having a production system developed using Pro*c and PL/SOL packages in HP Unix.
    The system is doing the following,
    A file will be decoded using Proc and data will be load into 3 temporary tables (permanent table used for temporary) using SQLLoader. Then it calls a PL/SQL package which will process the data in the temporary tables and will store the summary information in Transaction table and will returns a unique id to the calling Pro*c module. The whole process is completed in a single process/oracle session.
    The PL/SQL package, join the 3 Temporary tables and retrieve the data into an Oracle object(Collection) and process it. Then the processing summary will be loaded into Transaction table and return the Primary key.
    Now the problem is, when the temporary tables are loaded with more than 200,000 rows, in some cases the system is running for hours before it finish. And during the process the session shows as EXPIRED in the database and CPU utilization for the respective ProcessId in Unix is almost 100%. Then after a while the session comes alive and finishes the process.
    And for some other cases, with same row count, the entire process finished in seconds.
    If the same process (PL/SQL package) when run directly using a separate session inside the database(and the temporary tables are still available), rather than calling from Pro*c, it finishes in seconds, where it took hours when called from Pro*c.
    It will be highly appreciated, if anyone let me know, what actually is wrong. whether it is the resource allocation or should there any known problem in calling huge PL/SQL packages from Pro*C.
    we are using Oracle 10g and HP-UX ed42 B.11.31 U System.
    regards
    Sajid

    Dear Colleague
    I just want to rephrase the problem again.
    We have a Pro*C application. This will read the binary file and dump the data in ascii format to a data file. Then, within from the pro*C, 14 Dynamic tables will be created using EXEC SQL EXECUTE IMMEDIATE statement, each having almost a maximum of 45 columns. Also, created INDEXES to the tables in the same way from Pro*C.
    And Control file will be created as follows
    OPTIONS (SILENT=(FEEDBACK)) UNRECOVERABLE
    LOAD DATA
    INTO TABLE FILENAME_BCI_USED
    FIELDS  TERMINATED BY '|'
    TRAILING NULLCOLSColumns Listed
    Then Sql loader will be called using system commands (from pro*C itself) to loead the data into the table, as follows.
       sprintf(syscommand,"sqlldr %s CONTROL=%s DATA=%s log=%s rows=5000 direct=true", glb_connect_string,ctl_file,data_file, log_file );
       ret_value = system(syscommand);data loaded successfully.
    Then the Pro*C will call a PL/SQL package for processing the data.
    The PL/SQL package, to process the data, dynamically construct the below query and use it for the reference cursor to retrieve data and load into a collection.
    v_sql_query := 'SELECT '|| '/*+ index(b '||p_File_Name ||'_1) index(b '||p_File_Name ||'_2) index(s '||p_File_Name ||'_3) index(s '||p_File_Name ||'_4) index(s '||p_File_Name ||'_5) index(s '||p_File_Name ||'_6) index(e '||p_File_Name ||'_7)*/'   || '
             iot_call_record(b.rec_no ,
             b.rec_type ,
             substr(b.field1,1,15) ,
             nvl(substr((select s0.field1 from ' || SU_Table ||
                         ' s0 where s0.rec_no = s.rec_no and s0.sub_rec_type = 203) ,1, 25),
                                 substr(b.field2, 1, 25)),
             substr(b.field3,1,25) ,
             b.field4 ,
             b.field5 ,
             s.field1 ,
             s.field2 ,
             (select sum(s1.field1) from ' || SU_Table ||
                         ' s1 where s1.field2 = s.rec_no and trim(s1.field2) = ''00'' ) ,
             s.field3 ,
             e.field2/power(10,e.field3) ,
             s.field4 ,
             s.field5 ,
             s.field6 ,
             s.field7 ,
             s.field8 ,
             s.field9 ,
             s.field10 ,
             nvl(b.field6,''F'') ,
             NULL ,
             s.field11 ,
             (select sum(s2.field11) from ' || SU_Table || ' s2 where s2.rec_no = s.rec_no)  ,
             NULL)
          FROM   ' || BCI_Table || ' b , ' || SU_Table || ' s, ' || EXCH_Table ||
                         ' e WHERE  b.filename = s.filename
            AND    b.rec_no = s.rec_no
            AND    (b.field7 = 0 OR b.field7 = 1)
            AND    TRIM(s.chg_type) = ''00''
            AND    (s.field1 = e.field2_Code )
            AND    not(s.field4 = ''V'' and s.field12 > 1)
            AND    not(s.field4 = ''W'' and s.field12 > 1)
            AND    not(b.rec_type = 75 and s.field12 > 1)
            AND    not(b.rec_type = 75 and s.field4 =''D'')
            AND    s.sub_rec_type <> 203
            and    (s.field12 = 1 or b.rec_type not in (20,30))';
        OPEN cur_call_events FOR v_sql_query;
        LOOP
          g_tab_call_events.DELETE;
          --      Execute immediate v_sql_query bulk collect into g_tab_call_events;
          FETCH cur_call_events BULK COLLECT
            INTO g_tab_call_events limit 5000;
          EXIT WHEN g_tab_call_events.COUNT = 0;
          BEGIN
            SAVEPOINT Block_Begin;
            process_records(p_file_name,
                            g_tab_call_events);
          EXCEPTION
            WHEN Severe_Error THEN
              Write_error('S');
              ROLLBACK TO Block_Begin;
            WHEN Warning THEN
              Write_error('W');
            WHEN NO_DATA_FOUND THEN
              Write_error('S');
              ROLLBACK TO Block_Begin;
          END;
        END LOOP;And the above module is behaving strangely.
    With almost 150K or more rows in BCI_Table & SU_Table each and less than 10 rows in EXCH_Table, the application takes more than 100 minutes to complete the process.
    When we checked the session activity, it is showing the same query for a very long time.
    Where as files with 100K or less rows are getting processed in a minute.
    And the performance for 150K+ rows is inconsistent, that when we isolate the package and run it directly calling from oracle, it is getting executed in less than 4 minutes. Whereas it takes 100+ minutes from Pro*C.
    The execution plan for the above query is given below
                                  Object Owner     Object Name          Cost     Cardinality     Bytes     CPU cost     IO cost
    SELECT STATEMENT, GOAL = HINT: FIRST_ROWS                              494     2497          494406     143334576     483
    TABLE ACCESS BY INDEX ROWID               SCHEMA1          FILENAME_SU_USED     4     1          21     30610          4
      INDEX RANGE SCAN                    SCHEMA1          FILENAME_3          3     1          21764     3
    SORT AGGREGATE                                                  1     13          
      INDEX RANGE SCAN                    SCHEMA1          FILENAME_5          3     1          13     22064          3
    SORT AGGREGATE                                                  1     7          
      TABLE ACCESS BY INDEX ROWID               SCHEMA1          FILENAME_SU_USED     4     1          7     30706          4
       INDEX RANGE SCAN                    SCHEMA1          FILENAME_3          3     1          21764     3
    CONCATENATION                                   
      HASH JOIN                                                  355     2496          1307904     103068617     347
       TABLE ACCESS FULL                    SCHEMA1          FILENAME_EXCH_USED     3     2          26     35987          3
       HASH JOIN                                                  352     2496          813696     96532618     344
        VIEW                         SYS          VW_NSO_1          4     20          880     12549326     3
         HASH UNIQUE                                             4     20          220     12549326     3
          TABLE ACCESS FULL                    SCHEMA2          IOT_SERVICE_MATRIX     3     20          220     45207          3
        HASH JOIN                                                  347     15850          2234850     76145180     341
         TABLE ACCESS FULL                    SCHEMA1          FILENAME_SU_USED     130     16584          1111128     33625872     127
         TABLE ACCESS FULL                    SCHEMA1          FILENAME_BCI_USED     217     23757          1758018     31405896     214
      NESTED LOOPS                                                  139     1          198     40265959     136
       NESTED LOOPS                                                  135     1          154     27716633     133
        NESTED LOOPS                                             132     1          141     27680646     130
         TABLE ACCESS FULL                    SCHEMA1          FILENAME_SU_USED     129     1          67     27655992     127
         TABLE ACCESS BY INDEX ROWID          SCHEMA1          FILENAME_BCI_USED     3     1          74     24654          3
          INDEX RANGE SCAN                    SCHEMA1          FILENAME_1          2     1          15493     2
        TABLE ACCESS FULL                    SCHEMA1          FILENAME_EXCH_USED     3     1          13     35987          3
       VIEW                              SYS          VW_NSO_1          4     1          44     12549326     3
        SORT UNIQUE                                                  4     20          220     12549326     3
         TABLE ACCESS FULL                    SCHEMA2          IOT_SERVICE_MATRIX     3     20          220     45207          3Regards
    Sajid
    Edited by: user12039545 on Jul 11, 2010 12:05 AM
    Edited by: user12039545 on Jul 11, 2010 12:15 AM
    Edited by: user12039545 on Jul 11, 2010 12:32 AM
    Edited by: user12039545 on Jul 11, 2010 12:34 AM
    Edited by: user12039545 on Jul 11, 2010 12:37 AM

  • Stored Procedure Does Not Run Properly When Called From Portlet

    We have a simple Java portlet that calls a PL/SQL stored procedure which we wrote. The stored procedure sends a large number of emails to users in our corporation using the "utl_smtp" package. The stored procedure returns a count of the emails back to the Java portlet when it's finished. This number is displayed in the portlet.
    Our problem:
    The stored procedure functions as expected when run from a PL/SQL block in SQL*Plus, and the Java portlet calls the procedure properly when sending out a smaller number of emails (Less than 200 usually). When we get into a higher number of emails the procedure hangs when called from the portlet, but it STILL functions properly from SQL*Plus. It does not return the number of emails sent
    and the Java portlet is unable to return a SQLException. Also, we have noticed that emails are sent at a much slower pace from the stored procedure when it's called from the portlet.

    Any Ideas?

  • HR_INFOTYPE_OPERATION not working when called from Dynamic action

    Hi ,
           Senario  : I would like to execute a form from dynamic action which
    creates a record in 0015 (Additional payment IT) .
           I have writen the code as shown below am using FM HR_INFOTYPE_OPERATION
    . When i execute the program from se38 it is creating a record, however it is
    not created when it is called from dynamic action..when i debugged the code in
    inside the FM HR_INFOTYPE_OPERATION there is a FM HR_MAINTAIN_MASTERDATA where
    they are using call dialog (statement) and
    sy-oncom = 'N'   when called from Dynamic action and
    sy-oncom = 'S'   when called executed directly.
    I tried to change the sy-oncom to S while run from Dynamic action it created
    the record.
    So Can anyone explain me abt sy-oncom and how can i resolve the issue..
    code..
    REPORT ZHRPYENH01 .
    perFORM TERMIATION_9000.
    INCLUDE DBPNPMAC.
          FORM Termiation_9000                                          *
    FORM TERMIATION_9000.
    INFOTYPES : 0015.
    *data : i .
    *i ='c'.
    *break-point.
    *message i000(000) with i.
      TABLES : PRELP.
      DATA : P9000 TYPE PA9000." with header line.
      DATA : P0000 TYPE STANDARD TABLE OF  P0000 WITH HEADER LINE.
    DATA : P0015 TYPE STANDARD TABLE OF  P0015 WITH HEADER LINE.
      DATA : HIRE_DATE  LIKE SY-DATUM,
             TERM_DATE  LIKE SY-DATUM.
      DATA : MOLGA LIKE T500L-MOLGA VALUE '25',
             SEQNR LIKE PC261-SEQNR.
      DATA : RGDIR TYPE STANDARD TABLE OF PC261 WITH HEADER LINE.
      DATA : ACTUAL_PERIOD LIKE PA9000-RETENTION.
      DATA : PNP-SW-FOUND TYPE SY-SUBRC ,
             PNP-SY-TABIX TYPE SY-TABIX.
      DATA : TER_PERNR LIKE PA0001-PERNR.
      DATA : REF_PERNR LIKE PA0001-PERNR.
      data : key type BAPIPAKEY.
      data : payed_amount type p0015-BETRG.
    data : future_payment_amount type p0015-BETRG.
    data : p0002 like pa0002.
      types : begin of t_deduction ,
              deducation_date like p0015-begda,
              future_payment_amount type p0015-BETRG.
      types : end of t_deduction.
    data :  future_deduction type standard table of t_deduction with
    *header line.
      data :  future_deduction type  t_deduction .
    data : RETURN type  BAPIRETURN1.
    *data : deduction_p0015 like standard table of p0015 with header line.
    data : deduction_p0015 like p0015 .
    xxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxx
    ****Prepare 0015 data for deduction
    *deduction for payed amount
    clear deduction_p0015.
    *refresh deduction_p0015.
    deduction_p0015-pernr = REF_PERNR.
    *deduction_p0015-pernr = TER_PERNR.
    deduction_p0015-lgart = 'M120'.
    deduction_p0015-begda = sy-datum + 1 .
    deduction_p0015-endda = sy-datum + 1 .
    deduction_p0015-BETRG = payed_amount.
    deduction_p0015-WAERS = 'SGD'.
    deduction_p0015-ZUORD =  TER_PERNR.
    *append deduction_p0015.
    **deduction for future payment amount
    *loop at future_deduction.
    *clear deduction_p0015.
    *deduction_p0015-pernr = REF_PERNR.
    **deduction_p0015-pernr = TER_PERNR.
    *deduction_p0015-lgart = 'M120'.
    *deduction_p0015-begda = FUTURE_DEDUCTION-DEDUCATION_DATE.
    *deduction_p0015-endda = FUTURE_DEDUCTION-DEDUCATION_DATE.
    *deduction_p0015-BETRG = future_deduction-future_payment_amount.
    *deduction_p0015-WAERS = 'SGD'.
    *deduction_p0015-ZUORD =  TER_PERNR.
    *append deduction_p0015.
    *endloop.
    Create a deduction wage type in 0015 for the employee
    break-point.
    CLEAR RETURN.
    CALL FUNCTION 'BAPI_EMPLOYEET_ENQUEUE'
      EXPORTING
        NUMBER              = REF_PERNR
        VALIDITYBEGIN       = '18000101'
    IMPORTING
       RETURN              = return
    if not return is initial.
    message E000(000) with
    'Referred Employee could not be locked for referal  payment deducation,
    please try after some time'.
    endif.
    CALL FUNCTION 'HR_INFOTYPE_OPERATION'
      EXPORTING
        INFTY                  = '0015'
        NUMBER                 = REF_PERNR
       SUBTYPE                = 'M120'
      OBJECTID               =
      LOCKINDICATOR          =
       VALIDITYEND            = SY-DATUM
       VALIDITYBEGIN          = SY-DATUM
      RECORDNUMBER           =
        RECORD                 = deduction_p0015
        OPERATION              = 'COPY'
      TCLAS                  = 'A'
       DIALOG_MODE            = '2'
      NOCOMMIT               =
      VIEW_IDENTIFIER        =
      SECONDARY_RECORD       =
    IMPORTING
       RETURN                 = return
       KEY                    = key
    break-point.
    COMMIT WORK.
    if not return is initial.
    *return-TYPE
    *ID
    *NUMBER
    *MESSAGE
    message I000(000) with return-MESSAGE.
    endif.
    CALL FUNCTION 'BAPI_EMPLOYEET_DEQUEUE'
      EXPORTING
        NUMBER              = REF_PERNR
        VALIDITYBEGIN       = '18000101'
    IMPORTING
       RETURN              = return
    xxxxxxxxxxxxxxxxxxxx
    xxxxxxxxxxxxxxxxx
    Thanks and regards
    -Senthil Bala
    Message was edited by: senthil bala

    Hi Senthil
    Why at all U want a subroutine to create a record in IT0015 through Dynamic action.There are some standard codes available to update infotypes.
    Let me give U an example
    14     9CON     BETRG     4     2     I     INS,0015 This will create a record in IT0015 when IT0014 is updated with Wagetype 9CON
    14     9CON     BETRG     4     3     W     P0015-LGART='5400' Set wagetype for IT0015(Here U can use a subroutine call to set the wagetype)
    14     9CON     BETRG     4     4     W     P0015-BETRG=P0014-BETRG set amount for IT0015(Here U can use a subroutine call to get the amount)
    14     9CON     BETRG     4     5     W     P0015-BEGDA=P0014-ENDDA set the dates(Here U can use a subroutine call to set the dates)
    Hope this will help U.
    Please award points if helpful

  • Query response time takes more time when calling from package

    SELECT
    /* UTILITIES_PKG.GET_COUNTRY_CODE(E.EMP_ID,E.EMP_NO) COUNTRY_ID */
    (SELECT DISTINCT IE.COUNTRY_ID
    FROM DOCUMENT IE
    WHERE IE.EMP_ID =E.EMP_ID
    AND IE.EMP_NO = E.EMP_NO
    AND IE.STATUS = 'OPEN' ) COUNTRY_ID
    FROM EMPLOYEE E
    CREATE OR REPLACE PACKAGE BODY UTILITIES_PKG AS
    FUNCTION GET_COUNTRY_CODE(P_EMP_ID IN VARCHAR2, P_EMP_NO IN VARCHAR2)
    RETURN VARCHAR2 IS
    L_COUNTRY_ID VARCHAR2(25) := '';
    BEGIN
    SELECT DISTINCT IE.COUNTRY_ID
    INTO L_COUNTRY_ID
    FROM DOCUMENT IE
    WHERE IE.EMP_ID = P_EMP_ID
    AND IE.EMP_NO = P_EMP_NO
    AND IE.STATUS = 'OPEN';
    RETURN L_COUNTRY_ID;
    EXCEPTION
    WHEN OTHERS THEN
    RETURN 'CONT';
    END;
    END UTILITIES_PKG;
    when I run above query its coming in 1.2 seconds.but when comment subquery and call from package its taking 9 seconds.query returns more than 2000 records.i am not able to find the reason why it is taking more time when calling from package?

    You are getting a different plan when you run it as PL/SQL most likely. Comment your statement:
    SELECT /* your comment here */then find them in V$SQL and get the SQL IDs. You can then use DBMS_XPLAN.DISPLAY_CURSOR to see what is actually happening.
    http://www.psoug.org/reference/dbms_xplan.html

  • Environment.Exit hangs when called from an application domain exception handler

    I've implemented a handler for exceptions not thrown in the main GUI thread of my C# WinForms application, as follows:
        AppDomain.CurrentDomain.UnhandledException  += OnUnhandledExceptionThrown;
    This handler is called from a background thread. The last statement in this handler is a call to
    Environment.Exit with the application exit code. However, the application hangs in this call. From within Visual Studio, it hangs and I'm unable to break the application; I have to use Task Manager to terminate Visual Studio. Environment.Exit
    works fine when called from the unhandled exception handler for the GUI thread. Is there a better way to terminate the application in the context of an unhandled exception thrown by a background thread?

    Are you just trying to avoid a crash? Environment.Exit can cause deadlocking if exiting in the wrong kind of scenario; if you're just trying to avoid a crash, use
    GetCurrentProcess with
    TerminateProcess to terminate your own process.  It skips the notification phases that Environment.Exit uses which prevents the common deadlock scenarios.
    WinSDK Support Team Blog: http://blogs.msdn.com/b/winsdk/

  • Advanced table:not able to view more than 10 rows when called from workflow

    Hi everyone,
    I'm calling a page that contains advanced table and its controller class from two places.
    First one is from a inquiry form, when this page is called it works fine. when there are more than 10 rows, first 10 are shown on page render and when we click on Next link, other rows are shown. This is becuase I have given the records displayed property on adavanced table = 10. I'm fine till here.
    Second one is I'm calling this page again from a workflow notificaiton. There is a link called view more details on the workflow notification , click of this link will open the page with 10 records displayed. But when user tries to click on Next it doesn't work. It just doesn't refresh.
    Its very wierd,. not able to understand what could be wrong when calling from wf notificiton. Its the same page and conroller code used in both the places.
    Please help me!!
    Thanks
    Sunny

    Thanks for your response Kristofer. You are correct, there was a difference in the parameters and the issue is resolved now.

  • Making an RFC call from within the VM container

    Hi all,
    since a long time I am searching for information on how to implement an RFC call from within the VMC. The problem is that we have implemented several (p)functions in ABAP and we need to implement them in JAVA.
    Now I am searching for a way how to just call the already existing pfunctions???
    Is it possible to read CRM DB tables too?
    Thank you in advance
    Boris

    Hi Freeto,
    This may be due to the Network Failures.
    If you have triggered a job then because of the Network fluctuations the system may not respond properly and cannot execute the job.
    So, this is the cause for the failure.
    Hope you understood.
    With Regards,
    Ravi Kanth

  • Set the default field value to transaction code field, when calling from WD

    Hi all,
    Can we pass the value in a input field of a standard transaction calling from WD application. Suppose we are calling a transaction VA03 in an external window, then how will be pass the value in the VBAK_VBELN screen field.
    Is there any way to pass the value to this transaction field. I have also tried out to set the parameter ID 'AUN' for VA03 transaction VBELN field. But it did not work for me.
    Is there any way to set the default field value to transaction code field, when calling from WD?
    Please suggest, if anyone have any idea.
    Thanks
    Sanket

    Hi,
    I am using the below code to open a standard transaction. It will help you to explain my point more easily.
    DATA: url TYPE string,
              host TYPE string,
              port TYPE string.
    *Call below method to get host and port
      cl_http_server=>if_http_server~get_location(
         IMPORTING host = host
                port = port ).
    *create URL
      CONCATENATE 'http'
      '://' host ':' port
      '/sap/bc/gui/sap/its/webgui/?sap-client=&~transaction=' 'VA03'
       INTO url.
    *get the window manager as we are opening t code in external window.
      DATA lo_window_manager TYPE REF TO if_wd_window_manager.
      DATA lo_api_component TYPE REF TO if_wd_component.
      DATA lo_window TYPE REF TO if_wd_window.
      lo_api_component = wd_comp_controller->wd_get_api( ).
      lo_window_manager = lo_api_component->get_window_manager( ).
    call the url which we created above
      lo_window_manager->create_external_window(
      EXPORTING
      url = url
      RECEIVING
      window = lo_window ).
      lo_window->open( ).
    Note*
    One more query I want to add to this thread, that is there any possibility to call a custom transaction as well?

  • Subtemplate footer is not coming when calling from the main template

    Hi All,
    The footer from the subtemplate is not coming in the output when calling from the main template. Does anybody worked on the subtemplate?
    If the same footer is put in the main template, it is displaying.
    Please respond as this is a critical issue for us.
    Thanks,
    Ambadas

    Hi Tim,
    Thanks for your reply. Here is syntax which I got from the Oracle BI Publisher blog. And this is to just test locally.
    http://blogs.oracle.com/xmlpublisher/2006/04/11?import:file:///C:/temp/HeaderFooter.rtf
    <?import:file:///d:/test/GEPOPRINT_GER_GER.rtf?>
    <?import:file:///d:/test/GEPOPRINT_US.rtf?>
    <?for-each@section:G_HEADERS?>
    <?if:POH_REPORT_NAME='GER PO w/GERMAN Data'?>
    <?call-template:PO_GERMAN?>
    <?end if?>
    <?if:POH_REPORT_NAME='US Purchase Order'?>
    <?call-template:PO_US?>
    <?end if?>
    <?End for-each?>
    And I don't have any footers in the main template but in the subtemplate I have the respective footers. If you want, I can send all the RTF's to you directly.
    Let me know.
    Thanks,
    Ambadas

  • Crystal Reports 2008 fails when called from e Web Service under 64bit OS

    I have discovered that Crystal Reports 2008 doesn't work when called from a Web Service running under 64bit Windows platforms (in my case Windows 2003 Server and Windows XP 64bit); practically no object is instantiated. I've tried several solutions without success.
    Before creating a wrapper component to use under COM+, is there anybody who has a better and cheaper solution than creating another component to wrap CR 2008 ?

    Hi Sergio,
    Before I mark this post as assumed answered I would just like to say and re-iterate that at this time there is no one answer and we fully understand your concerns. As you know in CR 6.0 it came in 16 and 32 bit versions because at the time 32 bit was relatively new but 16 bit was the norm. This is also true for 32 to 64 bit, 32 is the norm and 64 bit is relatively new. We know and are well aware 64 bit is the future and we are working as quickly as we can to move in that direction. Because of the complexity of the Product it's not simply a matter of re-compiling all of our dll's in 64 bit format. The core of our data connectivity with our database drivers which are dependant on third party clients must also need to support 64 bit modes. This as well as Printer drivers also need to be 64 compatable, there are a multitude of dependencies that we rely on that must add 64 bit support. As a programmer you are well aware of the issues around Thunking back and forth between 32 to 64 bits, it can cause delays and potentially loss of data which is a whole other issue. Not to mention also that we would have to ship both versions potentially doubling the size of the distribution packages or doubling the size of the dll's to have the ability to work in both modes. Relatively speaking of course, it would not be double the size but the variables would need to be able to allocate 32 or 64 memory blocks.
    The other option is to produce 2 separate versions, this alone is a massive project. Any issue would need to be fixed in separate code streams.
    So I'm sure you can see it's not simply a matter of saying yes we support 64 bit. It's a massive project that is going to take time to do and we have to wait for the third party drivers to commit also.
    Visual Studio .NET 2005 and 2008 is the only option if you want true 64 bit but you will be limited on what DB's you can support and export formats you can export to. They are the only drivers we did convert to 64 bit.
    Thank you for your understanding
    Don

Maybe you are looking for

  • My N8 is dead. 'What would you do with it ?'

    Well so far my N8 adventure. After daily irritations of Nokia Messaging not 'push'ing my e-mail. My N8 suddenly became non-responsive and then went dark. And now it's dead. Even hard reset (key combination) doesn't work anymore.

  • Accessing ressources (css,images, scripts...) in portal archive via URL?

    Hello! I have created a par file with the following PAR-Archive: *.par   ¦   +---meta-inf                Automatically generated.   ¦   ¦                           All files and folders in the root folder are deployed as public. This usually includes

  • How to access super of enclosing class from inner class?

    Hello, I'd like to access Base.foo() from inner class in overridden Improved.foo(), but seem unable: public class InnerSuper {      public static class Base {           protected int foo() {                return 1;      public static class Improved

  • CWB: Task Access

    Hello, Has anyone had any luck implementing task access in CWB? We require one of the tasks - Set Budget - to be available only to our 10 senior managers in the entire organization while other tasks (Allocate Compensation, Manager Approvals etc.) rem

  • Remove whitespace

    Thank you for every one for the help but my probleme still does not resolved, because when i try to use the program with a full content of the file it does not work. i attach the (Lv1)origal , and (Lv2) i did it manually. and also i attach the progea