Если у вас есть такая конфигурация:
<VirtualHost *:80>
ServerName example.com
DocumentRoot "/var/www/example.com"
<FilesMatch "\.php$">
SetHandler "proxy:fcgi://127.0.0.1:9000"
</FilesMatch>
</VirtualHost>
Раскомментируйте следующие строки в вашем httpd.conf
LoadModule proxy_module lib/httpd/modules/mod_proxy.so
LoadModule proxy_fcgi_module lib/httpd/modules/mod_proxy_fcgi.so
Это работает для меня
Вам необходимо соблюдать правила потоковой передачи Swing, которые вкратце кратко означают, что все выполняемые задачи, такие как ожидание и захват ваших данных, должны выполняться в фоновом потоке, и все вызовы Swing должны выполняться в потоке событий Swing , Используйте SwingWorker<Void, String>
, чтобы помочь вам это сделать.
Пожалуйста, просмотрите Параллельность в Swing , чтобы увидеть учебник со всеми подробностями gory.
, например,
private class MySwingWorker extends SwingWorker<Void, String> {
private byte[] buffer = new byte[2000];
@Override
protected Void doInBackground() throws Exception {
while (true) {
DatagramPacket incoming = new DatagramPacket(buffer, buffer.length);
serverSocket.receive(incoming);
String incomingMessage = new String(incoming.getData());
publish(incomingMessage);
}
return null;
}
@Override
protected void process(List<String> chunks) {
for (String chunk : chunks) {
textArea.append("Client: " + chunk + "\n");
}
}
}
Другие предложения:
execute()
в SwingWorker для его запуска. get()
на свой SwingWorker, даже если он возвращает Void. Это поможет мне отследить и ответить на любые исключения, которые могли произойти в SwingWorker по мере его запуска. С циклом while мой текст не обновляется
Скорее всего, вы запустили свой цикл в EDT (Event Dispatching Thread) . Это препятствует обновлению пользовательского интерфейса. Попробуйте вместо этого запустить свой код в другом потоке. SwingWorker
может быть одним из вариантов, создание другого механизма Thread или ThreadPool (служба исполнителей) - это еще одно решение. Просто убедитесь, что все ваши обновления для пользовательского интерфейса выполняются в EDT (например, перемещая их в блок EventQueue.invokeLater
)
См. Также эту ссылку, в которой приведен пример того, как правильно использовать SwingWorker