Я хочу, чтобы Java-приложение вызывало функцию в сценарии действия? - PullRequest
2 голосов
/ 23 марта 2009

как я могу позволить SWF-файлу немедленно извлекать значения из приложения Java, которое выполняет живые вычисления (необходима скорость).

вопрос в другой форме: как я могу дать браузеру моего сайта немедленные данные - это боб рассчитывается сейчас - так же быстро, как я может?

Ответы [ 2 ]

1 голос
/ 24 марта 2009

Если скорость имеет решающее значение, вы, вероятно, захотите сделать это через какое-то сокетное соединение. Обычно подписанный апплет или Java-приложение WebStart могут открывать сокет прослушивания. Приложение Flash сможет подключиться к этому сокету, и в результате вы получите очень быструю двустороннюю связь.

Однако есть несколько предостережений.

  • Вы должны иметь в виду, что пользователь может заподозрить странную активность сокетов на своем компьютере, или это будет просто заблокировано брандмауэром - поэтому вам нужно будет предупредить пользователя.
  • Чтобы иметь возможность подключиться из Flash в Java, вы должны отправить файл политики междоменного домена из сокета прослушивания (или любого другого значения ниже 1024 - подробности см. В документации; ключевые слова: crossdomain, policy-file-request, loadPolicyFile ). Также вашему приложению Flash может потребоваться запросить такой файл вручную из приложения Java.

Пара полезных ссылок о том, как получить сертификат для вашего Java-приложения: как получить бесплатный сертификат подписи кода (русский) , аналогичное, но менее подробное описание на английском языке .

Однако, если вы в состоянии (читай: скорость достаточна) использовать комбинацию Java Applet <-> JavaScript <-> Flash, я бы посоветовал воспользоваться ей.

1 голос
/ 23 марта 2009

Я собираюсь предположить, что вычисления выполняются в Java-апплете в том же браузере, где работает флэш-память.

Вы можете вызвать Javascript из апплета, используя следующий код. Этот код может затем обновить значения во флэш-анимации.

import netscape.javascript.JSObject;

JSObject win = JSObject.getWindow(applet);
win.eval("window.alert('Hello from Java')");

Если мое предположение неверно, то где работает приложение Java? На клиенте или сервере?

Если это на сервере, то вам нужно Flash Remoting. Я полагаю, что есть несколько различных методов удаленного взаимодействия с Flash. Попробуйте поискать java flash remoting . Вы можете заставить его вызывать сервер каждые 2 секунды или около того, чтобы получать последние данные.

Если он работает на клиенте, я сомневаюсь, что вы можете подключиться к нему из Flash из-за безопасности. Подписанный Java-апплет может подключаться где угодно. Вы можете извлечь данные, используя их, а затем вставить их во Flash, используя метод, описанный выше. Было бы сумасшедшим взломать хотя. Можете ли вы сделать то же самое с Flex? (Я никогда раньше не использовал Flex).

...