How do you tell the reference path when loading a class?

375 views Asked by At

I'm trying to use JavaLoader to load a java (HttpAsyncClient) class into ColdFusion.

client = loader.create("org.apache.commons.HttpAsyncClient")

How do we know the reference that is org.apache.commons.HttpAsyncClient? I thought if you open the jar file and follow the directory structure, it will give you the reference path. But I don't think this is true.

I'm trying to use the HttpAsyncClient but I'm unable to load it:

client = loader.create("org.apache.commons.HttpAsyncClient") returns a class not found error.

Loader is a reference to JavaLoader, which loads Java classes into your CF server.

2

There are 2 answers

9
Leigh On BEST ANSWER

Rather than reinvent the wheel, why not try an existing tool like Mark Mandel's AsyncHTTP library?

Update: From the comments, that tool is ACF only. So you might try using the concrete class DefaultHttpAsyncClient as shown in the Asynchronous HTTP Exchange example.

5
Sarel Botha On

I don't know ColdFusion. You probably have to specify the full path to the class, not just the package containing the class.

According to an example I found the full package and class name is this: org.apache.http.nio.client.HttpAsyncClient

You can also use the javadoc to find out the package and class names: http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/index.html

Getting something async going with an interface like this will probably be brutal. I would suggest trying the sync version first.

EDIT

I would try adapting this sync example to CF: http://hc.apache.org/httpcomponents-client-ga/httpclient/examples/org/apache/http/examples/client/ClientWithResponseHandler.java

When you instantiate HttpGet you have to pass extra parameters to init() as they do in this example: http://www.coldfusionjedi.com/index.cfm/2009/5/29/Generating-Speech-with-ColdFusion-and-Java