2013-03-14 2 views
1

У меня есть библиотека Java, которая использует Jython, чтобы пользователи могли добавлять пользовательские скрипты для взаимодействия с определенными частями библиотеки.Как заставить скрипт Jython синхронно вызывать метод Java?

После Java дают данные на скрипты легко, но давайте скажем, я хочу следовать этому образцу на одного из сценариев Jython:

data = do_stuff() 
# Heavy lifting! have the java lib do this 
results = java_lib_help_me_out(data) 
do_stuff_with_results(results) 

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

data = do_stuff() 
#heavy lifting 
java_lib_help_me_out(data, callback) 
... 
def callback(results): 
    do_stuff_with_results(results) 

Есть ли лучший способ сделать это?

ответ

2

Просто ваша функция java_lib_help_me_out() возвращает данные в виде класса Java или массив или что-то, как это:

public String[] java_lib_help_me_out() 
{ 
    return new String[] { "one", "two", "three" }; 
} 

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

Если это не сработает, возможно, напишите более подробную информацию?

+0

Я думаю, что, возможно, мне было очень плохо смотреть документацию по Jython, но я нашел это: http://www.jython.org/archive/21/docs/usejava.html. Я думаю, по какой-то причине у меня создалось впечатление, что вы не можете «просто называть java-функции в Jython», но я был неправ? – cabbagebot

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