JDK1.4 headless vs xvfb vs PJA

I need to generate images on a Solaris box without an X11 server.
As far as I know, my options are:
- PJA
- xvfb
- JDK1.4 in headless mode
I have tested PJA and it is very slow.
Has anyone tested server side image generation using xvfb or JDK1.4 in
headless mode? Which is the fastest? How do they perform compared to
running X11?
Thanks,
/Mattias

Here is how you can do this if you are using the jakarta tomcat 4.0.x
export CATALINA_OPTS="-Djava.awt.headless=true"
Alternatively you can do this in your code (most suitable place is the init() method of your servlet
System.setProperty("java.awt.headless", "ture");
Both the things worked for me. Just to be sure if the sytem propety is set properly check it with
System.out.println("Headless is " + System.getProperty("java.awt.headless");
If it prints true, every thing should work fine. If it false or null means there is some thing wrong.
Note: - Dont use the JAVA_OPTS of the tomcat cat. It looks there is a bug in the startup script (Or atleast I dont know how to use that option ).
Thanks
Raj Saini

Similar Messages

  • BIG Problem with java 1.4 headless mode!!!!

    Hello,
    I try to build in a get method of a servlet an image to send to the client http.
    On my server obviously I havent a display thus I looked for some packages that cuold solve the problem of "CANT COONECT TO X11 ecc.".
    I found three solution:
    1 A virtual frame buffer but It isnt a good solution for me because if 500 users try to connect to my servlet at the same time only one frame buffer could be a problem and It isn't an elegant solution.
    2 A Use pja on my server it dont work I dont know why.
    I have set the System.setProperty("awt.toolkit","com.eteks...PjaToolkit) but it dont work when I try to instaziate a Panel (of Pja types) It give me an exception.
    3 The choose I prefer but It still dont work. Use Java 1.4 beta 3. I try to use this version because it has headles support but it dont work and I see in the bugs database that I'm not the only one that keep this problem in Servlet environment. In the doGet method of my Servlet I use the System.SetProperty("java.awt.headless","true") command to turn on headless support but when I try to instanziate a Panel or a Frame I get the exception HeadlessException.
    Have someone use this property of the jdk 1.4 and could give me some hints.
    I try to change my Xbootclasspath in the zone.properties of my Apache Server through wrapper.bi9n.parameter but I didnt have better result.
    Cuold someone help or I'll cry for all the xmas holiday :-)
    Thank you very much Ponzetti76

    what a pity! I still haven't found a solution for the problem rajsaini mentioned one year ago! I also wrote a class for resizing an image after uploading a file. When I call the mehtod the first time from a jsp a get the error "can't connect to X server .." and when a try it second time I receive NoClassDefFoundError.
    Here is the code of the class I try to call from a jsp
    import java.io.*;
    import java.awt.image.*;
    import java.awt.*;
    import javax.imageio.ImageIO;
    public class imgUp {
    public imgUp() {
    public void generateThumbnail(String fileName, int maxSize) {
    System.setProperty ("java.awt.headless", "true");
    System.out.println("Headless is " +
    System.getProperty"java.awt.headless"));
    try {
    String orgFileName = fileName;
    File orgImgFile = new File(orgFileName);
    String newFileName = orgImgFile.getParent() + "/th_" +
    orgImgFile.getName();
    // read image
    BufferedImage orgImage = ImageIO.read(orgImgFile);
    BufferedImage resizedImage = null;
    // resizing ;))
    int orgImageWidth = orgImage.getWidth(null);
    int orgImageHeight = orgImage.getHeight(null);
    int resizeImageWidth = 0;
    int resizeImageHeight = 0;
    if (orgImageWidth > orgImageHeight) {
    resizeImageWidth = maxSize;
    resizeImageHeight = (maxSize * orgImageHeight) / orgImageWidth;
    } else {
    resizeImageWidth = (maxSize * orgImageWidth) / orgImageHeight;
    resizeImageHeight = maxSize;
    resizedImage = new BufferedImage(resizeImageWidth,resizeImageHeight, Image.SCALE_SMOOTH);
    // Copy image to buffered image.
    Graphics g = resizedImage.createGraphics();
    g.drawImage(orgImage, 0, 0,resizeImageWidth, resizeImageHeight,null);
    /* write the jpeg to a file */
    File file = new File(newFileName);
    ImageIO.write(resizedImage, "jpg", file);
    catch (Exception e){
    System.out.println("exception");
    The strange thing this Exception is never triggerd
    and heres the code of the calling jsp :
    if(request.getParameter("upnow") != null && request.getParameter("upnow").equals("now")){
    imgUp.generateThumbnail("/www/demo/imageupload/i.jpg", 100);
    I set a System.out.println ... after each command of the class and I found out it crashes while this : Graphics g = resizedImage.createGraphics();
    The last thing I want to add is, that the commandline version of class works perfectly.
    Systemenv:tomcat 4.1.18, jdk 1.4
    Thanks for any ideas in advance

  • Flexunit on a headless mac server

    Has anyone successfully ran flexUnit on a headless mac?
    im running ant builds via Jenkins, it will build a flex app no problem, however when I try to build the sample flexunit CI app I get the followin error
    [flexunit] LSOpenURLsWithRole() failed with error -10810 for the file /Library/Jenkins/jobs/flexUnitSampleCIProject/workspace/target/bin/TestRunner.swf.
    im using the Jenkins Xvnc plugin wich looks like it is working however I notice flexUnit is using the following settings
    [flexunit] Using the following settings for the test run: [flexunit] FLEX_HOME: [/Library/Flex/flex_sdk_4] [flexunit] haltonfailure: [false] [flexunit] headless: [false] [flexunit] display: [99] [flexunit] localTrusted: [false] [flexunit] player: [flash] [flexunit] port: [1024] [flexunit] swf: [/Library/Jenkins/jobs/flexUnitSampleCIProject/workspace/target/bin/TestRunner.swf] [flexunit] timeout: [60000ms] [flexunit] toDir: [/Library/Jenkins/jobs/flexUnitSampleCIProject/workspace/target/report]
    If I set headless = true build fails with
    [flexunit] Validating task attributes ...
    [flexunit] OS: [Mac]
    Any help would be greatly apricated

    I'm trying to use Xvfb on OSX with Jenkins and having the same issue:
    [flexunit] Opening server socket on port [1024].
    [flexunit] Waiting for client connection ...
    [flexunit] LSOpenURLsWithRole() failed with error -10810 for the file /Users/Shared/Jenkins/Home/jobs/Flash_Client_UnitTests/workspace/unittest/bin/TestRunner. swf.
    [flexunit]
    [flexunit] Stopping server ...
    [flexunit] End of test data reached, sending acknowledgement to player ...
    [flexunit] Closing client connection ...
    [flexunit] Closing server on port [1024] ...
    And here is what Apple says about that error...
    kLSUnknownErr -10810 An unknown error has occurred.
    Available in OS X v10.0 and later
    ..sigh

  • Headless problems

    Hello, guys!
    I'm very tired of headless mode...
    I have to create image from JComponent (a big chart inside JPanel) at the server side.
    I've started with simple test progrmam:
    ===========================
    public static void makeTestImage() throws Exception {
    System.out.println("Headless? " + GraphicsEnvironment.isHeadless());
    JPanel panel = new JPanel();
    panel.addNotify(); // Since we have no pack
    panel.setOpaque(true);
    panel.setPreferredSize(new Dimension(300,300));
    panel.add(new JButton("Test"));
    BufferedImage image = new BufferedImage(300,300,BufferedImage.TYPE_INT_ARGB);
    Graphics g = image.createGraphics();
    panel.print(g);
    ImageIO.write(image, "png", new File("test.png"));
    =============================
    I'm running it with : -Djava.awt.headless=true
    Here is output, "Headless? true"
    But new image is just black panel 300x300
    I've tried open exist image and printString there: no problem. But i can not
    export JComponent into image...
    Surprisely, when i've add new method:
    ============================
    public static void paintMe(JComponent comp, Graphics g) {
    int count = comp.getComponentCount();
    comp.paint(g);
    for(int i=0;i<count;i++) {
    if( comp.getComponent(i) instanceof JComponent) {
    paintMe((JComponent)comp.getComponent(i),g);
    else {
    comp.getComponent(i).paint(g);
    ============================
    and insteam of panel.paint(g), calling paintMe(panel,g), sometimes it works!!!
    But not always. And it worked only for 1 panel. If I add new JPanel with some components inside panel,
    I've got HadlessException. It could be fix with set doubleBuffer(false) for new JPanel, but as result: wrong alignment (one component under second...) And it doesn't work always!
    I'me so tired with this task, but it is impossible to ask admin for instaling and running X-server at the UNIX box...
    Could anybody say me, how i can fix my problem ? Or headless is real Head Less for Java 1.4 and i have to use X-emulator or pja lib ?
    Tested platform:
    WindowsNT
    java version "1.4.2_03"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.2_03-b02)
    Java HotSpot(TM) Client VM (build 1.4.2_03-b02, mixed mode)
    Solaris
    java version "1.4.1_01"
    Java(TM) 2 Runtime Environment, Standard Edition (build 1.4.1_01-b01)
    Java HotSpot(TM) Client VM (build 1.4.1_01-b01, mixed mode)

    I've used headless graphics too; 1.4 should be ok with them
    Though what I haven't done is to use JComponents in headless. I've just created a BufferedImage and drawn to that. Are you sure you need to draw GUI components?
    <guessing mode on>GUIs tend to run in their own threads. The GUI thread gets a repaint event, at which point it redraws. The random behaviour could be from that: sometimes the GUI thread manages to run and repaint, sometimes not. Maybe put a bit of Thread.sleep() in there -- though this would not be an industrial strength solution, as it very much creates a race condition. But if you need to create a few one-off "screen shots" of a program for a manual or something you might get away with it.

  • Automating a flex app on a headless server

    I have a flex chart drawing application that needs to be automated. When automated it will read in data from the DB, draw the charts, and save them as .png files. This works flawlessly on my localhost version of oc4j on my Mac. However it has never worked on our Solaris oc4j deployment which is a headless server. I've set flex to run as headless in the config files but no dice. How can I get this working? Here are some of the error messages I'm getting:
    LINUX/UNIX browser attempting to launch /opt/sfw/bin/firefox http://flexdomain.yadayadyada
    08/11/06 14:41:53
    user dir: /usr/local/src/oracle/product/10.1.3.2.0/OracleAS_1/j2ee/home
    08/11/06 14:41:54 ERR>The application 'firefox-bin' lost its connection to the display flexdomain. yadayadyada:1.0;
    08/11/06 14:41:54 ERR>most likely the X server was shut down or you killed/destroyed
    08/11/06 14:41:54 ERR>the application.
    08/11/06 14:41:54 ExitValue: 1
    And here's a snippet from the Java which launches the flex app in the firefox browser:
    String cmd = "/opt/sfw/bin/ff.sh "+ url; // ff.sh is a script which sets DISPLAY and launches firefox with the flex url
    Runtime rt = Runtime.getRuntime();
    Process p = rt.exec(cmd);
    I'm using 10g, by the way.
    Thanks!
    Edited by: Solerous on Nov 7, 2008 7:04 AM

    Ok, I'm convinced that this is some sort of configuration problem. I can get the browser to launch when written as a simple java program compiled at the command line:
    import java.util.*;
    import java.io.*;
    public class Launcher {
    public static void main(String args[]) throws IOException {
    String url = "http://www.ebay.com";
    String[] commands = {"/bin/sh", "-c", "/opt/sfw/bin/firefox ", url, "-width", "1600", "-height", "1200", ":5"};
    ProcessBuilder pb = new ProcessBuilder(commands);
    Map<String, String> env = pb.environment();
    env.put( "DISPLAY", ":5" );
    Iterator it = env.entrySet().iterator();
    while (it.hasNext()) {
    Map.Entry pairs = (Map.Entry)it.next();
    System.out.println("\t>> environ: "+pairs.getKey() + " = " + pairs.getValue());
    Process process = pb.start();
    The output is just to show the environment variables and it looks like this:
         >> environ: XFILESEARCHPATH = /usr/dt/app-defaults/%L/Dt
    >> environ: LANG = C
    >> environ: DISPLAY = :5
    >> environ: ORACLE_BASE = /oracle
    >> environ: ORACLE_TERM = vt100
    >> environ: PWD = /usr/local/u00/de8
    >> environ: _ = /usr/bin/java
    >> environ: MAGICK_HOME = /usr/ImageMagicK/ImageMagick-6.4.4
    >> environ: ORACLE_SID = cots
    >> environ: USER = de8
    >> environ: NLSPATH = /usr/dt/lib/nls/msg/%L/%N.cat
    >> environ: EDITOR = /bin/vi
    >> environ: MOZILLA_SOLARIS_PATCHCHECKER = disable_patchchecker
    >> environ: HOME = /u00/de8
    >> environ: SSH_CONNECTION = 128.219.196.118 64994 160.91.230.33 22
    >> environ: LD_LIBRARY_PATH = /usr/jdk/instances/jdk1.5.0/jre/lib/sparc/server:/usr/jdk/instances/jdk1.5.0/jre/lib/sparc:/usr/jdk/instances/jdk1.5.0/jre/../lib/sparc:/opt/SUNWspro/lib:/usr/openwin/lib:/usr/dt/lib:/usr/ImageMagicK/ImageMagick-6.4.4/lib::/oracle/product/9.2.0/lib
    >> environ: LOGNAME = de8
    >> environ: SHELL = /bin/ksh
    >> environ: ORACLE_HOME = /oracle/product/10.1.3.2.0/OracleAS_1
    >> environ: SSH_TTY = /dev/pts/1
    >> environ: MAILMSG = [YOU HAVE NEW MAIL]
    >> environ: MANPATH = /usr/opt/SUNWmd/man:/usr/man:/usr/local/man:/usr/share/man:
    >> environ: NNTPSERVER = time.ornl.gov
    >> environ: SSH_CLIENT = 128.219.196.118 64994 22
    >> environ: MAIL = /var/mail/de8
    >> environ: TZ = US/Eastern
    >> environ: PS1 = ${PWD###/} $
    >> environ: TERM = vt100
    >> environ: PATH = /oracle/product/10.1.3.2.0/OracleAS_1:/oracle/product/10.1.3.2.0/OracleAS_1/OPatch:/usr/xpg4/bin:/usr/ccs/bin:/usr/local/bin:/usr/bin:/usr/ucb:/etc:/usr/sbin:/u00/de8/bin:/opt/NSCPcom:/sbin:/usr/local/etc:/usr/lib:/usr/opt/SUNWmd/sbin:/usr/bin:/usr/local/bin/perl5.00502:/usr/openwin/bin:/opt/sfw/bin:/usr/ImageMagicK/ImageMagick-6.4.4/bin:.:/oracle/product/9.2.0/bin
    I decided to output the env vars in hopes that it would show what needs to be reset. But if I use the exact same code in my deployment, it fails and I get the following env settings:
    08/12/09 14:14:27 >> environ: XFILESEARCHPATH = /usr/dt/app-defaults/%L/Dt
    08/12/09 14:14:27 >> environ: LANG = C
    08/12/09 14:14:27 >> environ: DISPLAY = :5
    08/12/09 14:14:27 >> environ: ORACLE_CONFIG_HOME = /oracle/product/10.1.3.2.0/OracleAS_1
    08/12/09 14:14:27 >> environ: NLSPATH = /usr/dt/lib/nls/msg/%L/%N.cat
    08/12/09 14:14:27 >> environ: TMP = /tmp
    08/12/09 14:14:27 >> environ: TZ = US/Eastern
    08/12/09 14:14:27 >> environ: NLS_LANG = AMERICAN_AMERICA.WE8MSWIN1252
    08/12/09 14:14:27 >> environ: ORA_NLS33 = /oracle/product/10.1.3.2.0/OracleAS_1/ocommon/nls/admin/data
    08/12/09 14:14:27 >> environ: LD_LIBRARY_PATH = /usr/local/src/oracle/product/10.1.3.2.0/OracleAS_1/jdk/jre/lib/sparc/server:/usr/local/src/oracle/product/10.1.3.2.0/OracleAS_1/jdk/jre/lib/sparc:/usr/local/src/oracle/product/10.1.3.2.0/OracleAS_1/jdk/jre/../lib/sparc:/oracle/product/10.1.3.2.0/OracleAS_1/opmn/lib:/oracle/product/10.1.3.2.0/OracleAS_1/lib32
    08/12/09 14:14:27 >> environ: X_LD_LIBRARY_PATH_64 = /oracle/product/10.1.3.2.0/OracleAS_1/lib
    08/12/09 14:14:27 >> environ: ORACLE_HOME = /oracle/product/10.1.3.2.0/OracleAS_1
    08/12/09 14:14:27 >> environ: SHELL = /bin/bash
    Does anyone know how I can get the deployed version (running in the server container) to work exactly in the same way as the version run from a simple command line?

  • Jdk1.4 Timer problem

    Hi all,
    I am using the Timer class provided with JDK1.4. During scheduling, you take the current time as the reference time for relative timer. Everything is ok if i dont change the system time.
    But consider this scenario. If i have a heartbeat timer (which dont worries about the current time) which ticks every 500 milliseconds ( after some 5 to 6 ticks I am disconnecting from the server) but when I change the system time, the heartbeat will tick many number of times depending on the changed time assuming that timout is happened and get disconnected with the server.
    How can I solve this? If it can't be done with jdk timer, please help in identifying a solution for this?
    TIA
    Karthik

    In response to cpolizzi: (Not in original posting order)
    One reason that I do not like the
    javax.swing.Timer is that it requires a
    graphical subsystem to be present.One would expect that from a javax.swing class, yes. Swing is a graphical toolkit.
    Digressing slightly, note that since Java 1.4, the AWT no longer needs a graphical subsystem to be present, so image manipulation (and such) is now possible on headless J2EE servers.
    The Java application created and started both J2SE
    supplied timers each for a one minute delay as well as
    two other threads. One thread does a
    Thread.sleep for one minute and the other
    thread does an Object.wait with a timeout for
    one minute on a locally created object to synchronize
    on. After the two timers and threads were started,
    which I tried to start as close as possible, the main
    application thread also does a Thread.sleep for
    one minute. After the main application thread went to
    sleep, I changed the system clock back by one minute.
    The results: the two threads doing a
    Thread.sleep and Object.wait "woke" back
    up after one minute even despite the change in the
    system clock as did the main application thread also
    doing a Thread.sleep. However, the two J2SE
    supplied timers did not. Instead, each of those
    timers "expired" when the system clock reached one
    minute after the time in which each one was scheduled
    or started. I encountered this behavior on both of
    the JVM's I have loaded on my W2K box.This is 100% correct behaviour, exactly as I would expect.
    I also tried setting the system clock ahead by 30
    seconds, one minute and even five minutes after
    everything is going and it seems that the J2SE timers
    were not affected - each expired right when other
    threads resumed from their sleep and wait. I
    encountered this behavior on both of the JVM's I have
    loaded on my W2K box.Once again, this behaviour is as close to correct as is reasonably possible.
    Without delving into the implementation into either
    one of the J2SE supplied timers, it seems to me that
    both of these timers, when they are effectively
    started ticking, calculate the expected expiration
    time relative to the current system time and use a
    polling mechanism on seperate threads.Perhaps you should have delved.
    java.util.Timer works on a priority queue of tasks. It will wait (using Object.wait()) for the time period required for the next task to expire, and then test if the task has indeed expired, through a comparison to System.currentTimeMillis(). If it hasn't, presumably because of spurious wakeup, it will again wait until it expects the task to expire and retest. Exceptions to this flow may occur if the task queue changes - if a task is scheduled or rescheduled, so the expected closest expiry time is closer than the current waiting time, then the wait will be interrupted and recalculated. If the next task is unscheduled, then the wait will be interrupted and recalculated for the next task in line.
    Thus, if you move the system time back, then the timer will indeed wait until the Task's scheduled expiry date/time has been reached... if you move the system time forward, then when the timer wakes up from its wait, it will realise that the task has indeed expired and it will fire as expected, unless it is deemed too late to fire.
    To summarise, java.util.Timer is an optimal implementation of a single-threaded event scheduler for events scheduled to execute at a particular time in the future, marked by a given date and time. See below for comments on spurious wakeup for why this is so.
    My bottom line expectation is that when it comes to
    relative timers, a duration is a duration regardless
    of what happens to the system's notion of current
    time.You will note that java.util.Timer offers a cron-like facility for tasks to be performed at set times during the day. It can also be used to perform tasks at set time intervals, but such behaviour requires a constant and predictable system time.
    You should further note that changing the system time will not prevent a task executing, unless the system time has been moved later than the allowable execution time for a particular task - which is exactly defined in the documentation, and the most correct behaviour that could be reasonably expected.
    Aside from the fact that I find this behavior of the
    supplied J2SE timers unacceptable, that is if the
    synopsis is correct, I need to find a way around this
    problem. The only reasonable course of action that I
    have is to implement my own timers. Fortunately, the
    impact to any dependent code at work will be isolated
    since I have already abstracted the J2SE timer
    dependencies from the clients.This is correct. If you want custom, specific behaviour in a context that provided system classes do not cater for, then you will need to either find an alternate implementation or build your own.
    Digressing again, all waits should be performed in a while loop to prevent against spurious thread wakeup. The wait condition should hold the definitive break condition for the wait loop... in the case of an accurate timer, the break condition is that the required number of milliseconds have passed since the wait was entered. I challenge you to implement an accurate timer that is not dependent on the system time and is protected against spurious wakeup.
    Spurious wakeup is not just theoretical - I have actually had to rework a non-protected wait() providing a simple delay into a time-dependent looping wait because I was experiencing consistent spurious wakeup in a particular circumstance. I still don't know what the circumstance was exactly, but double-checking against the system time meant I didn't have to (Incidentally, the spurious wakeup didn't recur, so the system was not ever reduced to polling)
    As for the java.util.Timer, each timer has its
    own queue which runs on a seperate VM thread. So, if
    I go and create thousands of timers (ala new
    java.util.Timer()) I get thousands of VM threads.Why would you expect any different? java.util.Timer supports arbitrarily many tasks being scheduled at any particular time (Subject to restrictions as mentioned in the java.util.Timer javadoc documentation), so only one Timer object needs to be created. More than one may be created, so distinct subsystems of a framework can execute completely distinct timers (ie- one subsystem's timer failing for any reason won't bring the other subsystems' timers down). If you dislike such flexibility, feel free to devise your own interface.

  • Using headless with JAVA 1.3

    i have wrote a program which draws images, acording to its input.
    when working with java 1.4, one can set the system property "java.awt.headless" to "true", and by that creating images in offscreens programs.
    I am using a server which runs on Free BSD, and java 1.3 and it is not working there.
    what else can i do to make it work?

    Maybe this will help you:
    http://lists.isb.sdnpk.org/pipermail/comp-list/2002-September/001276.html
    Quoting:
    For those using JDK 1.3 and before, there's the Pure Java AWT (PJA)
    Toolkit, available from eTeks. It's a headless Java server that's
    configured
    in much the same way as the 1.4 Sun version, via a set of -D property
    flags.
    You'll need to download the jars, put them in your classpath, and then
    set the following flags:
    Dawt.toolkit=com.eteks.awt.PJAToolkit
    Djava.awt.graphicsenv=com.eteks.java2d.PJAGraphicsEnvironment
    With the IBM JDK, you may find you need the following properties where,
    lib/pja is the location of your PJA jars:
    Djava.awt.fonts=$JAVA_HOME/jre/lib/fonts
    Djava2d.font.usePlatformFont=false
    Duser.home=lib/pja
    You can download the PJA Toolkit from eTeks' Web site.
    http://www.eteks.com/pja/en/

  • Problems for wlserver on win2kpro with sun jdk1.3.1

    "I make evaluation for my company for BEA Weblogic Server 5.1 for Win2kPro with SP10 and with SUN jdk1.3.1 all is ok when I setup wlconfig -JAVA_HOME=C:\jdk1.3.1 but when I start wlserver I receive :

    after the first time, maybe WeChat is not completely turned off (= headless app).
    What you can simply do is open the device monitor (it is in the device settings, but I have put it directly in the Quick Settings drawer).
    Once the device monitor is open, in the bottom row tap on the "Memory" button. The screen changes, and you can find the WeChat app in the list. Tap and hold on it, and a menu will appear to the right, the top button in that overflow menu is "Close".
    If you tap on it it will really close the app, and you can then open it again.
    That being said, I can open and close WeChat and reopen it without doing all that.
    WeChat is a very nice app, even though it does not always show me people around me, sometimes people 4000km away.
    The search box on top-right of this page is your true friend, and the public Knowledge Base too:

  • Know Problems Using JFreeChart + PJA + Weblogic 7.0?

    Hello,
    I am using Weblogic 7.0 + JDK1.3 running on Solaris
    To make use of JFreeChart I am trying to use PJA (Pure Java AWT).
    I read that there are some problems with using PJA on Weblogic like Memory Leakage.
    Has anyone used PJA till now? If so, could you please let me know if you have any such problems & solutions.
    TIA.
    Regards,
    Jaya

    Hello,
    I am using Weblogic 7.0 + JDK1.3 running on Solaris
    To make use of JFreeChart I am trying to use PJA (Pure Java AWT).
    I read that there are some problems with using PJA on Weblogic like Memory Leakage.
    Has anyone used PJA till now? If so, could you please let me know if you have any such problems & solutions.
    TIA.
    Regards,
    Jaya

  • Draw image using headless mode

    We use a 3rd-party swing chart package to draw chart on the backend. Basically what we did is to add the chart(JComponent) to a JFrame, and take a snapshot. In the normal case with display device available, it works ok. If we use headless mode, it throws HeadlessException, and the frame is null.
    Besides Xvfb, is there any simple way to generate JComponent image on the backend? Or can I render the chart in different container to generate the image?
    Thanks

    you need to override one of the container class where you put your graph component such that it works with default values or uses variable values for its methods from alternate sources.

  • Headless support

    So I developed an image resizing class and successfully tested it on local Windows environment. However, as soon as I tested this code on our Linux webserver, I started receiving x server connect errors. I did some research and discovered this was because the linux webserver is headless.
    After doing more research, I found that in headless mode support has been available since the J2SE 1.4 platform. So, I set the headless mode system property to be true and my code still won't run. Now, instead of Tomcat shutting down with the x server connect error, I simply get Headless exceptions thrown.
    I read stuff like, " Instead of setting up a dummy X server like Xvfb, just put the parameter "-Djava.awt.headless=true" in your Java invocation line, and that's it! Life is good." I'm confused, all this parameter seems to do is cause my code to throw an exception instead of completely bombing out. Methods such as:
    java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment()
    still don't seem like they can run in headless mode. So what purpose does it actually serve? Please help!

    Thank you for getting back to me. Alright, here are the details. First my code:
    public class ImageScale {
         public static void scale(File inFile, String photoDir) {
         try {
                   FileInputStream fs = new FileInputStream(inFile);
                   JPEGImageDecoder decoder = JPEGCodec.createJPEGDecoder(fs);
                   BufferedImage srcImg = decoder.decodeAsBufferedImage();
                   fs.close();
                   JPEGDecodeParam param = decoder.getJPEGDecodeParam();
                   int width = param.getWidth();
                   scaleHelper(width, 150, photoDir, srcImg, inFile);
              catch (Exception e) {
              System.out.println (e);
         public static void scaleHelper(int width, int size, String photoDir, BufferedImage srcImg, File inFile) {
         try {
              double scale = calculateScale(width, size);
              FileOutputStream out = new FileOutputStream (new File (photoDir + "/" + PicUploader.getPictureFileName(inFile.getName(),Integer.toString(size))));
              Image img = getScaledInstance(srcImg, scale, getDefaultConfiguration());
         BufferedImage biImg = toBufferedImage(img, BufferedImage.TYPE_INT_RGB);
         JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(out,JPEGCodec.getDefaultJPEGEncodeParam(biImg));          
              encoder.encode(biImg);
              out.close();
              catch (Exception e) {
              System.out.println (e);
         public static double calculateScale(int length, int limit) {
              double scale;
              if (length < limit) {
              scale = 1d;
              } else {
              scale = (double)limit/(double)length ;
              return scale;
    public static GraphicsConfiguration getDefaultConfiguration() {
         GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
         GraphicsDevice gd = ge.getDefaultScreenDevice();
         return gd.getDefaultConfiguration();
    public static BufferedImage copy(BufferedImage source, BufferedImage target, Object interpolationHint) {
    Graphics2D g = target.createGraphics();
    g.setRenderingHint(RenderingHints.KEY_INTERPOLATION, interpolationHint);
    double scalex = (double) target.getWidth() / source.getWidth();
    double scaley = (double) target.getHeight() / source.getHeight();
    AffineTransform at = AffineTransform.getScaleInstance(scalex, scaley);
    g.drawRenderedImage(source, at);
    g.dispose();
    return target;
    public static BufferedImage getScaledInstance2D(BufferedImage source, double factor, Object interpolationHint, GraphicsConfiguration gc) {
    if (gc == null)
    gc = getDefaultConfiguration();
    int w = (int) (source.getWidth() * factor);
    int h = (int) (source.getHeight() * factor);
    int transparency = source.getColorModel().getTransparency();
    return copy(source, gc.createCompatibleImage(w, h, transparency), interpolationHint);
    public static Image getScaledInstanceAWT(BufferedImage source, double factor, int hint) {
    int w = (int) (source.getWidth() * factor);
    int h = (int) (source.getHeight() * factor);
    return source.getScaledInstance(w, h, hint);
    public static Image getScaledInstance(BufferedImage source, double factor, GraphicsConfiguration gc) {
    if (factor >= 1.0)
    return getScaledInstance2D(source, factor, RenderingHints.VALUE_INTERPOLATION_BICUBIC, gc);
    else
    return getScaledInstanceAWT(source, factor, Image.SCALE_AREA_AVERAGING);
    public static BufferedImage toBufferedImage(Image image, int type) {
    int w = image.getWidth(null);
    int h = image.getHeight(null);
    BufferedImage result = new BufferedImage(w, h, type);
    Graphics2D g = result.createGraphics();
    g.drawImage(image, 0, 0, null);
    g.dispose();
    return result;
    Really, right now, I'm only trying to create thumbnails on the server so only the getScaledInstance2D method is being invoked. Like I said, originally, I was getting the x server connection error. But, I added the headless attribute to my startup scripts and now I receive the following exception:
    java.awt.HeadlessException
    I don't understand what the headless attribute does then? Does anyone see a way I could change my code so that this problem doesn't happen on the server.
    On a related note, I've tried using Xvfd without success also. I have a process running in the bg:
    root 25078 24923 0 21:48 pts/2 00:00:00 /usr/X11R6/bin/Xvfb :10 -screen 0 1152x900x8
    And the DISPLAY var set to the correct server slot:
    # echo $DISPLAY
    localhost:10.0
    And this doesn't seem to work either. Please help!

  • Application developed using and compliant for jdk1.2.2 needing to get context to WL6.1 running JDK1.3.1

    Note works under JDL 1.3.1, but not under JDK 1.2.2. Is there a fix?
    C:\bea\wlserver6.1\samples>c:\jdk1.3.1_01\bin\java
    examples.jndi.InitialContextExample t3://localhost:9001 system password
    WebLogic context created on behalf of "system"
    C:\bea\wlserver6.1\samples>java examples.jndi.InitialContextExample
    t3://localhost:9001 system password
    java.io.StreamCorruptedException: Type code out of range, is 0
    at java.io.ObjectInputStream.peekCode(ObjectInputStream.java:1280)
    at
    java.io.ObjectInputStream.SkipToEndOfBlockData(ObjectInputStream.java
    :1211)
    at
    java.io.ObjectInputStream.inputClassDescriptor(ObjectInputStream.java
    :776)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:353)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:232)
    at java.io.ObjectInputStream.inputObject(ObjectInputStream.java:978)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
    at java.io.ObjectInputStream.readObject(ObjectInputStream.java:232)
    at
    weblogic.common.internal.ChunkedObjectInputStream.readObject(ChunkedO
    bjectInputStream.java:107)
    at
    weblogic.common.internal.ChunkedObjectInputStream.readObject(ChunkedO
    bjectInputStream.java:115)
    at
    weblogic.rjvm.ConnectionManager.readPeerInfo(ConnectionManager.java:6
    86)
    at
    weblogic.rjvm.ConnectionManagerClient.handleIdentifyResponse(Connecti
    onManagerClient.java:140)
    at
    weblogic.rjvm.ConnectionManager.dispatch(ConnectionManager.java:627)
    at weblogic.rjvm.t3.T3JVMConnection.dispatch(T3JVMConnection.java,
    Compi
    led Code)
    at
    weblogic.socket.JavaSocketMuxer.processSockets2(JavaSocketMuxer.java,
    Compiled Code)
    at
    weblogic.socket.JavaSocketMuxer.processSockets(JavaSocketMuxer.java,
    Compiled Code)
    at
    weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:
    24)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java, Compiled
    Code)
    --------------- nested within: ------------------
    weblogic.utils.AssertionError: ***** ASSERTION FAILED ***** - with nested
    except
    ion:
    [java.io.StreamCorruptedException: Type code out of range, is 0]
    at
    weblogic.rjvm.ConnectionManager.readPeerInfo(ConnectionManager.java:6
    88)
    at
    weblogic.rjvm.ConnectionManagerClient.handleIdentifyResponse(Connecti
    onManagerClient.java:140)
    at
    weblogic.rjvm.ConnectionManager.dispatch(ConnectionManager.java:627)
    at weblogic.rjvm.t3.T3JVMConnection.dispatch(T3JVMConnection.java,
    Compi
    led Code)
    at
    weblogic.socket.JavaSocketMuxer.processSockets2(JavaSocketMuxer.java,
    Compiled Code)
    at
    weblogic.socket.JavaSocketMuxer.processSockets(JavaSocketMuxer.java,
    Compiled Code)
    at
    weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:
    24)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java, Compiled
    Code)
    Failed to contact t3://localhost:9001.
    Is there a server running at this address?
    C:\bea\wlserver6.1\samples>

    Right. Using WebLogic RMI proprietary implementation (t3) with 6.1 requires
    1.3 on the client side. If you absolutely have to use 1.2 on the client side,
    IIOP should work - I just tried this and it looks like WebLogic 6.1 implements
    EJB spec interop requirements pretty well.
    Jonathon Cano <[email protected]> wrote:
    I saw an article saying use iiop and then deploy your beans for such. I can
    get context over IIOP using jdk1.2.2 to WLS 6.1. I have not yet deployed
    beans or recompiled anything to try this all the way. Does this work?
    Should I proceed? or is there a gotcha?
    "Dimitri Rakitine" <[email protected]> wrote in message
    news:[email protected]...
    6.1 requires 1.3 on the client. (it uses dynamic proxies, so 1.2 willnot
    work).
    Jonathon Cano <[email protected]> wrote:
    Note works under JDL 1.3.1, but not under JDK 1.2.2. Is there a fix?
    C:\bea\wlserver6.1\samples>c:\jdk1.3.1_01\bin\java
    examples.jndi.InitialContextExample t3://localhost:9001 system password
    WebLogic context created on behalf of "system"
    C:\bea\wlserver6.1\samples>java examples.jndi.InitialContextExample
    t3://localhost:9001 system password
    java.io.StreamCorruptedException: Type code out of range, is 0
    at
    java.io.ObjectInputStream.peekCode(ObjectInputStream.java:1280)
    at
    java.io.ObjectInputStream.SkipToEndOfBlockData(ObjectInputStream.java
    :1211)
    at
    java.io.ObjectInputStream.inputClassDescriptor(ObjectInputStream.java
    :776)
    atjava.io.ObjectInputStream.readObject(ObjectInputStream.java:353)
    atjava.io.ObjectInputStream.readObject(ObjectInputStream.java:232)
    atjava.io.ObjectInputStream.inputObject(ObjectInputStream.java:978)
    atjava.io.ObjectInputStream.readObject(ObjectInputStream.java:369)
    atjava.io.ObjectInputStream.readObject(ObjectInputStream.java:232)
    at
    weblogic.common.internal.ChunkedObjectInputStream.readObject(ChunkedO
    bjectInputStream.java:107)
    at
    weblogic.common.internal.ChunkedObjectInputStream.readObject(ChunkedO
    bjectInputStream.java:115)
    at
    weblogic.rjvm.ConnectionManager.readPeerInfo(ConnectionManager.java:6
    86)
    at
    weblogic.rjvm.ConnectionManagerClient.handleIdentifyResponse(Connecti
    onManagerClient.java:140)
    at
    weblogic.rjvm.ConnectionManager.dispatch(ConnectionManager.java:627)
    atweblogic.rjvm.t3.T3JVMConnection.dispatch(T3JVMConnection.java,
    Compi
    led Code)
    at
    weblogic.socket.JavaSocketMuxer.processSockets2(JavaSocketMuxer.java,
    Compiled Code)
    at
    weblogic.socket.JavaSocketMuxer.processSockets(JavaSocketMuxer.java,
    Compiled Code)
    at
    weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:
    24)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java,Compiled
    Code)
    --------------- nested within: ------------------
    weblogic.utils.AssertionError: ***** ASSERTION FAILED ***** - withnested
    except
    ion:
    [java.io.StreamCorruptedException: Type code out of range, is 0]
    at
    weblogic.rjvm.ConnectionManager.readPeerInfo(ConnectionManager.java:6
    88)
    at
    weblogic.rjvm.ConnectionManagerClient.handleIdentifyResponse(Connecti
    onManagerClient.java:140)
    at
    weblogic.rjvm.ConnectionManager.dispatch(ConnectionManager.java:627)
    atweblogic.rjvm.t3.T3JVMConnection.dispatch(T3JVMConnection.java,
    Compi
    led Code)
    at
    weblogic.socket.JavaSocketMuxer.processSockets2(JavaSocketMuxer.java,
    Compiled Code)
    at
    weblogic.socket.JavaSocketMuxer.processSockets(JavaSocketMuxer.java,
    Compiled Code)
    at
    weblogic.socket.SocketReaderRequest.execute(SocketReaderRequest.java:
    24)
    at weblogic.kernel.ExecuteThread.execute(ExecuteThread.java:139)
    at weblogic.kernel.ExecuteThread.run(ExecuteThread.java,Compiled
    Code)
    Failed to contact t3://localhost:9001.
    Is there a server running at this address?
    C:\bea\wlserver6.1\samples>--
    Dimitri
    Dimitri

  • JDBC/OCI driver for JDK1.2

    Hi,
    I have an evaluation copy of Oracle8 version 8.0.3.0 and
    downloaded the JDBC/OCI driver for JDK1.1 (classe111.zip). The
    example I used was also taken from this site, which connects to
    the database and lists ename from emp, using scott/tiger.
    Everything worked fine under JDK1.1 but I can't get the code to
    work with JDK 1.2
    Does Oracle provide a JDBC/OCI driver that will work with JAVA
    1.2 or am I missing something. Please note that I am not using
    Oracle8i.
    Any assistance would be greatly appreciated.
    Karim
    null

    Karim,
    Openlink Software (http://www.openlinksw.com) provides JDBC 2.0
    drivers in version 3.2. This version will be hitting our public
    web site next week, but you can get pre-release components from
    ftp://ftp.openlinksw.com/pre-3.2/index.html
    The JDK 1.2 drivers are all the way at the bottom under the
    Windows section.
    HTH,
    Stephen
    Karim (guest) wrote:
    : Hi,
    : I have an evaluation copy of Oracle8 version 8.0.3.0 and
    : downloaded the JDBC/OCI driver for JDK1.1 (classe111.zip). The
    : example I used was also taken from this site, which connects
    to
    : the database and lists ename from emp, using scott/tiger.
    : Everything worked fine under JDK1.1 but I can't get the code
    to
    : work with JDK 1.2
    : Does Oracle provide a JDBC/OCI driver that will work with JAVA
    : 1.2 or am I missing something. Please note that I am not using
    : Oracle8i.
    : Any assistance would be greatly appreciated.
    : Karim
    null

  • Oracle Lite + Resin + jdk1.2.2 or jdk 1.3.1 problem

    Hi!
    Can some one help me this the following:
    I used Oracle Lite database, Resin app server and jdk1.2.2
    When I try to connect my database through simple java-application, all goes fine! But, when I trying to get database communication from my application server and problem arise. First of all dll's such as
    OLJDBC40.DLL, OLAD2040.DLL, OLOBJ40.DLL, OLOD2040.DLL OLSQL40.DLL are in the Path and JVM loads them at runtime. I got connection to DB. Than I try to get some DatabaseMetaData info and got EXCEPTION_ACCESS_VIOLATION (for jdk1.3) and "java.exe has generated error (for jdk1.2.2)" errors from VM.
    So, any idea?
    Any help apriciated...
    RGS,
    parasolko

    Hi,
    I have got the similar problem when I used MS SQL server + Tomcat + JDK1.3.0 via JdbcOdbc driver. In that configuration the JVM crashs very often. It seems that JdbcOdbc's got unstable problem. Then, I tried other type 4 JDBC driver, it works fine and JVM won't crash. Try Sprinta 2000 JDBC driver, it's a type 4 driver and fast stable.
    Ma

  • Why dynamic table creation with struts working only for JDK1.3.1_02 version

    Row
    import java.util.Vector;
    public class Row
    private static int colsize;
    private Column[] columns;
    public void setColumns(Column[] columns)
    System.out.println("SetColumns");
    this.columns = columns;
    public void setColumn(int i, Column column)
         System.out.println("setting"+ i+"th column"+column);
    public Column[] getColumns()
    return null;
    public Column getColumns(int i)
    System.out.println("Column"+i);
    System.out.println("Colsize"+colsize);
    if(columns == null)
    columns= new Column[colsize];
    if(columns[i] == null)
    columns[i] = new Column();
    return columns;
    public int getColsize()
         return colsize;
    public static void setColsize(int size)
         colsize = size;
    Column:
    public class Column
    private String value;
    public void setValue(String value)
    System.out.println("Value="+value);
    this.value = value;
    public String getValue()
    return value;
    ApplicationResources:
    button.cancel=Cancel
    button.confirm=Confirm
    button.reset=Reset
    button.save=Save
    database.load=Cannot load database from {0}
    error.database.missing=<li>User database is missing, cannot validate logon credentials</li>
    error.fromAddress.format=<li>Invalid format for From Address</li>
    error.fromAddress.required=<li>From Address is required</li>
    error.fullName.required=<li>Full Name is required</li>
    error.host.required=<li>Mail Server is required</li>
    error.noSubscription=<li>No Subscription bean in user session</li>
    error.password.required=<li>Password is required</li>
    error.password2.required=<li>Confirmation password is required</li>
    error.password.match=<li>Password and confirmation password must match</li>
    error.password.mismatch=<li>Invalid username and/or password, please try again</li>
    error.replyToAddress.format=<li>Invalid format for Reply To Address</li>
    error.transaction.token=<li>Cannot submit this form out of order</li>
    error.type.invalid=<li>Server Type must be 'imap' or 'pop3'</li>
    error.type.required=<li>Server Type is required</li>
    error.username.required=<li>Username is required</li>
    error.username.unique=<li>That username is already in use - please select another</li>
    errors.footer=</ul><hr>
    errors.header=<h3><font color="red">Validation Error</font></h3>You must correct the following error(s) before proceeding:<ul>
    errors.ioException=I/O exception rendering error messages: {0}
    heading.autoConnect=Auto
    heading.subscriptions=Current Subscriptions
    heading.host=Host Name
    heading.user=User Name
    heading.type=Server Type
    heading.action=Action
    index.heading=MailReader Demonstration Application Options
    index.logon=Log on to the MailReader Demonstration Application
    index.registration=Register with the MailReader Demonstration Application
    index.title=MailReader Demonstration Application (Struts 1.0-b1)
    index.tour=A Walking Tour of the Example Application
    linkSubscription.io=I/O Error: {0}
    linkSubscription.noSubscription=No subscription under attribute {0}
    linkUser.io=I/O Error: {0}
    linkUser.noUser=No user under attribute {0}
    logon.title=MailReader Demonstration Application - Logon
    mainMenu.heading=Main Menu Options for
    mainMenu.logoff=Log off MailReader Demonstration Application
    mainMenu.registration=Edit your user registration profile
    mainMenu.title=MailReader Demonstration Application - Main Menu
    option.imap=IMAP Protocol
    option.pop3=POP3 Protocol
    prompt.autoConnect=Auto Connect:
    prompt.fromAddress=From Address:
    prompt.fullName=Full Name:
    prompt.mailHostname=Mail Server:
    prompt.mailPassword=Mail Password:
    prompt.mailServerType=Server Type:
    prompt.mailUsername=Mail Username:
    prompt.password=Password:
    prompt.password2=(Repeat) Password:
    prompt.replyToAddress=Reply To Address:
    prompt.username=Username:
    registration.addSubscription=Add
    registration.deleteSubscription=Delete
    registration.editSubscription=Edit
    registration.title.create=Register for the MailReader Demostration Application
    registration.title.edit=Edit Registration for the MailReader Demonstration Application
    subscription.title.create=Create New Mail Subscription
    subscription.title.delete=Delete Existing Mail Subscription
    subscription.title.edit=Edit Existing Mail Subscription
    LogonForm
    import javax.servlet.http.HttpServletRequest;
    import org.apache.struts.action.ActionError;
    import org.apache.struts.action.ActionErrors;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionMapping;
    public class LogonForm extends ActionForm
    private String username;
    private String password;
    private String errors;
    public String getUsername()
    return username;
    public void setUsername(String username)
    this.username = username;
    public void setPassword(String password)
    this.password = password;
    public String getPassword()
    return password;
    public String getErrors()
         return errors;
    public void setErrors(String errors)
         this.errors = errors;
    public ActionErrors validate(ActionMapping mapping,
    HttpServletRequest request) {
    ActionErrors errors = new ActionErrors();
    if ((username == null) || (username.length() < 1))
    errors.add("username", new ActionError("error.username.required"));
    if ((password == null) || (password.length() < 1))
    errors.add("password", new ActionError("error.password.required"));
    return errors;
    TableForm
    import org.apache.struts.action.ActionForm;
    import java.util.Vector;
    public class TableForm extends ActionForm
    private static int rowsize;
    private Row[] rows;
    public Row getRows(int i)
    System.out.println("Row"+i);
    System.out.println("Rowsize"+rowsize);
    if(rows == null)
    rows = new Row[rowsize];
    if(rows[i] == null)
    rows[i] = new Row();
    return rows[i];
    public Row[] getRows()
         return null;
    public void setRows(Row[] rows)
         System.out.println("SetRows");
         // this.rows=rows;
    public static void setRowsize(int size)
         rowsize = size;
    public int getRowSize()
         return rowsize;
    LogonAction
    import java.io.IOException;
    import java.util.Hashtable;
    import java.util.Locale;
    import javax.servlet.RequestDispatcher;
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpSession;
    import javax.servlet.http.HttpServletResponse;
    import org.apache.struts.action.Action;
    import org.apache.struts.action.ActionError;
    import org.apache.struts.action.ActionErrors;
    import org.apache.struts.action.ActionForm;
    import org.apache.struts.action.ActionForward;
    import org.apache.struts.action.ActionMapping;
    import org.apache.struts.action.ActionServlet;
    import org.apache.struts.util.MessageResources;
    public class LogonAction extends Action
    public ActionForward execute(ActionMapping mapping,
                        ActionForm form,
                        HttpServletRequest request,
                        HttpServletResponse response)
         throws IOException, ServletException {
    LogonForm logonForm = (LogonForm) form;
    System.out.println(logonForm);
    System.out.println(logonForm.getUsername());
    System.out.println(logonForm.getPassword());
    if(logonForm.getUsername().equals("test") && logonForm.getPassword().equals("test"))
    //TableForm tform = new TableForm();
    //tform.setRowsize(2);
    //tform.getRows(0).setColsize(2);
    //tform.getRows(1).setColsize(2);
    //request.getSession().setAttribute("tableForm",tform);
         System.out.println("Table Form setRowSize");
    TableForm.setRowsize(2);
         System.out.println("Table Form set ColSize");
    Row.setColsize(2);
         System.out.println("Returning success");
    return mapping.findForward("success");
    else
              ActionErrors errors = new ActionErrors();
              errors.add("password",
    new ActionError("error.password.mismatch"));
    saveErrors(request, errors);
    //logonForm.setErrors("LoginError");
    return mapping.findForward("failure");
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <!DOCTYPE struts-config PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 1.0//EN"
    "http://jakarta.apache.org/struts/dtds/struts-config_1_0.dtd">
    <!--
    This is the Struts configuration file for the example application,
    using the proposed new syntax.
    NOTE: You would only flesh out the details in the "form-bean"
    declarations if you had a generator tool that used them to create
    the corresponding Java classes for you. Otherwise, you would
    need only the "form-bean" element itself, with the corresponding
    "name" and "type" attributes.
    -->
    <struts-config>
    <form-beans>
    <!-- Logon form bean -->
    <form-bean name="logonForm"
    type="LogonForm"/>
    <form-bean name="tableForm"
    type="TableForm"/>
    <form-bean name="profileForm"
    type="ProfileForm"/>
    </form-beans>
    <global-forwards>
    <forward name="success" path="/Profile.jsp"/>
    </global-forwards>
    <!-- ========== Action Mapping Definitions ============================== -->
    <action-mappings>
    <!-- Edit user registration -->
    <action path="/logon"
    type="LogonAction"
    name="logonForm"
    scope="request"
    validate="false"
    input="/Test.jsp">
    <forward name="success" path="/Table.jsp"/>
    <forward name="failure" path="/Test.jsp"/>
    </action>
    <action path="/table"
    type="TableAction"
    name="tableForm"
    scope="request"
    validate="false">
    <forward name="success" path="/Bean.jsp"/>
    <forward name="failure" path="/Table.jsp"/>
    </action>
    <action path="/profile"
    type="ProfileAction"
    name="profileForm"
    scope="request"
    validate="false"
    parameter="method">
    <forward name="edit" path="/EditProfile.jsp"/>
    <forward name="show" path="/Profile.jsp"/>
    </action>
    </action-mappings>
    </struts-config>
    Test.jsp
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    <html:html locale="true">
    <html:form action="/logon" >
    <center>
    <table>
    <tr>
    <td> Username </td>
    <td> <html:text property="username" size="16" maxlength="16"/> </td>
    <td> <html:errors property="username" /> </td>
    </tr>
    <tr>
    <td> Password </td>
    <td> <html:password property="password" size="16" maxlength="16"
    redisplay="false"/> </td>
    <td><html:errors property="password" /> </td>
    </tr>
    </table>
    </center>
    <center> <html:submit property="submit" value="Submit"/> </center>
    </html:form>
    </html:html>
    Table.jsp
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    <html:html locale="true">
    <html:form action="/table" >
    <center>
    <table>
    <tr>
    <td> <html:text property="rows[0].columns[0].value" /> </td>
    <td> <html:text property="rows[0].columns[1].value" /></td>
    </tr>
    <tr>
    <td> <html:text property="rows[1].columns[0].value" /> </td>
    <td> <html:text property="rows[1].columns[1].value" /></td>
    </tr>
    </table>
    </center>
    <center> <html:submit property="submit" value="Submit"/> </center>
    </html:form>
    </html:html>

    The above application runs only with JDK1.3.1_02 and not with any other version. This application is creating dynamic table using struts.
    Can anybody help me on the same
    also appending web.xml contents:
    <?xml version="1.0" ?>
    <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
    <!-- Action Servlet Configuration -->
    <servlet>
    <servlet-name>action</servlet-name>
    <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
    <init-param>
    <param-name>application</param-name>
    <param-value>ApplicationResources</param-value>
    </init-param>
    <init-param>
    <param-name>config</param-name>
    <param-value>/WEB-INF/struts-config.xml</param-value>
    </init-param>
    <init-param>
    <param-name>debug</param-name>
    <param-value>2</param-value>
    </init-param>
    <init-param>
    <param-name>detail</param-name>
    <param-value>2</param-value>
    </init-param>
    <init-param>
    <param-name>validate</param-name>
    <param-value>true</param-value>
    </init-param>
    <load-on-startup>2</load-on-startup>
    </servlet>
    <!-- Action Servlet Mapping -->
    <servlet-mapping>
    <servlet-name>action</servlet-name>
    <url-pattern>*.do</url-pattern>
    </servlet-mapping>
    <!--Welcome file list starts here -->
    <welcome-file-list>
    <welcome-file>
    /test.jsp
    </welcome-file>
    </welcome-file-list>
    <!-- Struts Tag Library Descriptors -->
    <taglib>
    <taglib-uri>/WEB-INF/struts-bean.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-bean.tld</taglib-location>
    </taglib>
    <taglib>
    <taglib-uri>/WEB-INF/struts-html.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-html.tld</taglib-location>
    </taglib>
    <taglib>
    <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri>
    <taglib-location>/WEB-INF/struts-logic.tld</taglib-location>
    </taglib>
    </web-app>
    validate-rules.xml
    <!DOCTYPE form-validation PUBLIC
    "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN"
    "http://jakarta.apache.org/commons/dtds/validator_1_0.dtd">
    <!--
    This file contains the default Struts Validator pluggable validator
    definitions. It should be placed somewhere under /WEB-INF and
    referenced in the struts-config.xml under the plug-in element
    for the ValidatorPlugIn.
    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
    <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,
    /WEB-INF/validation.xml"/>
    </plug-in>
    These are the default error messages associated with
    each validator defined in this file. They should be
    added to your projects ApplicationResources.properties
    file or you can associate new ones by modifying the
    pluggable validators msg attributes in this file.
    # Struts Validator Error Messages
    errors.required={0} is required.
    errors.minlength={0} can not be less than {1} characters.
    errors.maxlength={0} can not be greater than {1} characters.
    errors.invalid={0} is invalid.
    errors.byte={0} must be a byte.
    errors.short={0} must be a short.
    errors.integer={0} must be an integer.
    errors.long={0} must be a long.
    errors.float={0} must be a float.
    errors.double={0} must be a double.
    errors.date={0} is not a date.
    errors.range={0} is not in the range {1} through {2}.
    errors.creditcard={0} is an invalid credit card number.
    errors.email={0} is an invalid e-mail address.
    -->
    <form-validation>
    <global>
    <validator name="required"
    classname="org.apache.struts.validator.FieldChecks"
    method="validateRequired"
    methodParams="java.lang.Object,
    org.apache.commons.validator.ValidatorAction,
    org.apache.commons.validator.Field,
    org.apache.struts.action.ActionErrors,
    javax.servlet.http.HttpServletRequest"
    msg="errors.required">
    <javascript><![CDATA[
    function validateRequired(form) {
    var isValid = true;
    var focusField = null;
    var i = 0;
    var fields = new Array();
    oRequired = new required();
    for (x in oRequired) {
         var field = form[oRequired[x][0]];
    if (field.type == 'text' ||
    field.type == 'textarea' ||
    field.type == 'file' ||
    field.type == 'select-one' ||
    field.type == 'radio' ||
    field.type == 'password') {
    var value = '';
                                  // get field's value
                                  if (field.type == "select-one") {
                                       var si = field.selectedIndex;
                                       if (si >= 0) {
                                            value = field.options[si].value;
                                  } else {
                                       value = field.value;
    if (trim(value).length == 0) {
         if (i == 0) {
         focusField = field;
         fields[i++] = oRequired[x][1];
         isValid = false;
    if (fields.length > 0) {
    focusField.focus();
    alert(fields.join('\n'));
    return isValid;
    // Trim whitespace from left and right sides of s.
    function trim(s) {
    return s.replace( /^\s*/, "" ).replace( /\s*$/, "" );
    ]]>
    </javascript>
    </validator>
    <validator name="requiredif"
    classname="org.apache.struts.validator.FieldChecks"
    method="validateRequiredIf"
    methodParams="java.lang.Object,
    org.apache.commons.validator.ValidatorAction,
    org.apache.commons.validator.Field,
    org.apache.struts.action.ActionErrors,
    org.apache.commons.validator.Validator,
    javax.servlet.http.HttpServletRequest"
    msg="errors.required">
    </validator>
    <validator name="minlength"
    classname="org.apache.struts.validator.FieldChecks"
    method="validateMinLength"
    methodParams="java.lang.Object,
    org.apache.commons.validator.ValidatorAction,
    org.apache.commons.validator.Field,
    org.apache.struts.action.ActionErrors,
    javax.servlet.http.HttpServletRequest"
    depends=""
    msg="errors.minlength">
    <javascript><![CDATA[
    function validateMinLength(form) {
    var isValid = true;
    var focusField = null;
    var i = 0;
    var fields = new Array();
    oMinLength = new minlength();
    for (x in oMinLength) {
    var field = form[oMinLength[x][0]];
    if (field.type == 'text' ||
    field.type == 'textarea') {
    var iMin = parseInt(oMinLength[x][2]("minlength"));
    if ((trim(field.value).length > 0) && (field.value.length < iMin)) {
    if (i == 0) {
    focusField = field;
    fields[i++] = oMinLength[x][1];
    isValid = false;
    if (fields.length > 0) {
    focusField.focus();
    alert(fields.join('\n'));
    return isValid;
    }]]>
    </javascript>
    </validator>
    <validator name="maxlength"
    classname="org.apache.struts.validator.FieldChecks"
    method="validateMaxLength"
    methodParams="java.lang.Object,
    org.apache.commons.validator.ValidatorAction,
    org.apache.commons.validator.Field,
    org.apache.struts.action.ActionErrors,
    javax.servlet.http.HttpServletRequest"
    depends=""
    msg="errors.maxlength">
    <javascript><![CDATA[
    function validateMaxLength(form) {
    var isValid = true;
    var focusField = null;
    var i = 0;
    var fields = new Array();
    oMaxLength = new maxlength();
    for (x in oMaxLength) {
    var field = form[oMaxLength[x][0]];
    if (field.type == 'text' ||
    field.type == 'textarea') {
    var iMax = parseInt(oMaxLength[x][2]("maxlength"));
    if (field.value.length > iMax) {
    if (i == 0) {
    focusField = field;
    fields[i++] = oMaxLength[x][1];
    isValid = false;
    if (fields.length > 0) {
    focusField.focus();
    alert(fields.join('\n'));
    return isValid;
    }]]>
    </javascript>
    </validator>
    <validator name="mask"
    classname="org.apache.struts.validator.FieldChecks"
    method="validateMask"
    methodParams="java.lang.Object,
    org.apache.commons.validator.ValidatorAction,
    org.apache.commons.validator.Field,
    org.apache.struts.action.ActionErrors,
    javax.servlet.http.HttpServletRequest"
    depends=""
    msg="errors.invalid">
    <javascript><![CDATA[
    function validateMask(form) {
    var isValid = true;
    var focusField = null;
    var i = 0;
    var fields = new Array();
    oMasked = new mask();
    for (x in oMasked) {
    var field = form[oMasked[x][0]];
    if ((field.type == 'text' ||
    field.type == 'textarea') &&
    (field.value.length > 0)) {
    if (!matchPattern(field.value, oMasked[x][2]("mask"))) {
    if (i == 0) {
    focusField = field;
    fields[i++] = oMasked[x][1];
    isValid = false;
    if (fields.length > 0) {
    focusField.focus();
    alert(fields.join('\n'));
    return isValid;
    function matchPattern(value, mask) {
    return mask.exec(value);
    }]]>
    </javascript>
    </validator>
    <validator name="byte"
    classname="org.apache.struts.validator.FieldChecks"
    method="validateByte"
    methodParams="java.lang.Object,
    org.apache.commons.validator.ValidatorAction,
    org.apache.commons.validator.Field,
    org.apache.struts.action.ActionErrors,
    javax.servlet.http.HttpServletRequest"
    depends=""
    msg="errors.byte"
    jsFunctionName="ByteValidations">
    <javascript><![CDATA[
    function validateByte(form) {
    var bValid = true;
    var focusField = null;
    var i = 0;
    var fields = new Array();
    oByte = new ByteValidations();
    for (x in oByte) {
         var field = form[oByte[x][0]];
    if (field.type == 'text' ||
    field.type == 'textarea' ||
    field.type == 'select-one' ||
                                  field.type == 'radio') {
                                  var value = '';
                                  // get field's value
                                  if (field.type == "select-one") {
                                       var si = field.selectedIndex;
                                       if (si >= 0) {
                                            value = field.options[si].value;
                                  } else {
                                       value = field.value;
    if (value.length > 0) {
    if (!isAllDigits(value)) {
    bValid = false;
    if (i == 0) {
    focusField = field;
    fields[i++] = oByte[x][1];
    } else {
         var iValue = parseInt(value);
         if (isNaN(iValue) || !(iValue >= -128 && iValue <= 127)) {
         if (i == 0) {
         focusField = field;
         fields[i++] = oByte[x][1];
         bValid = false;
    if (fields.length > 0) {
    focusField.focus();
    alert(fields.join('\n'));
    return bValid;
    }]]>
    </javascript>
    </validator>
    <validator name="short"
    classname="org.apache.struts.validator.FieldChecks"
    method="validateShort"
    methodParams="java.lang.Object,
    org.apache.commons.validator.ValidatorAction,
    org.apache.commons.validator.Field,
    org.apache.struts.action.ActionErrors,
    javax.servlet.http.HttpServletRequest"
    depends=""
    msg="errors.short"
    jsFunctionName="ShortValidations">
    <javascript><![CDATA[
    function validateShort(form) {
    var bValid = true;
    var focusField = null;
    var i = 0;
    var fields = new Array();
    oShort = new ShortValidations();
    for (x in oShort) {
         var field = form[oShort[x][0]];
    if (field.type == 'text' ||
    field.type == 'textarea' ||
    field.type == 'select-one' ||
    field.type == 'radio') {
    var value = '';
                                  // get field's value
                                  if (field.type == "select-one") {
                                       var si = field.selectedIndex;
                                       if (si >= 0) {
                                            value = field.options[si].value;
                                  } else {
                                       value = field.value;
    if (value.length > 0) {
    if (!isAllDigits(value)) {
    bValid = false;
    if (i == 0) {
    focusField = field;
    fields[i++] = oShort[x][1];
    } else {
         var iValue = parseInt(value);
         if (isNaN(iValue) || !(iValue >= -32768 && iValue <= 32767)) {
         if (i == 0) {
         focusField = field;
         fields[i++] = oShort[x][1];
         bValid = false;
    if (fields.length > 0) {
    focusField.focus();
    alert(fields.join('\n'));
    return bValid;
    }]]>
    </javascript>
    </validator>
    <validator name="integer"
    classname="org.apache.struts.validator.FieldChecks"
    method="validateInteger"
    methodParams="java.lang.Object,
    org.apache.commons.validator.ValidatorAction,
    org.apache.commons.validator.Field,
    org.apache.struts.action.ActionErrors,
    javax.servlet.http.HttpServletRequest"
    depends=""
    msg="errors.integer"
    jsFunctionName="IntegerValidations">
    <javascript><![CDATA[
    function validateInteger(form) {
    var bValid = true;
    var focusField = null;
    var i = 0;
    var fields = new Array();
    oInteger = new IntegerValidations();
    for (x in oInteger) {
         var field = form[oInteger[x][0]];
    if (field.type == 'text' ||
    field.type == 'textarea' ||
    field.type == 'select-one' ||
    field.type == 'radio') {
    var value = '';
                                  // get field's value
                                  if (field.type == "select-one") {
                                       var si = field.selectedIndex;
                                  if (si >= 0) {
                                       value = field.options[si].value;
                                  } else {
                                       value = field.value;
    if (value.length > 0) {
    if (!isAllDigits(value)) {
    bValid = false;
    if (i == 0) {
         focusField = field;
                                  fields[i++] = oInteger[x][1];
    } else {
         var iValue = parseInt(value);
         if (isNaN(iValue) || !(iValue >= -2147483648 && iValue <= 2147483647)) {
         if (i == 0) {
         focusField = field;
         fields[i++] = oInteger[x][1];
         bValid = false;
    if (fields.length > 0) {
    focusField.focus();
    alert(fields.join('\n'));
    return bValid;
    function isAllDigits(argvalue) {
    argvalue = argvalue.toString();
    var validChars = "0123456789";
    var startFrom = 0;
    if (argvalue.substring(0, 2) == "0x") {
    validChars = "0123456789abcdefABCDEF";
    startFrom = 2;
    } else if (argvalue.charAt(0) == "0") {
    validChars = "01234567";
    startFrom = 1;
    } else if (argvalue.charAt(0) == "-") {
    startFrom = 1;
    for (var n = startFrom; n < argvalue.length; n++) {
    if (validChars.indexOf(argvalue.substring(n, n+1)) == -1) return false;
    return true;
    }]]>
    </javascript>
    </validator>
    <validator name="long"
    classname="org.apache.struts.validator.FieldChecks"
    method="validateLong"
    methodParams="java.lang.Object,
    org.apache.commons.validator.ValidatorAction,
    org.apache.commons.validator.Field,
    org.apache.struts.action.ActionErrors,
    javax.servlet.http.HttpServletRequest"
    depends=""
    msg="errors.long"/>
    <validator name="float"
    classname="org.apache.struts.validator.FieldChecks"
    method="validateFloat"
    methodParams="java.lang.Object,
    org.apache.commons.validator.ValidatorAction,
    org.apache.commons.validator.Field,
    org.apache.struts.action.ActionErrors,
    javax.servlet.http.HttpServletRequest"
    depends=""
    msg="errors.float"
    jsFunctionName="FloatValidations">
    <javascript><![CDATA[
    function validateFloat(form) {
    var bValid = true;
    var focusField = null;
    var i = 0;
    var fields = new Array();
    oFloat = new FloatValidations();
    for (x in oFloat) {
         var field = form[oFloat[x][0]];
    if (field.type == 'text' ||
    field.type == 'textarea' ||
    field.type == 'select-one' ||
    field.type == 'radio') {
         var value = '';
                                  // get field's value
                                  if (field.type == "select-one") {
                                       var si = field.selectedIndex;
                                       if (si >= 0) {
                                       value = field.options[si].value;
                                  } else {
                                       value = field.value;
    if (value.length > 0) {
    // remove '.' before checking digits
    var tempArray = value.split('.');
    var joinedString= tempArray.join('');
    if (!isAllDigits(joinedString)) {
    bValid = false;
    if (i == 0) {
    focusField = field;
    fields[i++] = oFloat[x][1];
    } else {
         var iValue = parseFloat(value);
         if (isNaN(iValue)) {
         if (i == 0) {
         focusField = field;
         fields[i++] = oFloat[x][1];
         bValid = false;
    if (fields.length > 0) {
    focusField.focus();
    alert(fields.join('\n'));
    return bValid;
    }]]>
    </javascript>
    </validator>
    <validator name="double"
    classname="org.apache.struts.validator.FieldChecks"
    method="validateDouble"
    methodParams="java.lang.Object,
    org.apache.commons.validator.ValidatorAction,
    org.apache.commons.validator.Field,
    org.apache.struts.action.ActionErrors,
    javax.servlet.http.HttpServletRequest"
    depends=""
    msg="errors.double"/>
    <validator name="date"
    classname="org.apache.struts.validator.FieldChecks"
    method="validateDate"
    methodParams="java.lang.Object,
    org.apache.commons.validator.ValidatorAction,
    org.apache.commons.validator.Field,
    org.apache.struts.action.ActionErrors,
    javax.servlet.http.HttpServletRequest"
    depends=""
    msg="errors.date"
    jsFunctionName="DateValidations">
    <javascript><![CDATA[
    function validateDate(form) {
    var bValid = true;
    var focusField = null;
    var i = 0;
    var fields = new Array();
    oDate = new DateValidations();
    for (x in oDate) {
    var value = form[oDate[x][0]].value;
    var datePattern = oDate[x][2]("datePatternStrict");
    if ((form[oDate[x][0]].type == 'text' ||
    form[oDate[x][0]].type == 'textarea') &&
    (value.length > 0) &&
    (datePattern.length > 0)) {
    var MONTH = "MM";
    var DAY = "dd";
    var YEAR = "yyyy";
    var orderMonth = datePattern.indexOf(MONTH);
    var orderDay = datePattern.indexOf(DAY);
    var orderYear = datePattern.indexOf(YEAR);
    if ((orderDay < orderYear && orderDay > orderMonth)) {
    var iDelim1 = orderMonth + MONTH.length;
    var iDelim2 = orderDay + DAY.length;
    var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
    var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
    if (iDelim1 == orderDay && iDelim2 == orderYear) {
    dateRegexp = new RegExp("^(\\d{2})(\\d{2})(\\d{4})$");
    } else if (iDelim1 == orderDay) {
    dateRegexp = new RegExp("^(\\d{2})(\\d{2})[" + delim2 + "](\\d{4})$");
    } else if (iDelim2 == orderYear) {
    dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})(\\d{4})$");
    } else {
    dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{4})$");
    var matched = dateRegexp.exec(value);
    if(matched != null) {
    if (!isValidDate(matched[2], matched[1], matched[3])) {
    if (i == 0) {
    focusField = form[oDate[x][0]];
    fields[i++] = oDate[x][1];
    bValid = false;
    } else {
    if (i == 0) {
    focusField = form[oDate[x][0]];
    fields[i++] = oDate[x][1];
    bValid = false;
    } else if ((orderMonth < orderYear && orderMonth > orderDay)) {
    var iDelim1 = orderDay + DAY.length;
    var iDelim2 = orderMonth + MONTH.length;
    var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
    var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
    if (iDelim1 == orderMonth && iDelim2 == orderYear) {
    dateRegexp = new RegExp("^(\\d{2})(\\d{2})(\\d{4})$");
    } else if (iDelim1 == orderMonth) {
    dateRegexp = new RegExp("^(\\d{2})(\\d{2})[" + delim2 + "](\\d{4})$");
    } else if (iDelim2 == orderYear) {
    dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})(\\d{4})$");
    } else {
    dateRegexp = new RegExp("^(\\d{2})[" + delim1 + "](\\d{2})[" + delim2 + "](\\d{4})$");
    var matched = dateRegexp.exec(value);
    if(matched != null) {
    if (!isValidDate(matched[1], matched[2], matched[3])) {
    if (i == 0) {
    focusField = form[oDate[x][0]];
    fields[i++] = oDate[x][1];
    bValid = false;
    } else {
    if (i == 0) {
    focusField = form[oDate[x][0]];
    fields[i++] = oDate[x][1];
    bValid = false;
    } else if ((orderMonth > orderYear && orderMonth < orderDay)) {
    var iDelim1 = orderYear + YEAR.length;
    var iDelim2 = orderMonth + MONTH.length;
    var delim1 = datePattern.substring(iDelim1, iDelim1 + 1);
    var delim2 = datePattern.substring(iDelim2, iDelim2 + 1);
    if (iDelim1 == orderMonth && iDelim2 == orderDay) {
    dateRegexp = new RegExp("^(\\d{4})(\\d{2})(\\d{2})$");
    } else if (iDelim1 == orderMonth) {
    dateRegexp = new RegExp("^(\\d{4})(\\d{2})[" + delim2 + "](\\d{2})$");
    } else if (iDelim2 == orderDay) {
    dateRegexp = new RegExp("^(\\d{4})[" + delim1 + "](\\d{2})(\\d{2})$");
    } else {
    dateRegexp = new Reg

Maybe you are looking for

  • Keyboard removal to install memory

    I have a Satellite M105-S3021, to which I want to add RAM. I purchases two 2GB modules and would like to install them myself.  I've searched the web site, trying to find instructions on how to reach the other memory slot (which I believe is under the

  • How to use Setup Assistant in Logic Pro 8?

    How to use Setup Assistant in Logic Pro 8? I can't find it! even in the User Manuel! Also, where can we setup the monitor number like we used to set '2 monitor ' in Logic Pro 7's setup assistant Thanks!

  • Using comments toolbar

    I cannot underline or highlight my pdf's. I have Windows 7 and Acrobat 9 Pro free trial.

  • Nokia X6 voip support

    Hi guys, does anyone know if Nokia X6 can support voip or sip? I have searched in forum and Google but to no avail. Its not clear whether it can support voip. I am looking to buy X6. If it doesn't have voip, I might have to go for Nokia E71 which can

  • How to watch videos on a TV from Mac to wireless Blu Ray player

    How do I watch my viseos on a TV via wireless to a Blu Ray Player?