Java print - Controle de bandejas da impressora

Olá caros,
Gostaria de saber se alguem já teve uma situação parecida e pode compartilhar alguma experiência.
Tenho um programa de controle de impressão onde o usuário pode definir qual bandeja enviar a impressão.
Porém os atributos da classe MediaTray não funcionam conforme especificação (MediaTray.MANUAL, MediaTray.MAIN, MediaTray.ENVELOPE, MediaTray.SIDE, MediaTray.TOP, etc…). Existe algo a mais que deva ser feito na impressora?

Abaixo o trecho do programa, alguem tem alguma idéia ou sugestão?
Desde já obrigado!!!

PrintService service[] = PrintServiceLookup.lookupPrintServices(null, null);
if (service != null && service.length > 0) {
for (int i = 0; i < service.length; i++) {
System.out.println(service[i].getName());
}
}

PrinterJob job = PrinterJob.getPrinterJob();

DocPrintJob docjob = service[0].createPrintJob();
PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
aset.add(MediaTray.TOP);

File file = new File("c:/arquivo.pdf");
InputStream fis = null;
try {
fis = new FileInputStream(file);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
DocFlavor flavor = DocFlavor.INPUT_STREAM.AUTOSENSE;
SimpleDoc doc = new SimpleDoc(fis, flavor, null);
try {
docjob.print(doc, aset);
}
catch (PrintException ex) {
ex.printStackTrace();
}

Solução do problema:

   PrintRequestAttributeSet aset =  new HashPrintRequestAttributeSet();

    Media med[] = (Media[])service[0].getSupportedAttributeValues(Media.class, null, null);
    for (int k=0; k&lt;med.length; k++) {
        System.out.println("Name : " + med[k].getClass() + " - Value : " + med[k].getValue() +
                           " - String: " + med[k].toString());
        if(med[k].getClass().equals(sun.print.Win32MediaTray.class) &&
                med[k].toString().trim().contains("Tray 1")) {
                aset.add((Media)med[k]);
        }
    }

>