Modo Headless

Iniciando o X Server no Linux Headless

A biblioteca JxBrowser pode ser utilizada no ambiente Linux headless, dado que o servidor X esteja rodando.

Aqui está como iniciar o servidor X:

1. Instalar o servidor Xvfb

no seu Linux headless, por exemplo, Ubuntu Server 16.04.2 LTS:

sudo apt-get install xvfb

2. Executar a sua aplicação Java

Ao iniciar o servidor X autônomo:

Xvfb :1 -screen 0 800x600x24+32 &
export DISPLAY=:1
java -jar application.jar

ou usando o comando xvfb-run:

xvfb-run --server-args="-screen 0 800x600x24+32" java -jar application.jar

É obrigatório especificar o tamanho da tela e a profundidade da cor.

E a flag “headless”?

Chromium 58 e superior suportam o sinalizador de linha de comando --headless que funciona apenas para Linux.

A flag permite rodar o Chromium em ambiente Linux headless sem iniciar o servidor X. Esta flag é projetada para o caso em que você só precisa executar o Chromium em ambiente headless, carregar alguma URL, e anexar à página web carregada usando DevTools através do switcher --remote-debugging-port. Por exemplo:

chrome --headless --remote-debugging-port=9222 https://chromium.org

Neste caso, carrega-se a página web localhost:9222 numa aplicação do navegador web e trabalha-se com a página web carregada utilizando o DevTools.

Como você pode ver, o sinalizador de linha de comando --headless foi projetado para ser usado quando você precisa carregar uma única página web e trabalhar com ela via DevTools. Verificamos o código fonte do Chromium e descobrimos que esta flag força o Chromium a utilizar uma versão separada e limitada da API Chromium que não suporta a maioria (~80-90%) das funcionalidades utilizadas no JxBrowser.

O que significa que esta flag desativa a maioria das funcionalidades do JxBrowser, tais como carregar diferentes páginas Web por URL, HTML, navegar para trás e para a frente, executar JavaScript, etc.

É por isso que esta flag NÃO é suportada pelo JxBrowser, e recomendamos que inicie o servidor X para utilizar o JxBrowser num ambiente Linux headless.

Go Top