Как вы указываете путь ссылки при загрузке класса? - PullRequest
1 голос
/ 14 октября 2011

Я пытаюсь использовать JavaLoader для загрузки Java-класса ( HttpAsyncClient ) в ColdFusion.

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

Откуда мы знаем, что ссылка org.apache.commons.HttpAsyncClient? Я подумал, что если вы откроете файл jar и будете следовать структуре каталогов, он даст вам путь ссылки. Но я не думаю, что это правда.

Я пытаюсь использовать HttpAsyncClient, но не могу загрузить его:

client = loader.create("org.apache.commons.HttpAsyncClient") возвращает ошибку "класс не найден".

Loader - это ссылка на JavaLoader , который загружает классы Java в ваш CF-сервер.

Ответы [ 2 ]

2 голосов
/ 14 октября 2011

Вместо того, чтобы заново изобретать колесо, почему бы не попробовать существующий инструмент, такой как Марк Аделинхттб Библиотеки Манделя ?

Обновление: Из комментариев этот инструмент только ACF,Поэтому вы можете попробовать использовать конкретный класс DefaultHttpAsyncClient, как показано в примере Асинхронный HTTP Exchange .

2 голосов
/ 14 октября 2011

Я не знаю ColdFusion. Возможно, вам придется указать полный путь к классу, а не только пакет, содержащий класс.

В соответствии с примером я нашел полный пакет и имя класса: org.apache.http.nio.client.HttpAsyncClient

Вы также можете использовать javadoc, чтобы узнать имена пакетов и классов: http://hc.apache.org/httpcomponents-client-ga/httpclient/apidocs/index.html

Получение чего-то асинхронного с таким интерфейсом, вероятно, будет жестоким. Я бы предложил сначала попробовать синхронизированную версию.

EDIT

Я бы попробовал адаптировать этот пример синхронизации к CF: http://hc.apache.org/httpcomponents-client-ga/httpclient/examples/org/apache/http/examples/client/ClientWithResponseHandler.java

Когда вы создаете экземпляр HttpGet, вы должны передать дополнительные параметры init (), как они делают в этом примере: http://www.coldfusionjedi.com/index.cfm/2009/5/29/Generating-Speech-with-ColdFusion-and-Java

...