Class running in JVM?

Is there a way to determine what class is currently running in a JVM/process, from outside the JVM/process?
Given there are, say, 20 JVM instances running, how can I determine what is running in each instance?

Windows strips the command line arguments from a process. But if you can get the PID from the
Under linux, you might be able to extract it from a ps command.

Similar Messages

  • Simple class runs 3x slower inside 8i than outside...why?

    I have a simple class to read a large number of numbers (1E6) and sort them using the java Collections.sort(). I tested the class in the JVM run as a Procedure and externally as a simple class on my desktop.Running Oracle 8i on Linux Redhat7.2. The external version runs about 3 times faster and I have no idea why.
    Running the class in the JVM: Server is a Compaq P800-256128US with PIII 800 MHz 256 KB cache & 256MB PC-133 and SCSI drives.
    Connection time: 0.004 seconds
    ArrayList build: 223.27 seconds
    Collection.sort(): 101.29 seconds
    Running the class on my workstation: Machine is a Compaq DeskPro w/PIII with 256MB.
    OP:Connecting...
    ----The operation took 5.734 seconds
    OP:Building List...
    ----The operation took 81.141 seconds
    OP: Sorting 1000000 items...
    ----The operation took 6.859 seconds
    Here is the class trivial logic:
    Connection conn = DriverManager.getConnection("jdbc:default:connection:");
    List list = new ArrayList();
    stmt = conn.createStatement();
    ResultSet rset = stmt.executeQuery("select List from NUMBERS");
    while (rset.next())
    list.add(Integer.valueOf(rset.getString(1)));
    Collections.sort(list);//sorting
    I have timing calls embedded not shown here in both versions to measure and of course the connection is different for external call.
    What do you think of these results? What should I check?
    Thanks,
    Chris

    Id like to follow up with some questions:
    1.)     Oracle documentation states that PL/SQL is the preferred tool for data intensive jobs. And Java Stored Procedures are preferred for more algorithmic jobs. This seems contrary to what you state. Can you clearify?
    2.)     When you say gen. purpose and cpu bound Java code, do you mean algorithmic code?
    3.)     I assume the points 1 and 2 in your response suggest that it takes so long to get the Java environment up and running that it is killing the performance of my simple algorithm...is that what you mean?
    4.)     My real goal is to use intelligent agents (use AI algorithms that are very expensive computationally) and are invoked upon updates and continually train on newly inserted data. The fact these guys can live in the Oracle JVM, be invoked upon an update using a trigger and call an EJB client in warning of a particular condition is what made me fall in love with this solution that Oracle provides. But do you think I am asking too much or Im going a bit beyond what the JVM is for?

  • Thread running in jvm or os

    pls tell me thread running in jvm or operating system

    pls tell me thread running in jvm or operating systemIIRC, unless you are using a very old JVM (e.g. pre 1.2) or are explicitly specifying green threads (which I believe was still possible even in 1.2?) then all threading using native threads. As mentioned above, the mapping between Java thread objects and the native threads is is highly dependent on the OS (especially when it comes to thread priority).
    This document goes into much more detail: http://java.sun.com/docs/hotspot/threads/threads.html
    - N

  • How to get name of class that the JVM was started with ?

    Assume I have class foo with the standard main method.
    I also have classes ding and dong, they extend foo.
    The JVM is started with either ding or dong as the 'main' class. Since neither ding nor dong directly implement main, the actual main method being executed is foo's.
    In the main method of foo I want to construct an instance of either ding or dong, depending on which the JVM was started with. Since I'm in a static context, I can't do anything with 'this'. Is there another way to get the name of the 'main' class from the JVM so that I can construct an instance of it ?

    The idea behind all of this is that the developer of
    Ding and Dong should not have to know anything about
    foo, in particular it's constructors. But if Ding and Dong are subclasses of Foo, then developers must know about Foo. If you expect developers to extend a framework without having a well-defined interface to that framework, you are probably heading for trouble.
    To be able to
    privatize the constructors, construction of the
    concrete class has to take place in foo.If Ding and Dong are subclasses of Foo, then you can not make all of Foo's constructors private.
    Of course I could have a method in Ding and Dong that
    calls a static method in foo into which the Ding and
    Dong instance pass their class, but then I'd have
    identical implementations of this method in Ding and
    Dong. Yes you would (well, not identical, but very similar). Like I said, you could do this programmatically with AOP, or you could probably do it dirtily using stack traces (though with it being a single hit at startup, you might not consider it being quite so dirty).
    But: the point of inheritance is that common
    functionality goes into superclasses. I disagree. The important thing about inheritance is that classes share an interface, and that methods can be polymorphically inherited, allowing new functionality to be 'plugged in' in the future, and even at runtime.
    Also, in
    general one wouldn't make methods static if a class
    reference is needed (or one would make it an
    argument), but Sun didn't consult me when they
    designed the main method :-(I still don't see why you need to do what you want to do. It appears that all you are after is the ability to start your program using a command line like
        java com.mypackage.Ding
    instead of
        java com.mypackage.Foo com.mypackage.Ding
    or
        java com.mypackage.Foo Ding.properties
    or something else along these lines.
    Since you must know the name of the class you want to use at the time you want to use it, why can't you just pass the name as an argument, or start up using some properties file, or a shell script?

  • Running Multiple JVM's on same Server has OutOfMemory - PermGen Errors

    I have a scenario where I have 2 application servers. One is running one JVM and the other is running multiple JVMs.
    Both are configured with:
    -XX:+UseConcMarkSweepGC
    -XX:+UseParNewGC
    -XX:MaxPermSize=256m
    -XX:+CMSPermGenSweepingEnabled
    -XX:+CMSClassUnloadingEnabled
    The server that is running with only 1 JVM runs stable, however the server that is running multiple JVMs has frequent crashes due to OutOfMemory - PermGen errors. The only other difference is the Heap size. 512mb for each JVM on the app server with multiple instances and 1GB for the server with 1 instance. Is there a relationship/settings that need to be tuned when running multiple JVM's on the same server to avoid this?
    Thx

    The only other difference is the Heap size. 512mb for each JVM on the app server with multiple instances and 1GB for the server with 1 instance.This isn't a trivial difference. Basically you're saying "When I give the server 1 GB then it's okay but when I give it 512 MB it's not okay." If I saw those symptoms I would take them at face value to start with.
    So, turn off one of those servers on the machine that has two. Don't change anything else. Testable prediction: That won't fix your problem.

  • Will 1.3 code compiled with 1.4 run on JVM/JRE 1.3?

    Will byte code created with j2se 1.4.2 only run on JRE 1.4.2 and forthcoming versions even if my java source code only contains classes that were available already in version 1.3?
    If so, is it a good idea to install and use the earliest version of java compiler that will digest my code in order to create an applet that is accessible to more users without downloading the latest JRE/JVM?
    Grateful for any help,
    /Sven

    Byte code generated by 1.4.2 javac will run on 1.2 and up (assuming that coming versions keep backwards compatibility). You might want to have a look at javac's cross-compilation capabilities (aka -target switch):
    http://java.sun.com/j2se/1.4.2/docs/tooldocs/windows/javac.html#options
    HTH, Markus

  • How to find out what is using the native heap of a process running a JVM?

    Hello,
    I am not sure where to post this question so I am starting here.
    I am troubleshooting a Java application using some native calls (32 bits Java running on Solaris 10). The size of the process (as reported by prstat) is slowly increasing day after day.
    The size of the 'Java heap' is fixed at the start (-Xms and -Xmx are set to the same value on the command line when launching the Java app) and the GC is workling fine. No memory complaints from the Java side of the application.
    It is the size of the 'native' heap (as reported by 'pmap') that is increasing:
    root@mas01 # pmap 5382
    5382:/apps/java/bin/java -server -Xms207M -Xmx207M -XX:MaxNewSize=24M -XX:N
    00010000 64K r-x-- /apps/jdk1.5.0_19/bin/java
    0002E000 16K rwx-- /apps/jdk1.5.0_19/bin/java
    00032000 3896K rwx-- [ heap ]
    00400000 389120K rwx-- [ heap ]
    18000000 2784K rwx-- [ heap ]
    DCAF4000 48K rw--R [ stack tid=169 ]
    DCBF6000 40K rw--R [ stack tid=161 ]
    DCCF8000 32K rw--R [ stack tid=160 ]
    My first reaction was to search for a memory leak. Found a minor leak in the JVM with the ::findleak function (called within the mdb debugger). Upgraded to a later release of Java 5 (Java 1.5.0_19) where the leak is fixed but the heap is still increasing.
    Many parts of the process allocate memory in the native heap. The JVM itself, the native calls made to a C++ library part of our Java application and maybe also some 3rd party software.
    I would like to know what is the best way to find out what is consuming more and more memory in the native heap. I started looking a DTraces but I am new to this. I also thought maybe the Solaris Perftools might be of use but I never used them. Before plunging into a tool more or less blindly, I am asking for advices on how to tackle this issue. Can someone recommend a tool/method to see what is allocated in the heap?
    Regards,
    Stéphan
    Edited by: StephanDupont on Sep 22, 2009 8:47 AM

    After googling a lot I managed to run my application with libumem, generated a core file and succeeded to find some leak with mdb even if ::findleak reported nothing.
    Does anyone knows if the ::findleak (you need libumem and mdb) is supposed to find leak in the native part of the memory and a Java application using the JNI interface?
    Regards,
    Stéphan

  • Constructor in document class runs twice?

    Hi Folks,
    I'm working on my document class and the contructor is running twice, hence it is running almost all of my code twice.  I'm not quite sure why this is the case.  Any help is appreciated.
    I've attached my code below.
    package {
    import flash.display.MovieClip;
    import flash.display.DisplayObject;
    import flash.events.*;
    import flash.geom.*;
    import flash.net.*;
    import flash.utils.getDefinitionByName;
    public class ASIFL048_DND extends MovieClip {
      private var startDragX:Number = new Number();
      private var startDragY:Number = new Number();
      private var xmlPath:String = "../ObjectFiles/xmlIFL0480016.xml";
      private var itemList:Array = new Array();
      private var targetList:Array = new Array();
      private var gameArray:Array = new Array();
      private var myXML:XML = new XML();
      private var myTargetName:String = new String();
      private var XMLLoader:URLLoader = new URLLoader();
      private var XMLRequest:URLRequest = new URLRequest(xmlPath);
      trace("RUNNING ONCE!");
      public function ASIFL048_DND() {
       stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
       stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
       XMLLoader.addEventListener(Event.COMPLETE, completeHandler);
       trace("RUNNING TWICE?");
       loadXML();
      private function loadXML():void {
       //var XMLLoader:URLLoader = new URLLoader();
       //var XMLRequest:URLRequest = new URLRequest(xmlPath);
       XMLLoader.load(XMLRequest);
       //XMLLoader.addEventListener(Event.COMPLETE, completeHandler);
      private function completeHandler(e:Event):void {
       myXML = XML(e.target.data);
       var i:int = 0;
       var j:int = 0;
       for each (var item:XML in myXML..equip) {
        itemList[i] = item.@name;
        for each (var target:XML in item..myTarget) {
         targetList[j] = [i,target];
         j++;
        i++;
       //trace(targetList);
       selectDragItems(10);
      private function selectDragItems(gameLength:int):void {
       var randomSeed:Number = new Number();
       var randomItem:Number = new Number();
       for (var k:int = 0; k<gameLength; k++) {
        randomSeed = targetList.length;
        randomItem = Math.floor(Math.random() * targetList.length);
        gameArray = targetList.splice(randomItem, 1);
        trace(gameArray+"\n");
        //display game array
        //trace("CLASS:\t"+itemList[gameArray[k][0][0]]);
             //var ClassReference:Class = getDefinitionByName(itemList[gameArray[k][0]]) as Class;
        //var instance:Object = new ClassReference();
        //addChild(DisplayObject(instance));
      private function mouseDownHandler(e:MouseEvent):void {
       startDragX = e.target.x;
       startDragY = e.target.y;
       trace(startDragX + " " + startDragY);
       e.target.startDrag(true,new Rectangle(e.target.width/2,e.target.height/2, stage.stageWidth-e.target.width, stage.stageHeight-e.target.height));
      private function mouseUpHandler(e:MouseEvent):void {
       stopDrag();
       myTargetName = "fwdLHWindscreen_mc";
       var myTarget:DisplayObject = getChildByName(myTargetName);
       //trace(" TARGET VAR: "+myTarget.name);
       if (e.target.dropTarget != null && e.target.dropTarget.parent == myTarget) {
        trace("correct");
        e.target.x = e.target.dropTarget.parent.x;
        e.target.y = e.target.dropTarget.parent.y;
        e.target.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
        e.target.removeEventListener(MouseEvent.MOUSE_UP,mouseUpHandler);
       } else {
        trace("incorrect");
        e.target.x = startDragX;
        e.target.y = startDragY;

    My bad. The order of output is:
    RUNNING ONCE!
    RUNNING TWICE?
    The first trace is a static initializer, while the second is in the constructor.

  • VerifyError caught when class run in a Servlet.

    I am getting the following Error. The API does not adequately explain what this is or what to do about it. Can anyone help me figure this out?
    java.lang.VerifyError: (class: com/BizTech4ALL/forms/FormParameters, method: signature: (Ljava/lang/String;)V) Register 2 contains wrong type
    When I put a main in the FormParameters class above, it run fine. When I create a "stub" program class to call the FormParameters, it also runs fine. I only get this problem when I run as a servlet.
    Thanks,
    Tom

    I get this problem too, and no-one replied to my post either...
    Please help us!!!!
    Andrew Dalgleish.

  • Running multiple JVM's using JNI

    I am having problems starting multiple JVM's in our C++ application which is multi-threaded.
    Iam able to start one JVM but when I attempt to start the second JVM in a new thread it fails with
    the error of -5. This error states that a JVM is already running.
    Help!

    You can run more than one process that needs JVM using the AttachThread, DetachThread and GetCreatedJavaVMs calls.
    First determine to see if you have a JVM -- using GetCreatedJavaVMs. Check if you can get the environment pointer (GetEnv call). Then try AttachThread. Once you are done, do a DetachThread.
    This might give you a possible workaround/solution.
    Regards,
    Satish

  • Updating Classes Running in Tomcat

    I am running some JSP's which are using classes. Then I make a change to the class on another machine and recompile the class.
    After this I copy over the existing classes onto the Tomcat server.
    What I have noticed though is that Tomcat is still using the old classes. I have tried stopping Tomcat and restarting it, which does solve the problem.
    Is there any way that I can update the classes without stopping and re-starting Tomcat?
    Reason being is that there may be users currently connected to the web server and stopping it will stop them!

    Some servlet engines support updating classes on the fly and some do not. The ones that do support that usually have a configuration option that allows you to turn it on and off, or to apply it only to certain servlets or directories. I don't know about whether Tomcat supports updating classes on the fly, but if it does you should find some configuration options for it.

  • Weird, why is some previous version of a class running

    I have this class named DataBaseDemo.java and I had it originally set up to use MySQL but then I altered it to use ORACLE.
    But I only 'half way' did the change and did a save and click the run button.
    So I was struck dumb when it did run. Then I looked at the output and I could tell that it was behaving as if I never made any changes. What it is doing is running the older previous code before I made massive changes. It is ignoring the code that comes up on the screen even though I have hit the SAVE key many times.
    So why might that be?
    And more importantly how can I get it to 'forget' the old code and remember the new code?

    Rod,
    Note that Nitin asked "Physically where is the compiled old code?" but
    you've only explained where is the source code. Somewhere there are
    ..class files produced by the compiler and apparently you're running old
    compiled code or not compiling the new code. So you must find the
    corresponding .class file of the new code and figure out where are these
    old .class files. The Java Explorer hides the bin folder (normally
    where the .class files end up) so you might need to use the Resource
    Explorer to find it.
    On 02/08/2015 5:35 PM, Rod Hittle wrote:
    > Good question Nitin. As far as I know it does not exist anywhere
    > other than a copy pasted in to a MS Word document where I am writing
    > up this issue.
    > I did check the properties of the source code in Eclipse and the path
    > and file is just as I expect and opening up the source code by way of
    > Note Pad shows just the current most recent update text.
    > My conclusion is that the text that is brought up is NOT what is being
    > executed. Maybe there is some 'compiled' version that is being executed.
    > The old version of the code is set up to pull data from a MySQL table
    > and the current text is set up to pull data from an Oracle table. The
    > tables are very different. But what gets displayed in the console is
    > data from the MySQL table.
    > I would post a picture but it looks like the only way to do that is
    > to send the pic to a place like PhotoBucket so that there is an URL
    > and I don't want to bother with that.
    >
    >

  • Class running after removeChild

    I have an external class added to the document when a menu is opened.
    When the menu is closed the function is removed.
    But then the document tries to run onEnter function of the class, which references stage and I get the null error.
    How should I set it up so the document doesn't run the class after removeChild()?
    TypeError: Error #1009: Cannot access a property or method of a null object reference.
        at com::calmMenuAni/dropGrow()[...\com\calmMenuAni.as:48]     //else if(drop.width>=15 && drop.y<stage.stageHeight)
        at com::calmMenuAni/onEnter()[...\calmMenuAni.as:66]    //dropGrow();
    The class structure:
            public function calmMenuAni():void
                addEventListener(Event.ADDED_TO_STAGE, init);
            private function init(evt:Event):void
                removeEventListener(Event.ADDED_TO_STAGE, init);
                drops = new Array();
                for(var i:int = 0; i < count; i++)
                    drop = new Drop();
                    drop.width = 10;
                    drop.height = drop.width;
                    drop.x = this.parent.stage.stageWidth * Math.random();
                    drop.y = 0 - drop.height/2;
                    addChild(drop);
                    drops.push(drop);
                addEventListener(Event.ENTER_FRAME, onEnter)
             private function onEnter(evt:Event):void
                 dropGrow(evt);
           private function dropGrow(evt:Event):void
    if statements referring to stage.stageHeight
    Any advice/help will be appreciated.
    Thank you!

    I think I made a mistake with where to put removeEventListener.
    Now the enterframe event doesn't run at all.
    (I assumed it would work the same way with AddedtoStage eventListener)
    Can you please help me?
    The class structure:
            public function calmMenuAni():void
               addEventListener(Event.ADDED_TO_STAGE, init);
            private function init(evt:Event):void
               removeEventListener(Event.ADDED_TO_STAGE, init);
                drops = new Array();
                for(var i:int = 0; i < count; i++)
                    drop = new Drop();
                    drop.width = 10;
                    drop.height = drop.width;
                    drop.x = this.parent.stage.stageWidth * Math.random();
                    drop.y = 0 - drop.height/2;
                    addChild(drop);
                    drops.push(drop);
                addEventListener(Event.ENTER_FRAME, onEnter)
             private function onEnter(evt:Event):void
                 removeEventListener(onEnter)
                   dropGrow(evt);
           private function dropGrow(evt:Event):void
    if statements referring to stage.stageHeight

  • Performance Analysis: java classes run fast, but http response is delayed

    Hello,
    I´m analysing a performance issue on our application and I have the following symptons:
    - A profile analysis with YourKit Java Profiler 7.5 told us that our java classes are running "fast" ( mostly less than 10s ).
    - The access_log of the Oracle HTTP Server (httpd.conf LogFormat %T parameter) show us that the time taken to process the entire request is 130s
    - The users told us that the application runs fast for a while, but after some minutes, the entire application runs slowly. After some minutes again, the entire application runs fast again.
    - There are no overload of CPU, MEM, IO, Networking. All have been checked and are ok.
    - At the same time the application A runs slowly, the application B on the same server ( but another instance ) runs normally.
    - There is no database botleneck. All the application queries have been profiled and optimized for best run.
    - A huge number of application threads exists on the java virtual machine. The peak was 187 threads ( mostly sleeping. Just one or two were running ). The threads average in the vm is 150.
    - Our application has few EJB ( 4 ), few ejb-calls. All the EJB calls are cached with EhCache. The cache timeout is 2hours. When time-out occurs, the cache is invalidated, cleared and reloaded.
    - We have only 10 users.
    My hypothesis are:
    1. Application server thread blocking. Some threads take until 13 minutes to finish, even when the java processing took only 23 seconds.
    2. Some problem with the size of the AJP packages between HTTPServer and Application server.
    I´m really desperate for help. Any help will be widely appreciated.
    Oracle Application Server 9.0.3.3 running on
    Sun Solaris 5.9
    Sun Java Development Kit 1.4.1_05-b01
    Is there any way to configure the max number of threads in the application server? Where?
    Thanks in advance,
    Murilo

    You can tweak the application server threads as described here:
    http://download.oracle.com/docs/cd/B31017_01/web.1013/b28950/threadpool.htm#BHBDGJBI
    Oh just noticed you are on 9.0.3.3 -- that is a very, very, very* old release. I don't think we had a tunable thread-pool back then. The oldest doc I can find is for 10.1.2, which I think is where we first introduced the thread-pool manager:
    http://download.oracle.com/docs/cd/B15904_01/web.1012/b14011/advanced.htm#i1014357
    Is there any garbage collection occurring that could account for the slow-down in ART? I guess not if APP-B continues to run well over the same period.
    -steve-

  • Can this class run fast than Hotspot ?

    My case in Sun hotspot is almost 2 times fast than jRockit. It's very strange.
    package com.telegram;
    public class byteutils {
         public final static byte[] bytea = { 48, 49, 50, 51, 52, 53, 54, 56, 57,
                   58, 65, 66, 67, 68, 69, 70 };
         public byteutils() {
              super();
         * convert length = 2L letters Hexadecimal String to length = L bytes
         * Examples: [01][23][45][67][89][AB][CD][EF]
         public static byte[] convertBytes(String hexStr) {
              byte[] a = null;
              try {
                   a = hexStr.getBytes("ASCII");
              } catch (java.io.UnsupportedEncodingException e) {
                   e.printStackTrace();
              final int len = a.length / 2;
              byte[] b = new byte[len];
              int idx = 0;
              int h = 0;
              int l = 0;
              for (int i = 0; i < len; i++) {
                   h = a[idx++];
                   l = a[idx++];
                   h = (h < 65) ? (h - 48) : (h - 55);
                   l = (l < 65) ? (l - 48) : (l - 55);
                   // if ((h < 0) || (l < 0)) return null;
                   b[i] = (byte) ((h << 4) | l);
              a = null;
              return b;
         public static String convertHex(byte[] arr_b) {
              if (arr_b == null)
                   return null;
              final int len = arr_b.length;
              byte[] byteArray = new byte[len * 2];
              int idx = 0;
              int h = 0;
              int l = 0;
              int v = 0;
              for (int i = 0; i < len; i++) {
                   v = arr_b[i] & 0xff;
                   l = v & 0xf;
                   h = v >> 4;
                   byteArray[idx++] = bytea[h];
                   byteArray[idx++] = bytea[l];
              String r = null;
              try {
                   r = new String(byteArray, "ASCII");
              } catch (java.io.UnsupportedEncodingException e) {
                   e.printStackTrace();
              } finally {
                   byteArray = null;
              return r;
         public static void main(String[] argv) {
              byte[] a = new byte[0x10000];
              for (int c = 0; c < 0x10000; c++) {
                   a[c] = (byte) (c % 256);
              String s = "";
              int LOOP = 10000;
              long l = System.currentTimeMillis();
              for (int i = 0; i < LOOP; i++) {
                   s = convertHex(a);
                   a = convertBytes(s);
              l = System.currentTimeMillis() - l;
              double d = l / (double) LOOP;
              System.out.println("" + d + "ms.");
    }

    Thanks! Your code is essentially a microbenchmark testing the performance of sun.nio.cs.US_ASCII.Decoder.decodeLoop() and encodeLoop(), with ~35% and ~30% spent in those two methods respectively. I have verified the behavior (i.e. Sun is faster than JRockit). Due to the microbenchmark nature, it may not affect a larger running program, but it may merit a closer look regardless. I have forwarded to the JRockit perf team for analysis.
    -- Henrik

Maybe you are looking for

  • SSO to Microsoft based application

    Hi, I want to enabler SSO from Portal to an ASP application running on IIS 5.0 and Win2k. I have gone through the document "Using SAP Logon Tickets for SSO to Microsoft based web applications. I taken the Web Server Filter approach to enable SSO, hav

  • Can't get iCal alarm to work

    I've tried everything that I've read ... but I can't get the alarm to work - Does anyone else have this problem OR solution? Thx in advance!

  • My iPhone 4s cannot connect to my home network, can't figure out why...

    My phone recognizes my home network but cannot join it.  I have tried the option to forget the network and then gone back in and retyped in the password, but it just keeps spinning in a circle trying to connect to my home network, but never connects?

  • EDI Order Confirmation Question : attach additional .PDF file

    Hello, Is it possible to attach to an Order confirmation (for customer standard order)  an additional  pdf.file automatically? If yes, what are the necessary steps needed? Hoping for reply. Many thanks !

  • Can I install PSE 11 without the Organiser as I like iPhoto?

    Hi Have just bought PSE 11, but not installed yet because I don't want PSE's Organiser as I'm happy with iPhoto.  Can I just install the PSE editor, or is there an option to disable the organiser?  There's no mention of giving Mac users an option in