Sun C++ versus GNU C++ on integer code.

Hello,
I've been always wondering why so much people praise Sun C++ for generating highly optimized code and why I'm never able to get my project working faster when being compiled by Sun C++ in comparison with GNU C++. I'm testing MICO and nbench2 and it looks like Sun C++ generates slower integer code while faster floating point code. Is there any way how to make Sun C++ generate faster integer code? Please see [http://developmentonsolaris.wordpress.com/2010/03/06/sun-c-versus-gnu-c-never-ending-wonder-just-resolved/] for more information.
Thanks,
Karel

Try some of these options, IME they are probably most likely to help:
-fast -xprefetch -xprefetch_level=3 -xprefetch_auto_type=indirect_array_access -xipo=2 -xdepend=yesSome others that could help, depending on your code:
-xunroll
-xpagesize (and all its subtypes)
-xalias_level
You'd need to experiment to find out.
Of interest is that some algorithms run faster with inlining and prefetching disabled. Algorithms that are extremely register-intensive can sometimes run faster with no inlining or prefetching because both those optimizations increase the use of registers for any source code. FFTW is one of these - it can run 30 or 40% faster with inlining and prefetching disabled.
Reference:
[http://docs.sun.com/app/docs/doc/820-7599/bkana?a=view|http://docs.sun.com/app/docs/doc/820-7599/bkana?a=view]

Similar Messages

  • How does sun cc support GNU C?

    I fail to build theora on solaris_x86, it seems some it does not support GNU C style.
    $cc -V
    cc: Sun C 5.8 Patch 121016-02 2006/03/31
    usage: cc [ options] files. Use 'cc -flags' for details
    How can I deal with this situation,
    - Waiting for new complier
    - Write patch for theora(Do not know how to, any idea?)
    Sample code are:
    static const __attribute__ ((aligned(8),used)) ogg_int64_t V128 = 0x0080008000800080LL;
    __asm__ __volatile__ (
    " .balign 16 \n\t"
    " pxor %%mm7, %%mm7 \n\t"
    ".rept 8 \n\t"
    " movq (%0), %%mm0 \n\t" /* mm0 = FiltPtr */
    " movq (%1), %%mm1 \n\t" /* mm1 = ReconPtr */
    " movq %%mm0, %%mm2 \n\t" /* dup to prepare for up conversion */
    " movq %%mm1, %%mm3 \n\t" /* dup to prepare for up conversion */
    /* convert from UINT8 to INT16 */
    " punpcklbw %%mm7, %%mm0 \n\t" /* mm0 = INT16(FiltPtr) */
    " punpcklbw %%mm7, %%mm1 \n\t" /* mm1 = INT16(ReconPtr) */
    " punpckhbw %%mm7, %%mm2 \n\t" /* mm2 = INT16(FiltPtr) */
    " punpckhbw %%mm7, %%mm3 \n\t" /* mm3 = INT16(ReconPtr) */
    /* start calculation */
    " psubw %%mm1, %%mm0 \n\t" /* mm0 = FiltPtr - ReconPtr */
    " psubw %%mm3, %%mm2 \n\t" /* mm2 = FiltPtr - ReconPtr */
    " movq %%mm0, (%2) \n\t" /* write answer out */
    " movq %%mm2, 8(%2) \n\t" /* write answer out */
    /* Increment pointers */
    " add $16, %2 \n\t"
    " add %3, %0 \n\t"
    " add %4, %1 \n\t"
    ".endr \n\t"
    : "+r" (FiltPtr),
    "+r" (ReconPtr),
    "+r" (DctInputPtr)
    : "m" (PixelsPerLine),
    "m" (ReconPixelsPerLine)
    : "memory"
    );

    For
    static const __attribute__ ((aligned(8),used)) ogg_int64_t V128 = 0x0080008000800080LL;
    Put
    #if !defined(__GNUC__)
    #define __attribute__(X) /* nothing */
    #endif /* __GNUC__)
    For the assembler, you'll either have to extract it to a separate assmbly file and assemble it with as (or gas), or else port it to C.
    Paul

  • Random Integer - Code help

    Hi, I'm having a bit of a problem with a program I am making for class. I'm not asking you guys to do my work for me, I just simply need some guidance as to what I am doing wrong.
    Alright, what I am suppose to write as a program that takes two user defined integers and then prints a random integer from between the two user numbers. This is the code I have thus far:
            int a = Integer.parseInt(args[0]);
         int b = Integer.parseInt(args[1]);
         double r = Math.random();
         int low = a + (int) (r * a);
         int high = a - (int) (r * b);
         int result = low + high;
         System.out.println(result);For the most part it seems to work, however it will only work if the two user defined numbers are more then 10 digits of each other. I.E. 10 20 will work fine, however 1 5 will not, 10 15, etc.
    Any help would be greatly appreciated!
    Edited by: KnivesACE on Sep 18, 2008 11:32 AM

    Stianbl wrote:
    lower = 1000;  // your lower integer value
    upper = 2000; // the larger one of your two integers
    double rand = Math.random();
    int result = lower + (int)((upper - lower)* rand);
    http://forums.sun.com/thread.jspa?threadID=590266&messageID=3948731
    The question here is whether the two limits are to be included in the random range? In your solution 2000 will never happen. If you want it to it should look like this,
    int result = lower + (int)((upper - lower + 1)* rand);

  • Sun ejb tutorial compilation problem with sample code

    I have been trying to follow the ejb tutorial off of Sun's web site. However, I get the following problem when I try to compile the sample code.
    prompt>javac Demo.java
    works fine
    Prompt>javac DemoBean.java
    works fine
    Prompt>javac DemoHome.java
    DemoHome.java:23: cannot resolve symbol
    symbol : class Demo
    location: interface ejb.demo.DemoHome
    public Demo create() throws CreateException, RemoteException;
    ^
    1 error
    Prompt>
    Can anyone help me out as I have tried several books which conveniently skip the part about compiling errors.
    I noticed I don't have a CLASSPATH variable and then i created one with just '.' in it and that didn't work. any help would be appreciated as this is driving me crazy. Thanks.

    try to change the order of the exception.
    first RemoteException and then CreateException

  • Integer codes for Excel FitToPagesWide ActiveX Needed

    Hello,
    I am currently using LV6.0.2 and have been doing some Excel controlling in my program. I don't have the tookit so I am been doing most the Excel stuff using direct ActiveX commands.
    I have gotten everything working but I am having trouble getting the FitToPagesWide to work before printing. I am not sure if there is an interger code, but if I use a I32 witha value of 1 it does not work.
    This is also with Excel 97.
    Jeff D.
    OS: Win 7 Ultimate
    LabVIEW Version: 2011,2010,2009 installed
    Certified LabVIEW Architect

    I have Excel 2003, but 1 is the correct setting. Try to also set the Zoom to False. Here is a snippet from the help:
    If the Zoom property is True, the FitToPagesWide property is ignored.
    Example
    This example causes Microsoft Excel to print Sheet1 exactly one page wide and tall.
    With Worksheets("Sheet1").PageSetup
    .Zoom = False
    .FitToPagesTall = 1
    .FitToPagesWide = 1
    End With
    Michael Munroe
    www.abcdef.biz
    Michael Munroe, ABCDEF
    Certified LabVIEW Developer, MCP
    Find and fix bad VI Properties with Property Inspector

  • 32 bit integer size on 64 bit processor and OS

    Although not strictly a dbx question, I think the audience here is the correct one to bounce this off of:
    I'm curious: Why are 64 bit processes compiled with the -xarch=v9 switch having a 32 bit integer size, versus having 64 bit integer size?
    Although not cast in stone, and implementation dependent, an "int was originally intended to be the "natural" word size of the processor - to use the processor's "natural" word size to improve efficiency (avoid masking, etc).".
    I know you 'force' more 64 bit use (see some of Sun's doc on this below).
    ===============
    The 64-bit Solaris operating environment is a complete 32-bit and 64-bit application and development environment supported by a 64-bit operating system. The 64-bit Solaris operating environment overcomes the limitations of the 32-bit system by supporting a 64-bit virtual address space as well as removing other existing 32-bit system limitations.
    For C, C++, and Fortran software developers, this means the following when compiling with -xarch=v9,v9a, or v9b in a Solaris 7 or Solaris 8 environment:
    Full 64-bit integer arithmetic for 64-bit applications. Though 64-bit arithmetic has been available in all Solaris 2 releases, the 64-bit implementation now uses full 64-bit machine registers for integer operations and parameter passing.
    A 64-bit virtual address space allows programs to access very large blocks of memory.
    For C and C++, the data model is "LP64" for 64-bit applications: long and pointer data types are 64-bits and the programmer needs to be aware that this change may be the cause of many 32-bit to 64-bit conversion issues. The details are in the Solaris 64-bit Developer's Guide, available on AnswerBook2. Also, the lint -errchk=longptr64 option can be used to check a C program's portability to an LP64 environment. Lint will check for assignments of pointer expressions and long integer expressions to plain (32-bit) integers, even for explicit casts.
    The Fortran programmer needs to be aware that POINTER variables in a 64-bit environment are INTEGER*8. Also, certain library routines and intrinsics will require INTEGER*8 arguments and/or return INTEGER*8 values when programs are compiled with -xarch=v9,v9a, or v9b that would otherwise require INTEGER*4.
    Be aware however that even though a program is compiled to run in a 64-bit environment, default data sizes for INTEGER, REAL, COMPLEX, and DOUBLE PRECISION do not change. That is, even though a program is compiled with -xarch=v9, default INTEGER and REAL are still INTEGER*4 and REAL*4, and so on. To use the full features of the 64-bit environment, some explicit typing of variables as INTEGER*8 and REAL*8 may be required. (See also the -xtypemap option.) Also, some 64-bit specific library routines (such as qsort(3F) and malloc64(3F)) may have to be used. For details, see the FORTRAN 77 or Fortran 95 READMEs (also viewable with the f77 or f95 compiler option: -xhelp=readme).
    A: No program is available that specifically invokes 64-bit capabilities. In order to take advantage of the 64-bit capabilities of your system running the 64-bit version of the operating environment, you need to rebuild your applications using the -xarch=v9 option of the compiler or assembler.

    I think that this was basically to keep down the headaches in porting code (and having code that will compile to both 32bit and 64bit object files). int is probably the most common type, so by keeping it at 32bits, the LP64 model has less effect on code that was originally written for 32bit platforms.
    If you want to have portable code (in terms of the sizes of integral types), then you should consider using int32_t, int64_t etc from inttypes.h. Note that this header is post-ANSI C 90, so might not be portable to old C/C++ compilers.
    A+
    Paul

  • Here is my GridBagLayout version of the code

         public void constructGUI()
               c= getContentPane();
              //Construct the menus and their listeners
              JMenu filemenu = new JMenu("File");
              JMenuItem saveas= new JMenuItem ("Save Amortization As");
              saveas.addActionListener(new ActionListener(){
                   public void actionPerformed (ActionEvent e)
                        JFileChooser filechooser = new JFileChooser ();
                        filechooser.setFileSelectionMode ( JFileChooser.FILES_ONLY);
                        int result = filechooser.showSaveDialog (null);
                        if (result== JFileChooser.CANCEL_OPTION)
                             return;
                        File filename = filechooser.getSelectedFile();
                        if (filename==null||filename.getName().equals (" "))
                             JOptionPane.showMessageDialog( null, "Invalid File Name", "Invalid FileName", JOptionPane.ERROR_MESSAGE );
                        else {
                             try
                                  System.out.println("I am ready to create the streams");
                                  FileOutputStream file = new FileOutputStream(filename, true);
                                  OutputStreamWriter filestream = new OutputStreamWriter(new BufferedOutputStream(file));
                                  String info= "The data is based on"+"\n";
                                  filestream.write(info);
                                  System.out.println("I wrote the first string called info");
                                  String interestdata= "INTEREST:"+" "+interest+"\n";
                                  filestream.write(interestdata);
                                  String timedata="The amortization period is:"+" "+time+"\n";
                                  filestream.write(timedata);
                                  String loandata="The money borrowed is:"+" "+moneyFormat.format(loannumber)+"\n";
                                  filestream.write(loandata);
                                  String totals= "Total of Payments Made:"+" " +moneyFormat.format(totalpayments)+"\n"+"Total Interest Paid:"+"  "+moneyFormat.format(totalinterest)+"\n";
                                  filestream.write(totals);
                                  String filestring = "PAYMENT NUMBER"+"   " + "PAYMENT" + "   " + " PRINCIPLE" + "   " + "INTEREST" +"   " + " BALANCE" + "\n";
                                  filestream.write(filestring);
                                  double loannumberkf= loannumber;
                                  System.out.println(timenumber);
                                  for (int j=1; j<=timenumber ; j++ )
                                       double principlekf=payment-loannumberkf*z;
                                       double balancef=loannumberkf-principlekf;
                                       String display ="\n"+ Integer.toString(j)+"                " + moneyFormat.format(payment)+"        "+ moneyFormat.format(principlekf)+ "     "+moneyFormat.format(loannumberkf*z)+ "     "+ moneyFormat.format(balancef)+"\n";
                                       filestream.write(display);
                                       loannumberkf=loannumberkf-principlekf;
                                  filestream.flush();
                                  file.close();
                             catch ( IOException ioException )
                                  JOptionPane.showMessageDialog (null, "File Does not exist", "Invalid File Name", JOptionPane.ERROR_MESSAGE);
                        }//end of else
                 } //end anonymous inner class
              filemenu.add(saveas);
              JMenuItem exit= new JMenuItem ("Exit");
              exit.addActionListener( new ActionListener() {
                        public void actionPerformed (ActionEvent e)
                             System.exit(0);
                   } //end anonymous inner class
              ); // end call to ActionListener
              filemenu.add(exit);
              JMenuItem summaries=new JMenuItem ("Save Summaries As");
              MenuHandler menuhandler= new MenuHandler();
              summaries.addActionListener(menuhandler);
              filemenu.add(summaries);
              //construct the second JMenu
              JMenu colorchooser=new JMenu("Color Chooser");
              JMenuItem colorchooseritem=new JMenuItem("Choose Color");
              colorchooseritem.addActionListener (new ActionListener() {
                                  public void actionPerformed(ActionEvent e)
                                       color=JColorChooser.showDialog(Mortgagecalculation.this, "Choose a Color", color);
                                       c.setBackground(color);
                                       c.repaint();
                         ); //end of registration
              colorchooser.add(colorchooseritem);
              //third menu
              JMenu service = new JMenu("Services");
              JMenuItem s1= new JMenuItem ("Display Amortization");
              JMenuItem s2= new JMenuItem ("Calender");
              service.add(s1);
              service.add(s2);
              //Create menu bar and add the two JMenu objects
              JMenuBar menubar = new JMenuBar();
              setJMenuBar(menubar);
              menubar.add(filemenu); // end of menu construction
              menubar.add(colorchooser);
              menubar.add(service);
              //set the layout manager for the JFrame
              gbLayout = new GridBagLayout();
              c.setLayout(gbLayout);
              gbConstraints = new GridBagConstraints();
              //construct table and place it on the North part of the Frame
              JLabel tablelabel=new JLabel ("The Table below displays amortization values after you press O.K. on the payments window. Payments window appears after you enter the values for rate, period and loan");
              mydefaulttable = new DefaultTableModel();
                   mydefaulttable.addColumn("PAYMENT NUMBER");
                   mydefaulttable.addColumn ("PAYMENT AMOUNT");
                   mydefaulttable.addColumn ("PRINCIPLE");
                   mydefaulttable.addColumn ("INTEREST");
                   mydefaulttable.addColumn("LOAN BALANCE");
              Box tablebox=Box.createVerticalBox();   
              mytable=new JTable(mydefaulttable);
              tablelabel.setLabelFor(mytable);
              JScrollPane myscrollpane= new JScrollPane (mytable);
              tablebox.add(tablelabel);
              tablebox.add(myscrollpane);
              //gbConstraints.weightx = 100;
              //gbConstraints.weighty = 50;
              //gbConstraints.fill = GridBagConstraints.BOTH;
              gbConstraints.anchor = GridBagConstraints.NORTH;
              addComponent(tablebox,0,0,3,1,GridBagConstraints.NORTH);
            //c.add (tablebox, BorderLayout.NORTH);
              //create center panel
              JLabel panellabel=new JLabel("Summarries");
              MyPanel panel =new MyPanel();
              panel.setSize (10, 50);
              panel.setBackground(Color.red);
              panellabel.setLabelFor(panel);
              Box panelbox=Box.createVerticalBox();
              panelbox.add(panellabel);
              panelbox.add(panel);
              //gbConstraints.weightx = 50;
              //gbConstraints.weighty = 100;
            //gbConstraints.fill = GridBagConstraints.BOTH;
              gbConstraints.anchor = GridBagConstraints.CENTER;
              addComponent(panelbox,1,1,1,1,GridBagConstraints.CENTER);
              //c.add (panelbox, BorderLayout.CENTER);
              //add time in the SOUTH part of the Frame
              Panel southpanel=new Panel();
              southpanel.setBackground(Color.magenta);
              Date time=new Date();
              String timestring=DateFormat.getDateTimeInstance().format(time);
              TextField timefield=new TextField("The Date and Time in Chicago is:"+" "+timestring, 50);
              southpanel.add(timefield);
              //gbConstraints.weightx = 100;
              //gbConstraints.weighty = 1;
              //gbConstraints.fill = GridBagConstraints.HORIZONTAL;
              gbConstraints.anchor = GridBagConstraints.SOUTH;
              addComponent(southpanel,0,2,3,1,GridBagConstraints.SOUTH);
              //c.add(southpanel, BorderLayout.SOUTH);
              //USE "BOX LAYOUT MANAGER" TO ARRANGE COMPONENTS LEFT TO RIGHT WITHIN THE SOUTH PART OF THE FRAME
              //Create a text area to output more information about the application.Place it in a box and place box EAST
              Font f=new Font("Serif", Font.ITALIC+Font.BOLD, 16);
              string="-If you would like to exit this program\n"+
              "-click on the exit menu item \n"+
                   "-if you would like to save the table as a text file \n"+
                   "-click on Save As menu item \n"+"-You can reenter new values for calculation\n"+
                   " as many times as you would like.\n"+
                   "-You can save the summaries also on a different file\n"+
                   "-Files are appended";
              JLabel infolabel= new JLabel ("Information About this Application", JLabel.RIGHT);
              JTextArea textarea=new JTextArea(25,25);
              textarea.setFont(f);
              textarea.append(string);
              infolabel.setLabelFor(textarea);
              Box box =Box.createVerticalBox();
              box.add(infolabel);
              box.add(new JScrollPane (textarea));
              //gbConstraints.weightx = 50;
              //gbConstraints.weighty = 100;
              //gbConstraints.fill = GridBagConstraints.BOTH;
              gbConstraints.anchor = GridBagConstraints.SOUTHEAST;
              addComponent(box,2,1,1,1,GridBagConstraints.SOUTHEAST);
              //c.add(box, BorderLayout.EAST);
              //Create the text fields for entering data and place them in a box WEST
              Panel panelwest = new Panel();
              //create the first panelwest and place the text fields in it
              Box box1=Box.createVerticalBox();
              JLabel rate= new JLabel ("Enter Rate", JLabel.RIGHT);
              interestfield=new JTextField ("Enter Interest here and press Enter", 15);
              rate.setLabelFor(interestfield);
              box1.add(rate);
              box1.add(interestfield);
              JLabel period=new JLabel("Enter Amortization Periods", JLabel.RIGHT);
              timenumberfield=new JTextField("Enter amortization period in months and press Enter", 15);
              period.setLabelFor(timenumberfield);
              box1.add(period);
              box1.add(timenumberfield);
              JLabel loan=new JLabel("Enter Present Value of Loan", JLabel.RIGHT);
              loanamountfield =new JTextField ("Enter amount of loan and press Enter", 15);
              loan.setLabelFor(loanamountfield);
              box1.add(loan);
              box1.add(loanamountfield);
              JLabel submit = new JLabel("Press Submit Button to Calculate", JLabel.RIGHT);
              submitbutton= new JButton("SUBMIT");
              submit.setLabelFor(submitbutton);
              box1.add(submit);
              box1.add(submitbutton);
              panelwest.add(box1);
              //Add the panel to the content pane
              //gbConstraints.weightx = 50;
              //gbConstraints.weighty = 100;
              //gbConstraints.fill = GridBagConstraints.BOTH;
              gbConstraints.anchor = GridBagConstraints.SOUTHWEST;
              addComponent(panelwest,0,1,1,1,GridBagConstraints.SOUTHWEST);
              //c.add(panelwest, BorderLayout.WEST);
              //Event handler registration for text fields and submit button
              TextFieldHandler handler=new TextFieldHandler();
              interestfield.addActionListener(handler);
              timenumberfield.addActionListener(handler);
              loanamountfield.addActionListener(handler);
              submitbutton.addActionListener(handler);
              setSize(1000, 700);   
              setVisible(true);
              System.out.println("repainting table, constructor");
              System.out.println("I finished repainting. End of ConstructGUI");
         } // END OF CONSTUCTGUI
         // addComponent() is developed here
         private void addComponent(Component com,int row,int column,int width,int height,int ancor)
              //set gridx and gridy
              gbConstraints.gridx = column;
              gbConstraints.gridy = row;
              //set gridwidth and gridheight
              gbConstraints.gridwidth = width;
              gbConstraints.gridheight = height;
              gbConstraints.anchor = ancor;
              //set constraints
              gbLayout.setConstraints(com,gbConstraints);
              c.add(com);          
         

    Quit cross-posting (in different forums) every time you have a question.
    Quit multi-posting (asking the same questions twice) when you ask a question.
    Start responding to your old questions indicating whether the answers you have been given have been helpfull or not.
    Read the tutorial before asking a question. Start with [url http://java.sun.com/docs/books/tutorial/uiswing/layout/visual.html]How to Use GridBag Layout. Of course its the most difficult Layout Manager to master so I would recommend you use various combinations of the other layout managers to achieve your desired results.
    If you need further help then you need to create a [url http://homepage1.nifty.com/algafield/sscce.html]Short, Self Contained, Compilable and Executable, Example Program (SSCCE) that demonstrates the incorrect behaviour, because I can't guess exactly what you are doing based on the information provided.
    And don't forget to use the [url http://forum.java.sun.com/help.jspa?sec=formatting]Code Formatting Tags so the code retains its original formatting.

  • Sun coding conventions for documentation are horribly outdated!

    Seriously I have seen 10 different formats on searching that look way better and the fact the conventions on display from sun date to 1999 is very confusing.
    Can I ask which is preferred (I am doing the SCJD and here is an example of format vs format)....
    For beginning class comments.
    * @(#)Contractor.java
    * Version 1.0.0
    * Date 27/03/2009
    */vs
    * @(#)Contractor.java    Version 1.0.0    Date 27/03/2009
    Methods
    * Sets the record number for the Contractor record.
    * @param recNo A <code>Integer</code> containing the record number to be
    * set.
    */vs
    * Sets the record number for the Contractor record.
    * @param recNo     A <code>Integer</code> containing the record number to be set.
    */Edited by: Yucca on Apr 5, 2009 7:12 PM
    Edited by: Yucca on Apr 5, 2009 7:14 PM
    Edited by: Yucca on Apr 5, 2009 7:17 PM

    * Returns an Image object that can then be painted on the screen.
    * The url argument must specify an absolute {@link URL}. The name
    * argument is a specifier that is relative to the url argument.
    * <p>
    * This method always returns immediately, whether or not the
    * image exists. When this applet attempts to draw the image on
    * the screen, the data will be loaded. The graphics primitives
    * that draw the image will incrementally paint on the screen.
    * @param  url  an absolute URL giving the base location of the image
    * @param  name the location of the image, relative to the url argument
    * @return      the image at the specified URL
    * @see         Image
    public Image getImage(URL url, String name) {
         try {
             return getImage(new URL(url, name));
         } catch (MalformedURLException e) {
             return null;
    }This was taken from... [http://java.sun.com/j2se/javadoc/writingdoccomments/#format]
    And this...
         * ...method doSomethingElse documentation comment...
         * @param someParam description
        public void doSomethingElse(Object someParam) {
            // ...implementation goes here...
        }from [http://java.sun.com/docs/codeconv/html/CodeConvTOC.doc.html] Notice how the @param docs differ and both are from sun! So Jwentling Mr. know it all which one must I follow? And this is not THE ONLY ONE WHERE SUN contradict their own conventions, leaving people like me asking here! Go moan at them for not being precise.

  • Replace Quotes, Connection Pooling, and Sun Web Server with MySQL, Oracle

    This is code I use to insert data into my MySQL and Oracle databases.
    I takes care of quotes and shows use of context, i.e. when you use Sun Web Server's
    ConnectionPooling. This code works. Feel free to reply if you have questions on how to set up connection pooling using Sun Web Server 6.1SP - it took quite a long time to learn and I couldn't find much information throughout the web, so I hope this helps...
    This is not a question and I am not looking for an answer, but please post comments or suggestions.
    dailysun
    This is in one class where I have a hashtable containing the
    column name / value pairs that I want to enter into my table.
    This class simply creates the SQL string from the values in the
    hashtable. It then passes that hashtable including the database
    name to a class which executes that sql statement (second code
    portion).
    /* Insert data into sf_parts. Create the column strings from
             * the provided hash table. Be sure to parse out hash elements which
             * are used for the createTemplate process
            StringBuffer values = new StringBuffer();
            StringBuffer fields = new StringBuffer();
            Enumeration keys = fieldHash.keys();
            while(keys.hasMoreElements()){
                Object currentKey = keys.nextElement();
                    String fieldValue = (String) fieldHash.get(currentKey);
                    if(values.length() >0){
                        values.append(",");
                    values.append("'"+fieldValue.replaceAll("'","''")+"'"); // Takes care of quotes and various other special characters!
                    if(fields.length() >0){
                        fields.append(",");
                    fields.append(currentKey);
            sql = "INSERT INTO myTable (" + fields.toString() + ") VALUES (" + values.toString() + ");";
            String insertResult = caq.getInsertDelete(sql,"myDatabaseName"); // your database name is defined in web.xml and sun-web.xml when you use Sun Web Server's Connection Pooling.
            returnValue += "<br><br><b>Rows inserted into table(myTable): </b>" + insertResult + "<br>\n";
            And, like I describe above, this method executes the sql statement.
         * Takes care of insert, update and delete requests.
         * Must have set both dbName as well as the sql String.
         * Will return number of rows affected as String.
         * @return String Number of rows affected
         * @exception SQLException
         * @exception Exception
        public String getInsertDelete() {
            checkData(); // this simply checks if the variables dbName and sql are not empty ;-)
            InitialContext initContext = null;
            int rv = 0;
            try{
                // Get connection from configured pool
                initContext = new InitialContext();
                source = (DataSource) initContext.lookup("java:comp/env/jdbc/" + dbName); // I have this set up in web.xml and sun-web.xml (I use Sun Web Server 6.1SP which does connection pooling for me)
                conn = source.getConnection();
                if(conn != null){
                    stmt = conn.createStatement();
                    rv = stmt.executeUpdate(sql);
            }catch (SQLException e){
                // do something
            }catch (Exception e){
                // do something
            }finally{
                try{
                    stmt.close();
                }catch(Exception e){
                    // do something
                try{
                    conn.close();
                }catch(Exception e){
                    // do something
                try{
                    initContext.close();
                }catch(Exception e){
                    // do something
            return rv+"";
        }  

    This is code I use to insert data into my MySQL and
    Oracle databases.
    I takes care of quotes and shows use of context, i.e.
    when you use Sun Web Server's
    ConnectionPooling. This code works. Feel free to
    reply if you have questions on how to set up
    connection pooling using Sun Web Server 6.1SP - it
    took quite a long time to learn and I couldn't find
    much information throughout the web, so I hope this
    helps...
    This is not a question and I am not looking for an
    answer, but please post comments or suggestions.Using prepared statements would mean that you wouldn't have to worry about quotes.
    You should be closing the result set.
    You are handling all fields as strings. That won't work with time fields and might not work for numeric fields.
    Presumably most of your variables are member variables. They should be local variables because that is the scope of the usage.
    You must do something with the exceptions.
    Hashtables although convienent mean that problems with usage can only be resolved at run time rather than compile time.

  • Error in parsing: SAX2 driver class com.sun.xml.parser not found

    Hi I have this exception
    Error in parsing: SAX2 driver class com.sun.xml.parser not found
    when I try to run the examples from the book xml and java
    I have added the following jar files to the class path that i have download form java.sun.com
    xml.jar
    xalan.jar
    jaxp.jar
    crimson.jar
    Please can anyone tell me what is missing or wrong..the code must be right since written by oreilly... please have u any ideA
    XMLReaderFactory.createXMLReader(
    // "org.apache.xerces.parsers.SAXParser");
                        "com.sun.xml.parser");//
    I HAVE ONLY CHANGED THIS LINE FROM THE apache parser..to com.sun.xml.parser
    THIS IS THE ALL CODE
    import java.io.IOException;
    import org.xml.sax.Attributes;
    import org.xml.sax.ContentHandler;
    import org.xml.sax.ErrorHandler;
    import org.xml.sax.Locator;
    import org.xml.sax.SAXException;
    import org.xml.sax.SAXParseException;
    import org.xml.sax.XMLReader;
    import org.xml.sax.helpers.XMLReaderFactory;
    import org.xml.sax.*;
    * <b><code>SAXParserDemo</code></b> will take an XML file and parse it using SAX,
    * displaying the callbacks in the parsing lifecycle.
    * @author Brett McLaughlin
    * @version 1.0
    public class SAXParserDemo {
    * <p>
    * This parses the file, using registered SAX handlers, and output
    * the events in the parsing process cycle.
    * </p>
    * @param uri <code>String</code> URI of file to parse.
    public void performDemo(String uri) {
    System.out.println("Parsing XML File: " + uri + "\n\n");
    // Get instances of our handlers
    ContentHandler contentHandler = new MyContentHandler();
    ErrorHandler errorHandler = new MyErrorHandler();
    try {
    // Instantiate a parser
    XMLReader parser =
    XMLReaderFactory.createXMLReader(
    // "org.apache.xerces.parsers.SAXParser");
                        "com.sun.xml.parser");// I HAVE ONLY CHANGED THIS LINE FROM THE apache parser..
    // Register the content handler
    parser.setContentHandler(contentHandler);
    // Register the error handler
    parser.setErrorHandler(errorHandler);
    // Parse the document
    parser.parse(uri);
    } catch (IOException e) {
    System.out.println("Error reading URI: " + e.getMessage());
    } catch (SAXException e) {
    System.out.println("Error in parsing: " + e.getMessage());
    * <p>
    * This provides a command line entry point for this demo.
    * </p>
    public static void main(String[] args) {
    // if (args.length != 1) {
    // System.out.println("Usage: java SAXParserDemo [XML URI]");
    // System.exit(0);
    //String uri = args[0];
    SAXParserDemo parserDemo = new SAXParserDemo();
    parserDemo.performDemo("content.xml");
    * <b><code>MyContentHandler</code></b> implements the SAX
    * <code>ContentHandler</code> interface and defines callback
    * behavior for the SAX callbacks associated with an XML
    * document's content.
    class MyContentHandler implements ContentHandler {
    /** Hold onto the locator for location information */
    private Locator locator;
    * <p>
    * Provide reference to <code>Locator</code> which provides
    * information about where in a document callbacks occur.
    * </p>
    * @param locator <code>Locator</code> object tied to callback
    * process
    public void setDocumentLocator(Locator locator) {
    System.out.println(" * setDocumentLocator() called");
    // We save this for later use if desired.
    this.locator = locator;
    * <p>
    * This indicates the start of a Document parse - this precedes
    * all callbacks in all SAX Handlers with the sole exception
    * of <code>{@link #setDocumentLocator}</code>.
    * </p>
    * @throws <code>SAXException</code> when things go wrong
    public void startDocument() throws SAXException {
    System.out.println("Parsing begins...");
    * <p>
    * This indicates the end of a Document parse - this occurs after
    * all callbacks in all SAX Handlers.</code>.
    * </p>
    * @throws <code>SAXException</code> when things go wrong
    public void endDocument() throws SAXException {
    System.out.println("...Parsing ends.");
    * <p>
    * This will indicate that a processing instruction (other than
    * the XML declaration) has been encountered.
    * </p>
    * @param target <code>String</code> target of PI
    * @param data <code>String</code containing all data sent to the PI.
    * This typically looks like one or more attribute value
    * pairs.
    * @throws <code>SAXException</code> when things go wrong
    public void processingInstruction(String target, String data)
    throws SAXException {
    System.out.println("PI: Target:" + target + " and Data:" + data);
    * <p>
    * This will indicate the beginning of an XML Namespace prefix
    * mapping. Although this typically occur within the root element
    * of an XML document, it can occur at any point within the
    * document. Note that a prefix mapping on an element triggers
    * this callback <i>before</i> the callback for the actual element
    * itself (<code>{@link #startElement}</code>) occurs.
    * </p>
    * @param prefix <code>String</code> prefix used for the namespace
    * being reported
    * @param uri <code>String</code> URI for the namespace
    * being reported
    * @throws <code>SAXException</code> when things go wrong
    public void startPrefixMapping(String prefix, String uri) {
    System.out.println("Mapping starts for prefix " + prefix +
    " mapped to URI " + uri);
    * <p>
    * This indicates the end of a prefix mapping, when the namespace
    * reported in a <code>{@link #startPrefixMapping}</code> callback
    * is no longer available.
    * </p>
    * @param prefix <code>String</code> of namespace being reported
    * @throws <code>SAXException</code> when things go wrong
    public void endPrefixMapping(String prefix) {
    System.out.println("Mapping ends for prefix " + prefix);
    * <p>
    * This reports the occurrence of an actual element. It will include
    * the element's attributes, with the exception of XML vocabulary
    * specific attributes, such as
    * <code>xmlns:[namespace prefix]</code> and
    * <code>xsi:schemaLocation</code>.
    * </p>
    * @param namespaceURI <code>String</code> namespace URI this element
    * is associated with, or an empty
    * <code>String</code>
    * @param localName <code>String</code> name of element (with no
    * namespace prefix, if one is present)
    * @param rawName <code>String</code> XML 1.0 version of element name:
    * [namespace prefix]:[localName]
    * @param atts <code>Attributes</code> list for this element
    * @throws <code>SAXException</code> when things go wrong
    public void startElement(String namespaceURI, String localName,
    String rawName, Attributes atts)
    throws SAXException {
    System.out.print("startElement: " + localName);
    if (!namespaceURI.equals("")) {
    System.out.println(" in namespace " + namespaceURI +
    " (" + rawName + ")");
    } else {
    System.out.println(" has no associated namespace");
    for (int i=0; i<atts.getLength(); i++)
    System.out.println(" Attribute: " + atts.getLocalName(i) +
    "=" + atts.getValue(i));
    * <p>
    * Indicates the end of an element
    * (<code></[element name]></code>) is reached. Note that
    * the parser does not distinguish between empty
    * elements and non-empty elements, so this will occur uniformly.
    * </p>
    * @param namespaceURI <code>String</code> URI of namespace this
    * element is associated with
    * @param localName <code>String</code> name of element without prefix
    * @param rawName <code>String</code> name of element in XML 1.0 form
    * @throws <code>SAXException</code> when things go wrong
    public void endElement(String namespaceURI, String localName,
    String rawName)
    throws SAXException {
    System.out.println("endElement: " + localName + "\n");
    * <p>
    * This will report character data (within an element).
    * </p>
    * @param ch <code>char[]</code> character array with character data
    * @param start <code>int</code> index in array where data starts.
    * @param end <code>int</code> index in array where data ends.
    * @throws <code>SAXException</code> when things go wrong
    public void characters(char[] ch, int start, int end)
    throws SAXException {
    String s = new String(ch, start, end);
    System.out.println("characters: " + s);
    * <p>
    * This will report whitespace that can be ignored in the
    * originating document. This is typically only invoked when
    * validation is ocurring in the parsing process.
    * </p>
    * @param ch <code>char[]</code> character array with character data
    * @param start <code>int</code> index in array where data starts.
    * @param end <code>int</code> index in array where data ends.
    * @throws <code>SAXException</code> when things go wrong
    public void ignorableWhitespace(char[] ch, int start, int end)
    throws SAXException {
    String s = new String(ch, start, end);
    System.out.println("ignorableWhitespace: [" + s + "]");
    * <p>
    * This will report an entity that is skipped by the parser. This
    * should only occur for non-validating parsers, and then is still
    * implementation-dependent behavior.
    * </p>
    * @param name <code>String</code> name of entity being skipped
    * @throws <code>SAXException</code> when things go wrong
    public void skippedEntity(String name) throws SAXException {
    System.out.println("Skipping entity " + name);
    * <b><code>MyErrorHandler</code></b> implements the SAX
    * <code>ErrorHandler</code> interface and defines callback
    * behavior for the SAX callbacks associated with an XML
    * document's errors.
    class MyErrorHandler implements ErrorHandler {
    * <p>
    * This will report a warning that has occurred; this indicates
    * that while no XML rules were "broken", something appears
    * to be incorrect or missing.
    * </p>
    * @param exception <code>SAXParseException</code> that occurred.
    * @throws <code>SAXException</code> when things go wrong
    public void warning(SAXParseException exception)
    throws SAXException {
    System.out.println("**Parsing Warning**\n" +
    " Line: " +
    exception.getLineNumber() + "\n" +
    " URI: " +
    exception.getSystemId() + "\n" +
    " Message: " +
    exception.getMessage());
    throw new SAXException("Warning encountered");
    * <p>
    * This will report an error that has occurred; this indicates
    * that a rule was broken, typically in validation, but that
    * parsing can reasonably continue.
    * </p>
    * @param exception <code>SAXParseException</code> that occurred.
    * @throws <code>SAXException</code> when things go wrong
    public void error(SAXParseException exception)
    throws SAXException {
    System.out.println("**Parsing Error**\n" +
    " Line: " +
    exception.getLineNumber() + "\n" +
    " URI: " +
    exception.getSystemId() + "\n" +
    " Message: " +
    exception.getMessage());
    throw new SAXException("Error encountered");
    * <p>
    * This will report a fatal error that has occurred; this indicates
    * that a rule has been broken that makes continued parsing either
    * impossible or an almost certain waste of time.
    * </p>
    * @param exception <code>SAXParseException</code> that occurred.
    * @throws <code>SAXException</code> when things go wrong
    public void fatalError(SAXParseException exception)
    throws SAXException {
    System.out.println("**Parsing Fatal Error**\n" +
    " Line: " +
    exception.getLineNumber() + "\n" +
    " URI: " +
    exception.getSystemId() + "\n" +
    " Message: " +
    exception.getMessage());
    throw new SAXException("Fatal Error encountered");

    I have seen this error when I'm executing inside one of the (j2ee sun reference implementation) server containers (either web or ejb). I believe its caused by "something" having previously loaded the "sax 1 driver class". In my case, I think the container or server is loading the sax parser from a jar that contains a sax 1 version. If you can, ensure that nothing is loading the sax 1 parser from another jar on your system. Verify that you are loading the sax parser from a jar containing the latest version so that you get the sax 2 compliant parser. Good luck!

  • I can�t install Sun Studio 11 in Solaris 8

    Hello!!
    We are trying to install Sun Studio 11 on our Server.
    The server is running under Solaris 8, we install J2SE 1.4.2_10 SDK prior to run the Sun Studio installer, but when we run the installer, it report the following error
    Could not find class during deserialization of the WizardState:java.lang.ClassNotFoundException: com.sun.install.products.Product
    java.lang.ClassNotFoundException: com.sun.install.products.Product
    at java.lang.Throwable.fillInStackTrace(Native Method)
    at java.lang.Throwable.fillInStackTrace(Compiled Code)
    at java.lang.Throwable.<init>(Compiled Code)
    at java.lang.Exception.<init>(Compiled Code)
    at java.lang.ClassNotFoundException.<init>(Compiled Code)
    at java.io.ObjectInputStream.inputObject(Compiled Code)
    at java.io.ObjectInputStream.readObject(Compiled Code)
    at java.io.ObjectInputStream.readObject(Compiled Code)
    at java.util.Hashtable.readObject(Compiled Code)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Compiled Code)
    at java.io.ObjectInputStream.invokeObjectReader(Compiled Code)
    at java.io.ObjectInputStream.inputObject(Compiled Code)
    at java.io.ObjectInputStream.readObject(Compiled Code)
    at java.io.ObjectInputStream.readObject(Compiled Code)
    at com.sun.wizards.core.GenericWizardState.setWizardState(Compiled Code)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Compiled Code)
    at com.sun.wizards.core.ArchiveReader.callObjectMethod(Compiled Code)
    at com.sun.wizards.core.ArchiveReader.<init>(Compiled Code)
    at com.sun.forte.install.tasks.AddChildWizardTask.fetchChildWizards(Compiled Code)
    at com.sun.forte.install.tasks.AddChildWizardTask.perform(Compiled Code)
    at com.sun.wizards.core.Sequence.perform(Compiled Code)
    at com.sun.wizards.core.SequenceManager.run(Compiled Code)
    at java.lang.Thread.run(Thread.java:479)
    Could not find class during deserialization of the WizardState:java.lang.ClassNotFoundException: com.sun.install.products.Product
    java.lang.ClassNotFoundException: com.sun.install.products.Product
    at java.lang.Throwable.fillInStackTrace(Native Method)
    at java.lang.Throwable.fillInStackTrace(Compiled Code)
    at java.lang.Throwable.<init>(Compiled Code)
    at java.lang.Exception.<init>(Compiled Code)
    at java.lang.ClassNotFoundException.<init>(Compiled Code)
    at java.io.ObjectInputStream.inputObject(Compiled Code)
    at java.io.ObjectInputStream.readObject(Compiled Code)
    at java.io.ObjectInputStream.readObject(Compiled Code)
    at java.util.Hashtable.readObject(Compiled Code)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Compiled Code)
    at java.io.ObjectInputStream.invokeObjectReader(Compiled Code)
    at java.io.ObjectInputStream.inputObject(Compiled Code)
    at java.io.ObjectInputStream.readObject(Compiled Code)
    at java.io.ObjectInputStream.readObject(Compiled Code)
    at com.sun.wizards.core.GenericWizardState.setWizardState(Compiled Code)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Compiled Code)
    at com.sun.wizards.core.ArchiveReader.callObjectMethod(Compiled Code)
    at com.sun.wizards.core.ArchiveReader.<init>(Compiled Code)
    at com.sun.wizards.core.GenericWizardState.setWizardState(Compiled Code)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Compiled Code)
    at com.sun.wizards.core.ArchiveReader.callObjectMethod(Compiled Code)
    at com.sun.wizards.core.ArchiveReader.<init>(Compiled Code)
    at java.lang.reflect.Constructor.newInstance(Native Method)
    at install.instantiateArchiveReader(ArchiveClassLoader.java:203)
    at install.<init>(ArchiveClassLoader.java:143)
    at install.main(Compiled Code
    Some one has any idea?
    Thank you in advance.
    PD: Sorry for my English, I�am a beginner English student, please be pacient.

    i've installed java 1.5.0b06 and I can install SUN Studio 11 in Solaris 8
    feedback:
    ==========================================================
    # echo $PATH
    /usr/j2se/jre1.5.0_06/bin:/usr/j2se/jre1.5.0_06:/usr/sbin:/usr/bin
    # java -version
    java version "1.5.0_06"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
    Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode, sharing)
    ==========================================================
    but when i try to install
    ==========================================================
    # ./installer -nodisplay
    Could not find class during deserialization of the WizardState:java.lang.ClassNotFoundException: com.sun.install.products.Product
    java.lang.ClassNotFoundException: com.sun.install.products.Product
    at java.lang.Throwable.fillInStackTrace(Native Method)
    at java.lang.Throwable.fillInStackTrace(Compiled Code)
    at java.lang.Throwable.<init>(Compiled Code)
    at java.lang.Exception.<init>(Compiled Code)
    at java.lang.ClassNotFoundException.<init>(Compiled Code)
    at java.io.ObjectInputStream.inputObject(Compiled Code)
    at java.io.ObjectInputStream.readObject(Compiled Code)
    at java.io.ObjectInputStream.readObject(Compiled Code)
    at java.util.Hashtable.readObject(Compiled Code)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Compiled Code)
    at java.io.ObjectInputStream.invokeObjectReader(Compiled Code)
    at java.io.ObjectInputStream.inputObject(Compiled Code)
    at java.io.ObjectInputStream.readObject(Compiled Code)
    at java.io.ObjectInputStream.readObject(Compiled Code)
    at com.sun.wizards.core.GenericWizardState.setWizardState(Compiled Code)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Compiled Code)
    at com.sun.wizards.core.ArchiveReader.callObjectMethod(Compiled Code)
    at com.sun.wizards.core.ArchiveReader.<init>(Compiled Code)
    at com.sun.forte.install.tasks.AddChildWizardTask.fetchChildWizards(Compiled Code)
    at com.sun.forte.install.tasks.AddChildWizardTask.perform(Compiled Code)
    at com.sun.wizards.core.Sequence.perform(Compiled Code)
    at com.sun.wizards.core.SequenceManager.run(Compiled Code)
    at java.lang.Thread.run(Thread.java:472)
    Could not find class during deserialization of the WizardState:java.lang.ClassNotFoundException: com.sun.install.products.Product
    java.lang.ClassNotFoundException: com.sun.install.products.Product
    at java.lang.Throwable.fillInStackTrace(Native Method)
    at java.lang.Throwable.fillInStackTrace(Compiled Code)
    at java.lang.Throwable.<init>(Compiled Code)
    at java.lang.Exception.<init>(Compiled Code)
    at java.lang.ClassNotFoundException.<init>(Compiled Code)
    at java.io.ObjectInputStream.inputObject(Compiled Code)
    at java.io.ObjectInputStream.readObject(Compiled Code)
    at java.io.ObjectInputStream.readObject(Compiled Code)
    at java.util.Hashtable.readObject(Compiled Code)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Compiled Code)
    at java.io.ObjectInputStream.invokeObjectReader(Compiled Code)
    at java.io.ObjectInputStream.inputObject(Compiled Code)
    at java.io.ObjectInputStream.readObject(Compiled Code)
    at java.io.ObjectInputStream.readObject(Compiled Code)
    at com.sun.wizards.core.GenericWizardState.setWizardState(Compiled Code)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Compiled Code)
    at com.sun.wizards.core.ArchiveReader.callObjectMethod(Compiled Code)
    at com.sun.wizards.core.ArchiveReader.<init>(Compiled Code)
    at com.sun.wizards.core.GenericWizardState.setWizardState(Compiled Code)
    at java.lang.reflect.Method.invoke(Native Method)
    at java.lang.reflect.Method.invoke(Compiled Code)
    at com.sun.wizards.core.ArchiveReader.callObjectMethod(Compiled Code)
    at com.sun.wizards.core.ArchiveReader.<init>(Compiled Code)
    at java.lang.reflect.Constructor.newInstance(Native Method)
    at install.instantiateArchiveReader(ArchiveClassLoader.java:203)
    at install.<init>(ArchiveClassLoader.java:143)
    at install.main(Compiled Code)
    ===============================================================
    so i am confused or maybe i have to install 1.4.2.10??

  • Problem in accessing class file for applet code

    I am developing a package in struts frame work.
    I place all the java files in action folder and jsp files in jsp folder.In one of the jsp I write code to invoke applet .But I am getting error as "class not found exception".Can any one help me? Below I am giving the code?
    <embed
    type="application/x-java-applet;version=1.4"
    pluginspage="http://java.sun.com/products/plugin/index.html#download"
    code="DigitalSignerApplet"
    archive="DigitalSignerApplet.jar"
    width="130"
    height="25"
    mayscript="true"
    scriptable="true"
    fileNameField="uploadFile"
    certificationChainField="certChain"
    signatureField="signature"
    signButtonCaption="Sign selected file">
    <embed>

    Excuse me with out files in webserver how can I get
    error, I am asking how to point to that specific classHuh? You can't. It's an HTML page with an applet. All normal rules apply.

  • 1.4 bug? or bad code?  please I need help

    FTPClient.getFile(inputStream out,String filename) works fine if inputStream is directed to an output file. I added a Thread to read inputStream using piped i/o and works fine but the thread never ends. Seems like readLine() does not return null. Please I need help.
    note: FTP package located finj.sourceforge.net
    import java.io.*;
    import org.finj.FTPClient;
    public class FTPSimpleDemo extends Object {
    public FTPSimpleDemo ( String server,
    String user,
    char[] password ) throws Exception {
    PipedOutputStream pipeOut = null;
    PipedInputStream pipeIn = null;
    Thread reader = null;
    FTPClient client =
    new FTPClient(server,user,password);
    //download file
    try {
    pipeOut = new PipedOutputStream();
    pipeIn = new PipedInputStream(pipeOut);
    reader = new PipeIn(pipeIn);
    reader.start();
    client.getFile(pipeOut, "J_Event.txt");
    while(reader.isAlive() ||
    !reader.isInterrupted));
    pipeOut.close();
    pipeIn.close();
    client.close();
    }catch(IOException e){e.getMessage();}
    finally {reader=null;}
    public static void main ( String[] args ) throws Exception {
    new FTPSimpleDemo(args[0], args[1],
    args[2].toCharArray());}
    class PipeIn extends Thread {
    private InputStream in;
    private String str;
    public PipeIn(InputStream in) {this.in = in;}
    public void run() {
    try {
    BufferedReader br = new BufferedReader(
    new InputStreamReader(in));
    while ((str=br.readLine()) != null)
    System.out.println(str);
    br.close();
    }catch (IOException e) {
    System.err.println(e.getMessage());}
    }

    Heres a tip: forget that open source library unless you need to customize it or something. Use the ftp library that comes wih the JDK. It is in an unsupported package (sun.net.ftp) check it out it couldn't be simpler:
    //you need this import statement
    import sun.net.ftp.*;
    //here is example code
    String server = "ftp.fileplanet.com";
    String user = "me";
    String passwd = "1234";
    FtpClient client = new FtpClient();
    client.openServer(server);
    client.login(user, passwd);
    client.binary();
    client.cd("games");
    //DO NOT CLOSE THIS INPUTSTREAM UNTIL YOU WANT TO CLOSE YOUR CONNECTION
    TelnetInputStream in = client.get("pacman.exe");
    //now do whatever u want with this inputstream
    byte[] bytes = new byte[4096];
    int x = 0;
    while((x = in.read(bytes)) != -1)
      out.write(bytes, 0, x);
      _totalBytes += x;
    out.flush();
    out.close();Also another tip for you to write code in the forum put your code between the [ code ] [ code ] tags

  • To Verisign or not to Verisign my Code? (And which do I use?)

    I have been using the netscape signing tools to sign my applet using a certificate from Netscape's Certificate Signer (in house). I am able to sign my applets and run them in IE (4.0 and 5.0) on Windows NT 4.0 without any problems. It also runs on Netscape 4.x but it does not have to run on Netscape so it does not need to be considered.
    We are considering using a commercial Certificate from Verisign. The one we identified was the "Sun Java Signing Digital ID" using the "Code Signer Pro" package.
    1.) Is "Sun Java Signing Digital ID" / "Code Signer Pro" package the right one?
    2) Do I now use java's jarsigner tool instead of the signtool I am currently using?
    Anyone have problem with that combination or have suggestions, please let me know before we go shell out $695 for this. I want to make sure that I get the right Certificate, not a "dud".

    I researched this very thing almost a year ago, and in contact with Verisign they said that they did not support Java code signing yet. They suggested that we talked with Thawte and got their Java code signing certificate. We got it and it worked with the java tools no problem. The certificate was around $200 so $695 sounds a little high. I would try to contact Verisign and ask them to be absolutely sure that the certificate would work with sun's tools.
    The only thing that I warn you about Thawte is that they did not contact us after we submitted the paper work to them for the certificate!! So anyone could practically claim to be a legit company and Thawte would give them a certificate!! We sent them a letter alerting them to this so maybe they've cleaned themselves up.
    charlie

  • ABAP User Roles and Query for accessing particular T- codes and Reports

    dear Gurus
    I have one problem, i want to know about ABAP User Query ,i have one requirement my user wants to Lock all the HR Std versus Customized reports in T- code SQ01,other department peoples also see the Payslips and Hr personal reports which is harmfull to the dept so i want to Lock all the reports in Std T- code in SQ01 and i have created one Customized User Roles or Query in which the T-codes and Reports are assigned only those particular user can access the T-codes and Std reports .how can it be possible i dont have any idea about user roles and Queries .
    kindly help me out or send me some documents related to user roles and queries
    regards ritesh sharma

    Hi Ritesh,
    https://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/103cafc2-7a64-2b10-14b3-eddb7d324561
    Regards,
    Flavya

Maybe you are looking for