2010-11-17 6 views
1

Я настраиваю веб-интерфейс для сервера тестирования. Некоторые из тестов включают открытие определенного файла, захват экрана и сохранение полученного изображения. Я использую Runtime.getRuntime().exec() и Robot для этого.Tomcat/JSP: открытие файла на сервере и снятие скриншота

Если я получаю доступ к серверу через удаленный рабочий стол и запускаю тесты, все работает нормально; файл открывается и снимок экрана сохраняется. Если я пытаюсь запустить те же тесты через JSP-файл с Tomcat, файл не открывается (хотя процесс можно найти в диспетчере задач), и изображение полностью черное.

Вот простой пример, который может привести к черным/пустое изображение (из файла JSP):

/* initializing stuff goes here */ 
Runtime.getRuntime().exec("C:\\Windows\\System32\\notepad.exe"); 
BufferedImage screenCap = robot.createScreenCapture(rect); 
File savedImage = new File("C:\\test.png"); 
ImageIO.write(screenCap, "png", savedImage); 

Это то, что я пытаюсь сделать это возможно?

ответ

0

В MS Windows: если tomcat запущен как служба, он может пропустить разрешения для взаимодействия с рабочим столом и поэтому не сможет запускать программы, открывающие окна.

В диалоговом окне свойств службы есть галочка.

+0

Это оказалось самым простым способом. Благодарю. – CEB

0

JSP должен обслуживаться веб-сервером и просматривать веб-браузер. Используйте Desktop#browse() на http://localhost, чтобы просмотреть его и сделать снимок экрана через некоторое время (5 секунд?), Браузеру, конечно, нужно время для начала и полностью загрузить страницу.

Kickoff пример:

Desktop.getDesktop().browse(new URI("http://localhost:8080/page.jsp")); 
Thread.sleep(5000); 
BufferedImage image = new Robot().createScreenCapture(new Rectangle(Toolkit.getDefaultToolkit().getScreenSize())); 
ImageIO.write(image, "png", new File("/screen.png")); 

Вы однако должны учитывать, что эта работа должна быть в очереди, чтобы избежать, что различные запросы захвата экрана мешают друг другу. Также обратите внимание, что это не будет работать на безголовом сервере (серверная машина без монитора).

Смежные вопросы