2014-01-17 37 views
1

从JavaScript的Apigee API代理中的以下按预期工作:从JavaScript API apigee代理内创建Java对象:类不是一个函数,它是对象

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的犀牛Scripting_Java页,但没有运气

请人能解释为什么我愚蠢

+0

我想这威胁'String'没有对象,尽管它是Java。 – zapl

回答

1

你是不是太傻了。由于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当前没有允许。

+0

啊谢谢你指出。我希望能够使用一些javax.crypto的东西 - 大概需要部署一个引用这些的jar,或者仍然可以通过JS完成(或根本不需要)? – user3208399

+0

我不相信你完全可以部署罐子。由于代理可以在单个虚拟机上运行大量流量,尤其是在Apigee Edge云(多租户,如果您使用的是免费组织)时,有很大的限制可以避免潜在的内存/性能问题。所有的Java类都需要列入白名单。如果你是一个付费客户,你应该能够创建Java标注(尽管对你来说更多的工作)。 –

1

为了解决有关创建日期类型的对象你原来的问题,你可以做普通的旧的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) 
相关问题