Варианты вызова метода Java из Javascript - PullRequest
0 голосов
/ 02 июля 2011

Какие существуют варианты вызова «определенного» метода Java из Javascript и обратного вызова и т. Д.?

например. Я знаю, что использую DWR. Но хотел бы знать, есть ли другие библиотеки, которые можно использовать ИЛИ, если это может быть сделано самим AJAX ..

Какой рекомендуемый подход?

Ответы [ 2 ]

2 голосов
/ 02 июля 2011

Проще говоря, за возможным исключением Java-апплета, работающего в том же контексте страницы, что и JavaScript, JavaScript не может напрямую вызывать метод Java или наоборот. DWR не вызывает какие-либо методы Java напрямую из JavaScript, он отправляет AJAX-запрос на сервер и использует свой собственный промежуточный уровень для обработки запросов и ответов таким образом, что выглядит так, как будто он вызывает методы Java.

Но в любом случае, типичный подход для получения кода JavaScript на клиенте и кода Java на сервере для общения друг с другом заключается в определении API на сервере, который доступен клиенту. Затем клиент может отправлять запросы (используя AJAX или любой другой механизм, который вы предпочитаете), используя предоставляемый API. Клиент не вызывает какие-либо методы Java напрямую, вместо этого он отправляет запрос на заданный URL-адрес на сервере, который сопоставляется с некоторым фрагментом кода Java. Самые популярные платформы JavaScript предоставляют удобные методы для упрощения обработки запросов AJAX и обратных вызовов.

Если по какой-то причине вы хотите, чтобы функциональность была эквивалентна возможности вызова произвольного метода в произвольном классе и чтобы вам был возвращен результат, тогда вы можете определить метод API, который принимает в качестве параметров имя класса и имя метода и затем использует отражение для выполнения вызова метода. Это, вероятно, будет очень близко к тому, что делает серверная часть DWR.

0 голосов
/ 02 июля 2011

Я знаю, что вы можете сделать это при использовании Mozilla Rhino, но я предполагаю, что вы говорите о среде выполнения браузера, так что, возможно, этот ответ не очень полезен.

...