Создайте объект java из javascript в прокси apigee api: класс - это не функция, это объект

из javascript в прокси-сервере Apigee API следующее работает должным образом:

var javaString = new java.lang.String("FooBar");    
throw "javaString: "+javaString;

но это не так:

var date = new java.util.Date();
throw "date: "+date;

и выдает следующее исключение при создании объекта

TypeError: [JavaPackage java.util.Date] is not a function, it is object

Я пробовал много чего со страницы Mozilla Rhino Scripting_Java, но безуспешно

пожалуйста, объясните, как я дурак


person user3208399    schedule 17.01.2014    source источник
comment
Я предполагаю, что это угрожает String не как объекту, хотя это в Java.   -  person zapl    schedule 18.01.2014


Ответы (2)


Вы не дурак. Из-за требований среды Edge не все стандартные типы классов разрешены в выносках JavaScript.

В настоящее время это должно быть разрешено:

java.lang.Object
java.lang.String
java.lang.Integer
java.lang.Boolean
java.lang.Long
java.lang.Double
java.lang.Float
java.lang.Short
java.lang.Byte
java.lang.Number
java.util.HashMap

java.util.Date в настоящее время не допускается.

person Mike Dunker    schedule 17.01.2014
comment
Ах, спасибо, что указали на это. Я надеялся использовать какой-то материал javax.crypto - по-видимому, нужно развернуть банку, которая ссылается на них, или это все еще можно сделать через JS (или не использовать вообще)? - person user3208399; 18.01.2014
comment
Я вообще не верю, что можно использовать jar-файлы. Поскольку прокси-серверы могут запускать большой объем трафика на одной виртуальной машине, особенно в облаке Apigee Edge (мультитенантный, если вы используете бесплатную организацию), существуют значительные ограничения, чтобы избежать потенциальных проблем с памятью / производительностью. Все классы Java должны быть внесены в белый список. Если вы являетесь платным клиентом, у вас должна быть возможность создавать выноски Java (тем не менее, для вас это значительно больше работы). - person Mike Dunker; 18.01.2014

Чтобы ответить на ваш исходный вопрос о создании объекта типа date, вы можете использовать простой старый JavaScript, например:

new Date() // current date and time

new Date(milliseconds) // milliseconds since 1970/01/01

new Date(dateString)

new Date(year, month, day, hours, minutes, seconds, milliseconds)
person Diego    schedule 06.02.2014