在Coldfusion上使用Java SDK库

时间:2014-10-15 04:34:40

标签: java coldfusion

我正在尝试使用Prediction.io提供的Java SDK,但遇到了一些麻烦。基本上,为了使用Java SDK,Java代码如下所示。

import com.google.common.collect.ImmutableMap;
import io.prediction.EventClient;
import org.joda.time.DateTime;

EventClient eventClient = new EventClient(1);
eventClient.setUser("id_1", ImmutableMap.<String, Object>of(), new DateTime("2004-12-13T21:39:45.618-07:00"));

我所做的是:

1)编译Java SDK并将生成的jar文件和依赖项复制到/ opt / railo / lib /

2)使用以下代码管理以获取EventClient类的转储:

<cfset MyTest = CreateObject("java", "io.prediction.EventClient")>
<cfdump var="#MyTest#">

之后我几乎失去了。虽然我已经习惯了Coldfusion,但我是一个全新的Java新手。如何在Coldfusion中使用/复制上面的Java代码?

1 个答案:

答案 0 :(得分:2)

完全未经测试,但这样的事情应该做:

首先创建对象:

<cfset MyTest = CreateObject("java", "io.prediction.EventClient").init(1)>

这相当于EventClient eventClient = new io.prediction.EventClient(1);。您需要init()方法,以便通过使用参数1调用其构造函数来创建使用CreateObject()加载的类的实例。

创建一个空的ImmutableMap

<cfset imClass = CreateObject("java", "com.google.common.collect.ImmutableMap")>
<cfset imObj = imClass.of()>

上面,您正在调用of()类的静态方法ImmutableMap,因此您不需要在类上使用init。如果您愿意,也可以将这两行合并为一行。

现在创建Joda DateTime对象:

<cfset jtObj = CreateObject("java", "org.joda.time.DateTime").init("2004-12-13T21:39:45.618-07:00")>

最后,您可以在EventClient对象上调用该方法:

<cfset MyTest.setUser("id_1", imObj, jtObj)>