Я пытаюсь использовать автоматическое обнаружение как часть EWS-JAVA-API в Coldfusion. Проблема заключается в том, что для метода AutodiscoverUrl один из аргументов должен быть методом обратного вызова. Я понял, что могу использовать динамический прокси-метод Coldfusions для достижения этого, но у меня возникают проблемы с его работой.Использование Autodiscovery (EWS API) с Coldfusion
Java-код, который я пытаюсь преобразовать Coldfusion выглядит следующим образом:
static class RedirectionUrlCallback implements IAutodiscoverRedirectionUrl {
public boolean autodiscoverRedirectionUrlValidationCallback(String redirectionUrl) {
return redirectionUrl.toLowerCase().startsWith("https://");
}
}
service.autodiscoverUrl("<your_email_address>", new RedirectionUrlCallback());
Эквивалентный код, который я написал:
<cfset emailAddress = "" >
<cfset password = "" >
<cfset server_domain = "outlook.office365.com" >
<cfset Version = createObject("java", "microsoft.exchange.webservices.data.ExchangeVersion") >
<!--- Create instance of the MS Exchange Service --->
<cfset ExchangeService = CreateObject("java","microsoft.exchange.webservices.data.ExchangeService").init(Version.Exchange2010_SP1) >
<!--- Create instance of and set the credentials --->
<cfset Credentials = CreateObject("java","microsoft.exchange.webservices.data.WebCredentials") >
<cfset Credentials.init(emailAddress, password) >
<cfset ExchangeService.setCredentials(Credentials) >
<cfset dynamicProxy = createDynamicProxy("autodiscoverRedirectProxy", ["microsoft.exchange.webservices.data.autodiscover.IAutodiscoverRedirectionUrl"]) >
<cfset validateRedirectionUrlCallback = CreateObject("java","microsoft.exchange.webservices.data.autodiscover.IAutodiscoverRedirectionUrl").init(dynamicProxy) >
<cfset ExchangeService.autodiscoverUrl(emailAddress, validateRedirectionUrlCallback) >
autodiscoverRedirectProxy является CFC-файл, который содержит обратный вызов следующим образом:
<cfcomponent>
<cffunction
name="AutodiscoverRedirectionUrlValidationCallback"
access="public"
returntype="boolean"
hint="This is going to be used as a dynamic proxy. Used for MS Exchange Autodiscover." >
<cfargument name="redirectionUrl" type="string" required="true" >
<cfset var result = false > <!--- init --->
<cfif left(Arguments.redirectionUrl,8) eq "https://" >
<cfset result = true >
</cfif>
<cfreturn result >
</cffunction>
</cfcomponent>
Я понимаю, что мой код неверен. И из ошибки я возвращаюсь («Невозможно найти конструктор для класса»), я понимаю, почему. Но я в недоумении, в каком направлении я должен взять отсюда, поэтому я прошу некоторых идей.
Спасибо за ваши мысли Ли. – Steve
Я пробовал то, что вы предложили, ответ «метод autodiscoverUrl не был найден». Это происходит, когда аргумент метода неверен. Я также попытался вызвать callbackProxy..autodiscoverRedirectionUrlValidationCallback в качестве аргумента, тогда ответ будет «Элемент AUTODISCOVERREDIRECTIONURLVALIDATIONCALLBACK не установлен в DYNAMICPROXY». – Steve
Можете ли вы обновить свой вопрос с помощью полного кода, который вы пытались (включая создание экземпляра javaloader с файловыми путями .jar) и полное сообщение об ошибке? Я хочу посмотреть, могу ли я воспроизвести его в своей среде. – Leigh