CFC including
Hi
We are currenlty trying to implement some API's which we haev downloaded there sample files which are all .cfc files. I have never used CFC so am unsure how to use them . I am trying look at tutorials but at the moment it is still not making any sense to me. Can someone please explain how to view them /Invoke them or let me know a tutorial that will help me.
Some of the examples i have are
application.cfm
component displayname="Application"
public void function onRequestStart() {
application.ccUsername = "username"; // Username
application.ccPassword = "password"; // Password
application.apiKey = "ourAPI key"; // API Key
application.optInSource = "ACTION_BY_CUSTOMER";
optInSource - How are these contacts being added.
ACTION_BY_CUSTOMER - Used for internal applications. Contact did not take the action to add themself to your list.
This will not generate a 'Welcome Email'.
ACTION_BY_CONTACT - Used for sign up boxes where the customer is directly subscribing to your newsletter.
This will send a 'Welcome Email' when the user subscribes.
/* set to true to use errorMessaging function in Utility.cfc to provide http error messaging */
application.debug = true;
application.path = "https://api.constantcontact.com";
application.apiPath = "#application.path#/ws/customers/#APPLICATION.ccUsername#";
application.doNotInclude = "Active,Do Not Mail,Removed";
public void function onError(required exception, required string eventName) {
new Utility().errorMsg('#Arguments.Exception.rootcause.message#');
then campaigncollection
public CampaignsCollection function init() {
return this;
*@hint Creates a Campaign in Constant Contact using the properties of the Campaign object
*@campaign Campaign to be added to Constant Contact
public Campaign function addCampaign(required Campaign campaign) {
local.campaignXml = createCampaignXml(arguments.campaign);
local.httpResponse = CTCTRequest('post', '#application.apiPath#/campaigns', local.campaignXml);
local.campaignStruct = createCampaignStruct(local.httpResponse);
local.newCampaign = new Campaign(argumentCollection = local.campaignStruct);
return local.newCampaign;
*@hint Updates a Campaign in Constant Contact using the properties of the Campaign object
*@campaign Campaign to be updated
public string function updateCampaign(required Campaign campaign) {
local.campaignXml = createCampaignXml(arguments.campaign);
local.httpResponse = CTCTRequest('put', '#arguments.campaign.getCampaignLink()#', local.campaignXml);
return local.httpResponse;
*@hint Deletes a Campaign in Constant Contact using the properties of the Campaign object
*@campaign Campaign to be deleted in Constant Contact
public void function deleteCampaign(required Campaign campaign) {
local.httpResponse = CTCTRequest('delete', '#arguments.campaign.getCampaignLink()#');
*@hint Gets a list of 50 Campaigns, and a link to the next page of campaigns if one exists
*@page Optional URL if performing this function on a page other than the first
public array function getCampaigns(page='#application.apiPath#/campaigns') {
local.campaignsXml = xmlParse(CTCTRequest('get', page));
local.fullArray = arrayNew(1);
local.campaignsArray = arrayNew(1);
local.linkArray = arrayNew(1);
local.nextAddress = '';
for(i=1; i LTE arrayLen(local.campaignsXml.feed.entry); i=i+1) {
local.campaign = {
campaignLink = application.path & local.campaignsXml.feed.entry[i].link.xmlattributes.href,
campaignId = local.campaignsXml.feed.entry[i].id.xmlText,
campaignName = local.campaignsXml.feed.entry[i].title.XmlText,
updated = local.campaignsXml.feed.entry[i].updated.XmlText,
status = local.campaignsXml.feed.entry[i].content.Campaign.status.xmlText};
local.newCampaign = new Campaign(argumentCollection=local.campaign);
arrayAppend(local.campaignsArray, local.newCampaign);
arrayAppend(local.fullArray, local.campaignsArray);
local.nextLinkSearch = xmlSearch(local.campaignsXml, "//*[@rel='next']");
if(!arrayIsEmpty(local.nextLinkSearch)) {
local.nextAddress = application.path & local.nextLinkSearch[1].xmlattributes.href;
local.linkArray[1] = local.nextAddress;
arrayAppend(local.fullArray, local.linkarray);
return local.fullArray;
*@hint Searches for campaigns based off of their status
*@status Status to search for. Valid options are: DRAFT, RUNNING, SENT and SCHEDULED
public array function searchCampaigns(required string status) {
local.searchUrl = application.apiPath & '/campaigns?status=' & arguments.status;
local.foundCampaigns = getCampaigns(local.searchUrl);
return local.foundCampaigns;
*@hint Returns an updated Campaign object containing all details that exist in Constant Contact
*@campaign Campaign to retrieve details for
public Campaign function getCampaignDetails(required Campaign campaign) {
local.campaignXml = xmlParse(CTCTRequest('get', '#arguments.campaign.getCampaignLink()#'));
local.campaignStruct = createCampaignStruct(local.campaignXml);
local.newCampaign = new Campaign(argumentCollection = local.campaignStruct);
return local.newCampaign;
*@hint Creates XML to be used for sending Campaign information to Constant Contact
*@campaign Campaign to create XML for
private Xml function createCampaignXml(required Campaign campaign) {
savecontent variable="local.campaignPart1" {
writeOutput('<entry xmlns="http://www.w3.org/2005/Atom">
<link href="/ws/customers/#application.ccusername#/campaigns" rel="edit" />
<id>#arguments.campaign.getCampaignId()#</id>
<title type="text"></title>
<updated>#dateformat(now(), "yyyy-mm-dd")#T#TimeFormat(now(), "HH:mm:ss:l")#Z</updated>
<author>
<name></name>
</author>
<content type="application/vnd.ctct+xml">
<Campaign xmlns="http://ws.constantcontact.com/ns/1.0/" id="#arguments.campaign.getCampaignId()#">
<Name>#arguments.campaign.getCampaignName()#</Name>
<Status>#arguments.campaign.getStatus()#</Status>
<Date>#dateformat(now(), "yyyy-mm-dd")#T#TimeFormat(now(), "HH:mm:ss:l")#Z</Date>
<Subject>#arguments.campaign.getSubject()#</Subject>
<FromName>#arguments.campaign.getFromName()#</FromName>
<ViewAsWebpage>#arguments.campaign.getViewAsWebpage()#</ViewAsWebpage>
<ViewAsWebpageLinkText>#arguments.campaign.getViewAsWebpageLinkText()#</ViewAsWebpageLinkText>
<ViewAsWebpageText>#arguments.campaign.getViewAsWebpageText()#</ViewAsWebpageText>
<PermissionReminder>#arguments.campaign.getPermissionReminder()#</PermissionReminder>
<PermissionReminderText>#arguments.campaign.getPermissionReminderText()#</PermissionReminderText>
<GreetingSalutation>#arguments.campaign.getGreetingSalutation()#</GreetingSalutation>
<GreetingName>#arguments.campaign.getGreetingName()#</GreetingName>
<GreetingString>#arguments.campaign.getGreetingString()#</GreetingString>
<OrganizationName>#arguments.campaign.getOrganizationName()#</OrganizationName>
<OrganizationAddress1>#arguments.campaign.getOrganizationAddress1()#</OrganizationAddress1>
<OrganizationAddress2>#arguments.campaign.getOrganizationAddress2()#</OrganizationAddress2>
<OrganizationAddress3>#arguments.campaign.getOrganizationAddress3()#</OrganizationAddress3>
<OrganizationCity>#arguments.campaign.getOrganizationCity()#</OrganizationCity>
<OrganizationState>#arguments.campaign.getOrganizationState()#</OrganizationState>
<OrganizationInternationalState>#arguments.campaign.getOrganizationInternationalState()#</OrganizationInternationalState>
<OrganizationCountry>#arguments.campaign.getOrganizationCountry()#</OrganizationCountry>
<OrganizationPostalCode>#arguments.campaign.getOrganizationPostalCode()#</OrganizationPostalCode>
<IncludeForwardEmail>#arguments.campaign.getIncludeForwardEmail()#</IncludeForwardEmail>
<ForwardEmailLinkText>#arguments.campaign.getForwardEmailLinkText()#</ForwardEmailLinkText>
<IncludeSubscribeLink>#arguments.campaign.getIncludeSubscribeLink()#</IncludeSubscribeLink>
<SubscribeLinkText>#arguments.campaign.getSubscribeLinkText()#</SubscribeLinkText>
<EmailContentFormat>#arguments.campaign.getEmailContentFormat()#</EmailContentFormat>
<EmailContent>#xmlFormat(arguments.campaign.getEmailContent())#</EmailContent>
<EmailTextContent>#xmlFormat(arguments.campaign.getEmailTextContent())#</EmailTextContent>
<StyleSheet></StyleSheet>
<ContactLists>');
savecontent variable="local.campaignPart2" {
for(i=1; i LTE arrayLen('#arguments.campaign.getContactLists()#'); i=i+1) {
writeOutput('<ContactList id="#local.campaign.getContactLists()[i]#"/>');
savecontent variable="local.campaignPart3" {
writeOutput('</ContactLists>
<FromEmail>
<Email id="#arguments.campaign.getFromEmailId()#">
</Email>
<EmailAddress>#arguments.campaign.getFromEmail()#</EmailAddress>
</FromEmail>
<ReplyToEmail>
<Email id="#arguments.campaign.getReplyToEmailId()#">
</Email>
<EmailAddress>#arguments.campaign.getReplyToEmail()#</EmailAddress>
</ReplyToEmail>
</Campaign>
</content>
<source>
<id>http://api.constantcontact.com/ws/customers/#application.ccUsername#/campaigns</id>
<title type="text">Campaigns for customer: #application.ccUsername#</title>
<link href="campaigns" />
<link href="campaigns" rel="self" />
<author>
<name>#application.ccUsername#</name>
</author>
<updated>#dateformat(now(), "yyyy-mm-dd")#T#TimeFormat(now(), "HH:mm:ss:l")#Z</updated>
</source>
</entry>');
local.fullXml = local.campaignPart1 & local.campaignPart2 & local.campaignPart3;
return xmlParse(local.fullXml);
*@hint Creates a structure representing a Camapign from XML returned by CTCT
*@xml XML to create a structure out of
private struct function createCampaignStruct(required any campaignXml) {
local.campaignXml = xmlParse(campaignXml);
local.tempStruct = local.campaignXml.entry.content.Campaign;
local.campaign = {
campaignName = local.tempStruct.name.xmlText,
campaignId = local.campaignXml.entry.id.xmlText,
campaignLink = application.path & local.campaignXml.entry.link.xmlattributes.href,
updated = local.campaignXml.entry.updated.xmltext,
status = local.tempStruct.status.xmltext,
sent = local.tempStruct.sent.xmltext,
opens = local.tempStruct.opens.xmltext,
clicks = local.tempStruct.clicks.xmltext,
optOuts = local.tempStruct.optouts.xmltext,
bounces = local.tempStruct.bounces.xmltext,
forwards = local.tempStruct.forwards.xmltext,
spamReports = local.tempStruct.spamreports.xmltext,
subject = local.tempStruct.subject.xmltext,
fromName = local.tempStruct.fromname.xmltext,
fromEmail = local.tempStruct.fromemail.emailaddress.xmltext,
replyToEmail = local.tempStruct.replytoemail.emailaddress.xmltext,
campaignType = local.tempStruct.campaigntype.xmltext,
viewAsWebpage = local.tempStruct.viewaswebpage.xmltext,
viewAsWebpageLinkText = local.tempStruct.viewaswebpagelinktext.xmltext,
viewAsWebpageText = local.tempStruct.viewaswebpagetext.xmltext,
permissionReminder = local.tempStruct.permissionreminder.xmltext,
greetingSalutation = local.tempStruct.greetingsalutation.xmltext,
greetingString = local.tempStruct.greetingstring.xmltext,
organizationName = local.tempStruct.organizationname.xmltext,
organizationAddress1 = local.tempStruct.organizationaddress1.xmltext,
organizationAddress2 = local.tempStruct.organizationaddress2.xmltext,
organizationAddress3 = local.tempStruct.organizationaddress3.xmltext,
organizationCity = local.tempStruct.organizationcity.xmltext,
organizationState = local.tempStruct.organizationstate.xmltext,
organizationInternationalState = local.tempStruct.organizationinternationalstate.xmltext,
organizationPostalCode = local.tempStruct.organizationpostalcode.xmltext,
organizationCountry = local.tempStruct.organizationcountry.xmltext,
includeForwardEmail = local.tempStruct.includeforwardemail.xmltext,
forwardEmailLinkText = local.tempStruct.forwardemaillinktext.xmltext,
includeSubscribeLink = local.tempStruct.includesubscribelink.xmltext,
subscribeLinkText = local.tempStruct.subscribelinktext.xmltext,
archiveStatus = local.tempStruct.archivestatus.xmltext,
archiveUrl = local.tempStruct.archiveurl.xmltext};
if(isdefined('local.tempStruct.LastEditDate.xmltext')) {
local.campaign.lastEditDate = local.tempStruct.lastEditDate.xmlText;
if(local.campaign.CampaignType EQ "CUSTOM") {
local.campaign.greetingName = local.tempStruct.greetingname.xmltext;
local.campaign.emailContentFormat = local.tempStruct.emailcontentformat.xmltext;
local.campaign.emailContent = local.tempStruct.emailcontent.xmltext;
local.campaign.emailTextContent = local.tempStruct.emailtextcontent.xmltext;
local.campaign.styleSheet = local.tempStruct.stylesheet.xmltext;
if(local.campaign.CampaignType EQ "Sent") {
local.campaign.urls = arrayNew(1);
local.tempUrl = structNew();
for(i=1; i LTE arrayLen(local.tempstruct.urls.url); i=i+1) {
local.tempUrl.value = local.tempStruct.urls.url.value.xmltext;
local.tempUrl.clicks = local.tempStruct.urls.url.clicks.xmltext;
local.tempUrl.id = local.tempStruct.urls.url.xmlattributes.id;
return local.campaign;
Thanks for your help in advance
<cfscript>
cfcObj = createObject("component", "cfcName");
returnedData = cfcObj.methodName(form);
</cfscript>
Similar Messages
-
Intermittent problem in Coldfusion 9, BlazeDS with Java Service class and CFCProxy
If that title doesn't scare you, you might be able to help.
I believe there is a bug in Coldfusion 9's version of CFCProxy.
Tech Stack:
Flex Application
BlazeDS (stock with CF9)
Java Service class (java-amf BlazeDS endpoint)
Coldfusion business tier, invoked by the Java Service class using CFCProxy
Tomcat 6 on Java 1.6
Linux or Windows servers, both exhibit same behavior
SQL Server database
Problem:
When Flex calls a Java service method through BlazeDS that invokes a Coldfusion CFC through CFCProxy, and the method called in the Coldfusion CFC includes a large query (10 fields, 1000+ records returned), we intermittently (1 out of ~5 times) receive the following exception:
java.lang.NullPointerException
at coldfusion.runtime.NeoPageContext.popBody(NeoPageContext.java:1925)
at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:57)
at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405)
at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368)
at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55)
at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321)
at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220)
at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:491)
at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:437)
at coldfusion.cfc.CFCProxyFilter.invoke(CFCProxyFilter.java:56)
at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:381)
at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:2 8)
at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38)
at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22)
at coldfusion.cfc.CFCProxy.doInvoke(CFCProxy.java:281)
at coldfusion.cfc.CFCProxy.invoke(CFCProxy.java:193)
at com.lampo.mapping.service.MapToolWebService.makeCfcProxyCall(MapToolWebService.java:1326)
at com.lampo.mapping.service.MapToolWebService.getTerritoryList(MapToolWebService.java:609)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at flex.messaging.services.remoting.adapters.JavaAdapter.invoke(JavaAdapter.java:418)
at flex.messaging.services.RemotingService.serviceMessage(RemotingService.java:183)
at flex.messaging.MessageBroker.routeMessageToService(MessageBroker.java:1400)
at flex.messaging.endpoints.AbstractEndpoint.serviceMessage(AbstractEndpoint.java:1005)
at flex.messaging.endpoints.amf.MessageBrokerFilter.invoke(MessageBrokerFilter.java:103)
at flex.messaging.endpoints.amf.LegacyFilter.invoke(LegacyFilter.java:158)
at flex.messaging.endpoints.amf.SessionFilter.invoke(SessionFilter.java:44)
at flex.messaging.endpoints.amf.BatchProcessFilter.invoke(BatchProcessFilter.java:67)
at flex.messaging.endpoints.amf.SerializationFilter.invoke(SerializationFilter.java:166)
at flex.messaging.endpoints.BaseHTTPEndpoint.service(BaseHTTPEndpoint.java:291)
at flex.messaging.MessageBrokerServlet.service(MessageBrokerServlet.java:353)
at coldfusion.flex.ColdfusionMessageBrokerServlet.service(ColdfusionMessageBrokerServlet.jav a:114)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j ava:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at coldfusion.filter.FlashRequestControlFilter.doFilter(FlashRequestControlFilter.java:71)
at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.j ava:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:769)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:698)
at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
at java.lang.Thread.run(Thread.java:662)
Attempts to diagnose:
These things remove the problem:
CF8 works perfectly with the identical code, never fails.
Calling the same Coldfusion CFC method with the large query (10 fields, 1000+ records returned) from another CFC 100+ times never fails.
Using a Coldfusion service class (a "my-cfamf" BlazeDS endpoint) never fails. However, we need to use a Java service class because we are using ~40 Java value objects (VOs) that correspond to ~40 auto-generated Actionscript VOs. BlazeDS won't correctly deserialize the Actionscript VOs into the Java VOs with a Coldfusion service class.
If I replace the large query with a Sleep(5000) instead, it never fails.
These things don't remove the problem:
Using the latest Microsoft JDBC driver doesn't help.
Even if the Coldfusion method returns an empty resultset (i.e., just calls the query and doesn't do any other work or return anything), the call still fails intermittently.
If the Coldfusion CFC with the method in question is instantiated and stored in SERVER scope as a singleton across multiple requests with CFCProxy, doesn't help.
Different large (1000+ record queries) all fail in the same way.
Caching the query doesn't help
Changes in the datasource configuration doesn't help
Using the older version of BlazeDS doesn't help
With all of these tests, I believe it comes down to a problem in the combination between CFCProxy and large queries. There may be more to it, but that is what we've narrowed it down to.
Any insight would be very welcome.Hi Frank
The page is ADF bound, I've added the page source and the adfc-config source below :
Page
<?xml version='1.0' encoding='UTF-8'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:af="http://xmlns.oracle.com/adf/faces/rich">
<jsp:directive.page contentType="text/html;charset=UTF-8"/>
<f:view>
<af:document id="d1">
<af:form id="f1">
<af:commandButton text="commandButton 1" id="cb1"
actionListener="#{test.testws}"/>
</af:form>
</af:document>
</f:view>
</jsp:root>adfc-config
<?xml version="1.0" encoding="windows-1252" ?>
<adfc-config xmlns="http://xmlns.oracle.com/adf/controller" version="1.2">
<view id="view1">
<page>/view1.jspx</page>
</view>
<managed-bean id="__4">
<managed-bean-name id="__3">test</managed-bean-name>
<managed-bean-class id="__2">ch.mit.test.test</managed-bean-class>
<managed-bean-scope id="__1">request</managed-bean-scope>
</managed-bean>
</adfc-config>It seems to be the same sort of problem as in Re: Error in ADF Web Service Connection
Regards
Paul -
Cold Fusion / developer edition
hey guys
sorry to ask you this but it has been hanging over my head
for a long period of time.
I have been unable to get my mind around the concept of "the
developer edition of Cold Fusion". from what i have learnt , i can
use it locally only. Does that mean that i wont be able to transfer
my cold fusion files onto a webhosting that supports ColdFusion??
Am i expected to present "my license to ColdFusion" to my web
provider every time I upload a website onto a webhosting?
Please someone explain to me what happens when i upload my
coldfusion-based website onto a webhosting. Will it stop working or
will my code get corrupted??
Cheers
MarosHi Maros
There are a few of things you will need to be aware of when
you move to the
server. First, be sure the mapping on the server is the same
as it is
locally, this especially concerns CFCs. In Dreamweaver if you
drag a CFC
function onto a page Dreamweaver will map the dot path to the
CFC including
the folder your site is in within the ColdFusion8\wwwroot
folder, naturally
this folder doesn't exist on your server since the entire
site is directly
in your root folder. Be sure to address this before going
live.
Also, make sure you move your database to the server and set
up the DSN,
using the exact same DSN name you used locally.
Finally, make sure your host supports the same version of CF
as you have
locally as well as the database if you are using MySQL or SQL
Server. If you
are using Access, be sure your host server is a Windows
sever.
Doing this should make for a smooth transition.
Lawrence Cramer *Adobe Community Ace*
Cartweaver.com
ASP, PHP, and ColdFusion Shopping Carts For Dreamweaver -
Hi Everyone,
I am having some issues accessing the methods in the datasource.cfc in the adminAPI.
I can successfully load the administrator CFC and am told that I have successsfuly logged in;
But when I try to subsequently load the datasource.cfc I get an error that the current user is unable to access the method.
/* Create an Admin API object and call the login method */
var local = {};
local.adminObj = createObject("component", "cfide.adminapi.administrator");
/* Enter your password for the CF Admin */
/* if you dump this - TRUE is returned */
local.adminObj.login(adminPassword="my_admin_user_password");
/* Create an object of datasource component */
local.dsnObj = createObject("component", "cfide.adminapi.datasource");
writeDump(local.dsnObj.getDataSources());
I tried creating separate admin users and passwords - yhinking that perhaps a revent hotfix had stopped the "admin" user from being allowed to use the adminAPI - but changing to a new adminuser yielded the same results.
I could login to the admin API with the new username and passsword - but could not access the datasource.cfc after that.
Here is the debug output from the error...
The current user is not authorized to invoke this method.
The error occurred in accessmanager.cfc: line 48
Called from datasource.cfc: line 52
Called from C:/inetpub/wwwroot/projectDir/trunk/Application.cfc: line 155
Called from C:/inetpub/wwwroot/projectDir/trunk/Application.cfc: line 52
Called from C:/inetpub/wwwroot/projectDir/trunk/Application.cfc: line 45
Called from C:/inetpub/wwwroot/projectDir/trunk/Application.cfc: line 1
-1 : Unable to display error's location in a CFML template.
Resources:
Check the ColdFusion documentation to verify that you are using the correct syntax.
Search the Knowledge Base to find a solution to your problem.
Browser
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31
Remote Address
127.0.0.1
Referrer
Date/Time
22-Apr-13 01:09 PM
Stack Trace
at cfaccessmanager2ecfc974154242$funcCHECKADMINROLES.runFunction(E:/cf10_final/cfusion/wwwro ot/CFIDE/adminapi/accessmanager.cfc:48) at cfdatasource2ecfc1679861966$funcGETDATASOURCES.runFunction(E:/cf10_final/cfusion/wwwroot/ CFIDE/adminapi/datasource.cfc:52) at cfApplication2ecfc498167235$funcPREREQUISITESTART.runFunction(C:/inetpub/wwwroot/projectD ir/trunk/Application.cfc:155) at cfApplication2ecfc498167235$funcINIT.runFunction(C:/inetpub/wwwroot/projectDir/trunk/Appl ication.cfc:52) at cfApplication2ecfc498167235._factor5(C:/inetpub/wwwroot/projectDir/trunk/Application.cfc: 45) at cfApplication2ecfc498167235.runPage(C:/inetpub/wwwroot/projectDir/trunk/Application.cfc:1 )
coldfusion.runtime.CustomException: The current user is not authorized to invoke this method. at coldfusion.tagext.lang.ThrowTag.doStartTag(ThrowTag.java:142) at coldfusion.runtime.CfJspPage._emptyTcfTag(CfJspPage.java:2799) at cfaccessmanager2ecfc974154242$funcCHECKADMINROLES.runFunction(E:\cf10_final\cfusion\wwwroot\CFIDE\adminapi\accessmanager.cfc:48) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472) at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:655) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:444) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:414) at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2432) at cfdatasource2ecfc1679861966$funcGETDATASOURCES.runFunction(E:\cf10_final\cfusion\wwwroot\CFIDE\adminapi\datasource.cfc:52) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472) at coldfusion.filter.SilentFilter.invoke(SilentFilter.java:47) at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:655) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:444) at coldfusion.runtime.TemplateProxy.invoke(TemplateProxy.java:414) at coldfusion.runtime.CfJspPage._invoke(CfJspPage.java:2432) at cfApplication2ecfc498167235$funcPREREQUISITESTART.runFunction(C:\inetpub\wwwroot\projectDir\trunk\Application.cfc:155) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472) at coldfusion.runtime.UDFMethod$ReturnTypeFilter.invoke(UDFMethod.java:405) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220) at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:2659) at cfApplication2ecfc498167235$funcINIT.runFunction(C:\inetpub\wwwroot\projectDir\trunk\Application.cfc:52) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:472) at coldfusion.runtime.UDFMethod$ArgumentCollectionFilter.invoke(UDFMethod.java:368) at coldfusion.filter.FunctionAccessFilter.invoke(FunctionAccessFilter.java:55) at coldfusion.runtime.UDFMethod.runFilterChain(UDFMethod.java:321) at coldfusion.runtime.UDFMethod.invoke(UDFMethod.java:220) at coldfusion.runtime.CfJspPage._invokeUDF(CfJspPage.java:2659) at cfApplication2ecfc498167235._factor5(C:\inetpub\wwwroot\projectDir\trunk\Application.cfc:45) at cfApplication2ecfc498167235.runPage(C:\inetpub\wwwroot\projectDir\trunk\Application.cfc:1) at coldfusion.runtime.CfJspPage.invoke(CfJspPage.java:244) at coldfusion.runtime.TemplateProxyFactory.resolveComponentHelper(TemplateProxyFactory.java:538) at coldfusion.runtime.TemplateProxyFactory.resolveName(TemplateProxyFactory.java:234) at coldfusion.runtime.TemplateProxyFactory.resolveName(TemplateProxyFactory.java:159) at coldfusion.runtime.TemplateProxyFactory.resolveFile(TemplateProxyFactory.java:120) at coldfusion.cfc.CFCProxy.<init>(CFCProxy.java:138) at coldfusion.cfc.CFCProxy.<init>(CFCProxy.java:84) at coldfusion.runtime.AppEventInvoker.<init>(AppEventInvoker.java:64) at coldfusion.filter.ApplicationFilter.invoke(ApplicationFilter.java:232) at coldfusion.filter.MonitoringFilter.invoke(MonitoringFilter.java:40) at coldfusion.filter.PathFilter.invoke(PathFilter.java:112) at coldfusion.filter.ExceptionFilter.invoke(ExceptionFilter.java:94) at coldfusion.filter.BrowserDebugFilter.invoke(BrowserDebugFilter.java:79) at coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:28) at coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:38) at coldfusion.filter.NoCacheFilter.invoke(NoCacheFilter.java:46) at coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:38) at coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22) at coldfusion.filter.CachingFilter.invoke(CachingFilter.java:62) at coldfusion.CfmServlet.service(CfmServlet.java:219) at coldfusion.bootstrap.BootstrapServlet.service(BootstrapServlet.java:89) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at coldfusion.monitor.event.MonitoringServletFilter.doFilter(MonitoringServletFilter.java:42) at coldfusion.bootstrap.BootstrapFilter.doFilter(BootstrapFilter.java:46) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:224) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98) at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:928) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:414) at org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:204) at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:539) at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:298) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908) at java.lang.Thread.run(Thread.java:662)
And here is the listed exceptions, beneath the stack trace;
13:09:56.056 - cfadminapiSecurityError Exception - in E:/cf10_final/cfusion/wwwroot/CFIDE/adminapi/accessmanager.cfc : line 48
The current user is not authorized to invoke this method.
13:09:56.056 - cfadminapiSecurityError Exception - in E:/cf10_final/cfusion/wwwroot/CFIDE/adminapi/accessmanager.cfc : line 48
The current user is not authorized to invoke this method.
13:09:56.056 - java.io.FileNotFoundException - in C:/ColdFusion10/cfusion/wwwroot/WEB-INF/exception/errorcontext.cfm : line 44
E:/cf10_final/cfusion/wwwroot/CFIDE/adminapi/accessmanager.cfc (The system cannot find the path specified)
This perspn seems to be having the same issue;
http://forums.adobe.com/message/5051892
and I agree I don't have "E" drive either!I've found a solution to my plight - I don't know if it'll work for you or help you try something that MAY fix it.
I use a common code set which includes the Application.cfc from a CF Mapping - So, in the application.cfc in the actual website I do this:-
<cfinclude template="/UberDirectory/Application.cfc">
Then, in the /UberDirectory/Application.cfc, I was initialising a CFC which checks if the datasource was created for the website. The datasource checking code attempts to log into the Admin API and check & create if necessary the datasource.
This has previously worked without fail for me - But in this instance it failed!! I was doing two things wrong - Firstly, the CFC should only be called in the Application.cfc in the onRequestStart section as the Application had to be initialised first - This is maybe because I've invoked the application.cfc in a "non-standard" manner.
Secondly, once I'd moved the CFC invocation into oNRequestStart I saw the following error:-
The string COOKIE.CFAUTHORIZATION_uber-directory is not a valid ColdFusion variable name.
I had this as the app name .... <cfset this.name = 'uber-directory'>
Changedthe dash to an underscore and I was away and could once again check the datasources
Hope it helps
Martin -
Coldfusion query works in cfm but not cfc
I have the following query that works just fine in cfm file but cannot seem to get to work in a coldfusion cfc. Any ideas.
Select distinct include.value from xxxxx.authorprofile,
table(authorprofile.uidinclude) include where profilename='#selectedProfile#'No Oracle version
No Cold Fusion version
No explanation of what either CFM or CFC means
My recommendation would be that you ask the people that sold you the tool. It is, after all, their product that is the issue. -
I'm using Flash remoting to send usage statistics from a
movie up to a
coldfusion component for processing and storage. System works
great -- at
least the individual calls are working -- but when I try to
execute all these
calls multiple times through the movie, it never gets past
two remote calls
before throwing an "Error Opening URL" error referencing my
flashservices
gateway:
http://<host>/flashservices/gateway&CFID=1052&CFTOKEN=c8c5587a8f62a442-E197BB47-B213-8FBA- 0924E5F0BF114A00;jsessionid=2a30fe0e960f21172524?CFID=1052
I've tried changing names of the instance each time I call a
new one -- but
that doesn't seem to matter. I'm starting to suspect this is
a ColdFusion error --
Anybody have any idea what I'm talking about?
I've included the connection code and the general examples of
the method calls
I'm using...
import mx.remoting.*;
import mx.rpc.*;
import mx.services.Log;
// connection script
var trackingService:Service = new
Service("
http://<host>/flashservices/gateway",
null, "<cfc>", null, null);
// open user tracking tracking session (called once when
movie is opened)
var sessionTrax:PendingCall =
trackingService.discStart({cf_macID:xxx,
cf_projectID:xxx, cf_clientID:xxx });
// log user activity (needs to be called numerous times on
any button click,
regardless of amount of clicks)
var clickTrax:PendingCall =
trackingService.contentClick({cf_macID:xxx,
cf_projectID:xxx, cf_clientID:xxx, cf_content:xxx,
cf_contentName:xxx,
cf_size:xxx });
// close user tracking session (called once)
var sessionTrax:PendingCall =
trackingService.discEnd({cf_macID:xxx,
cf_projectID:xxx, cf_clientID:xxx });
Any help would be appreciated...certainly that type of bottleneck is possible. the processes
I'm running are not terribly complex so I can't imagine they are
stacking up that much, but I'll certainly look into it.
I'm beginning to think more and more I'm missing an obvious
ColdFusion server setting. Others have suggested modifying the
number of simultaneous connections as a possibility. I modified
this and didn't appear to be any difference. -
How could I initialize a CFC with data before binding a grid to it?
Hi there,
I am refactoring some very old ColdFusion code (ColdFusion 5,
not done by me), and I'm considering replacing a huge and complex
HTML table with a CFGrid.
This HTML table is in an INCLUDE file and called from two
places, each time it gets a CFQuery with the same name and columns,
so the HTML table loop over it, but the (very complex) Queries are
built differently.
It would be a major hassle to "open up" the original queries
and build them into the CFC that should supply the data for my
CFGrid, so my idea is to wrap the original query into a QoQ, and
use the QoQ to display and maybe filter the CFGrid.
But my problem is, the CFC that I use to bind to the CFGrid
has to somehow get the original CFQuery to base the QOQ upon, and I
haven't found any way to pass the CFQuery to it! I tried to pass
the CFQuery itself in the bind expression as:
<cfgrid format="html" name="gridTravel" pagesize=25
sort=true autoWidth=false
height="565"
colheaderbold="false" colheaderfont="Franklin Gothic Medium"
colheaderfontsize="16"
selectcolor="##b8ccfa" selectOnLoad=false
striperows=true
font="Arial" fontsize="12"
"cfc:travel.getTravelList({cfgridpage},{cfgridpagesize},
{cfgridsortcolumn},{cfgridsortdirection},#TravelQuery# )">
And I also tried to first initialize the CFC with the CFQuery
before the binding:
<cfscript>
travelCfc = createObject("component", "travel");
travelCfc.travelListBase = TravelSel;
</cfscript>
But nothing works.
My question, does the binding of CFGrid to a CFC only works
in a "static" way (in Java term)?! In that case, the initialization
method would clearly never work properly, is it then possible to
pass the CFQuery in the Bind at all?
Given my requirement, what would be the best way of achieving
what I'm doing?
Any suggestion will be appreciated, and many thanks in
advance.
BillyIf you go to the VI Properties, under the Execution menu selection there is a pop-up for setting the Preferred Execution System. This is as close as you can specifying a thread in LV.
Mike...
Certified Professional Instructor
Certified LabVIEW Architect
LabVIEW Champion
"... after all, He's not a tame lion..."
Be thinking ahead and mark your dance card for NI Week 2015 now: TS 6139 - Object Oriented First Steps -
I am passing a query to a cfc. When I dump the query in the
cfc it looks fine. However, when I attempt to loop over the query I
get the following error: Complex object types cannot be converted
to simple values.
The expression has requested a variable or an intermediate
expression result as a simple value, however, the result cannot be
converted to a simple value. Simple values are strings, numbers,
boolean values, and date/time values. Queries, arrays, and COM
objects are examples of complex values.
Here is the code:
<cffunction name="updateTYC_Card_Master" access="public"
returntype="void">
<cfargument name="GoodRequests" required="yes"
type="query">
<cfargument name="dsn" required="yes" type="string">
<cfargument name="newjobNo" required="yes"
type="string">
<!--- <cfdump var="#arguments.goodRequests#">
<cfabort> --->
<cfloop query="#ARGUMENTS.GoodRequests#">
<cfquery name="UpdateTYC_Card_Master"
datasource="#ARGUMENTS.dsn#">
Update READONLY.TYC_Card_Master
Set Job_Key = #ARGUMENTS.jobNo#
Where custno = #custno#
And job_key = -1
</cfquery>
</cfloop>
</cffunction>
How would I go about being able to use the contents of the
query that I passed into the cfc. I've never passed in a query
before. Thanks for the help.
markIt has nothing to do with your query. This
<cfargument name="newjobNo" required="yes"
type="string">
does not match this
Set Job_Key = #ARGUMENTS.jobNo#
Also, your argument specifies a string but your sql does not
have quotes.
Finally, since you are setting all the records to the same
new job number, instead of running a query inside a loop, it is
probably more efficient to run one query which includes something
like
where custno in
(#ValueList(arguments.yourquery.custno)#) -
Problem passing values to cfc component
I have a cfc component with methods to insert, retrieve and
update a record in a table. There are several forms associated with
the component, each which handles a subset of the fields in the
table. The update method is called with arguments that identify
which subset of fields is to be modified and the values for those
fields.
The forms typically have a couple of radio button groups and
a couple of lists, most of which allow multiple selections. I want
to create a variable for each radio button group and each list. The
variables give the button selected (for the buttons) and a string
of the values selected (for the lists). These are to be passed as
arguments to the update method.
I can construct the variables using standard Java script
statements (if, for,etc.). But if I do, CFINVOKEARGUMENT doesn't
recognize them. The same thing happens if I try to use CFQUERY
directly. I get a message like "variable is undefined". If I try to
set the values using CFSET statements, it doesn't recognize the
form fields. It says the field is not an element of the form.
So I can look at the form fields to create a variable but
then the variable can't be used by the update method. Or I can
create an argument that can be passed to update, but it doesn't
know anything about the form values. I've tried all variations I
can think of with and without #'s and single & double quotation
marks.
Suggestions would be appreciated.See in line comments.
waz69 wrote:
> Sorry for the delayed response...I was pulled away right
after I posted my
> problem. Here are extracts from the code. I've only
included the sections
> that deal with updating the table.
>
> In the CFC file:
>
> <cffunction access="public" name="SaveFormValues"
output="false"
> returntype="boolean">
> <cfargument name="Screen" type="string"
required="yes">
> <cfargument name="Arg1" type="string"
required="yes">
> <cfargument name="Arg2" type="string"
required="yes">
> <cfargument name="Arg3" type="string"
required="yes">
> <cfargument name="Arg4" type="string"
required="no">
> <cfargument name="Arg5" type="string"
required="no">
> <cfargument name="Arg6" type="string"
required="no">
> <cfset var isSuccessful=true>
> <cftry>
> <cfquery name="SaveValues" datasource="FPDS
Sample">
> UPDATE Report_specs SET
> <cfif arguments.Screen EQ "Scope">
> ReportOn = '#arguments.Arg1#',
> SubtotalGroup = '#arguments.Arg2#',
> Projects = '#arguments.Arg3#',
> Sites = '#arguments.Arg4#'
> </cfif>
> <cfif arguments.Screen EQ "Criteria"> (,,code goes
here for next set of
> fields...) </cfif>
> <cfif arguments.Screen EQ "Table"> (,,code goes
here for next set of
> fields...) </cfif>
> <cfif arguments.Screen EQ "Chart"> (,,code goes
here for next set of
> fields...) </cfif>
> <cfif arguments.Screen EQ "Detail"> (,,code goes
here for next set of
> fields...) </cfif>
> WHERE Report_specs.rid = #Session.FPRU_rid#
> </cfquery>
> <cfcatch type="Database"><cfset
isSuccessful=false></cfcatch>
> </cftry>
> <cfreturn isSuccessful />
> </cffunction>
>
> In the CFM file:
>
> <head>
> <script language="JavaScript">
>
> function SaveValues(frm) {
> var RptOn="", SubGrp="", SL="", PL="" ;
> for(var i=0; i<3; i++)
> {if(frm.ReportOn
.checked) RptOn = frm.ReportOn.value ;
> if(frm.SubtotalGroup
.checked) SubGrp = frm.SubtotalGroup.value ; } ;
> for(i = 0; i < frm.Projects.options.length; i++)
> {if(frm.Projects.options
.selected ) PL = PL + ', ' +
> frm.Projects.options.value ; } ;
> for(i = 0; i < frm.Sites.options.length; i++)
> {if(frm.Sites.options
.selected ) SL = SL + ', ' +
> frm.Sites.options.value ; } ;
>
> ...(This is the section where I'm having problems. I
have the values I want
> to pass the variables just defined.
> But I can't get them into the CFINVOKEARGUMENT
statements below. I've
> tried variations of #'s, CFSETS, etc.)...
>
> <cfobject component="RecordAccess"
name="SaveValues">
> <cfinvoke component="#SaveValues#"
method="SaveFormValues" >
> <cfinvokeargument name="Screen" value="Scope">
> <cfinvokeargument name="Arg1" value="RptOn">
> <cfinvokeargument name="Arg2" value="SubGrpr">
> <cfinvokeargument name="Arg3" value="PL">
> <cfinvokeargument name="Arg4" value="SL">
> </cfinvoke>
> }
>
> </script>
> </head>
This is never going to work. JavaScript is executed on the
client's
computer in the browser. It is no idea of what is CFC is or
how to
access one. The cfc lives on the server, it can only exist
and run
while the http request is being built by the CF engine.
>
> <body onFocus="GetValues(this.form)" >
>
> <form action="" method="post" name="ScopeDetail"
id="ScopeDetail">
> <table width="85%" border="0" cellspacing="2"
cellpadding="2">
> <tr>
>
> ...(various buttons)...
>
> <td width="8%"><input name="SaveForm"
type="button" id="SaveForm"
> onclick="SaveValues(this.form)"
value="Save"></td>
>
> ...(other buttons)...
>
> </table>
>
> <table width="96%" border="0" cellspacing="2"
cellpadding="2">
> <tr>
> ...(column headers)...
> </tr>
>
> <tr>
> <td rowspan="3" align="right"
valign="top"> </td>
> <td height="110" colspan="2" align="right"
valign="top"><div
> align="left">
> <p>
> <label> <input name="ReportOn" type="radio"
value="Users" checked>
> Unique users</label>
> <br>
> <label> <input type="radio" name="ReportOn"
value="AllVisits"> All
> visits</label>
> <br>
> <label> <input name="ReportOn" type="radio"
value="LastVisit"> Last visit
> only</label>
> <br>
> </p>
> </div></td>
> <td rowspan="3" valign="top"> </td>
> <td colspan="3" rowspan="3"
valign="top"><p><select name="Projects"
> size="10" multiple id="Projects"
onChange="getSites(this.form)"><cfoutput
> query="ProjectList">
> <option
>
value="#ProjectList.projectid#">#ProjectList.projectname#</option>
> </cfoutput></select></p></td>
> <td width="3%" rowspan="3"
valign="top"> </td>
> <td width="34%" rowspan="3"
valign="top"><select name="Sites" size="15"
> multiple id="Sites">
> <option> ---------------------------------------
</option>
> </select></td>
> <tr>
> <td height="23" colspan="2" align="right"
valign="top"><div align="left">
> <h3>Show Summaries of </h3>
> </div></td>
> <tr>
> <td height="100" colspan="2" align="right"
valign="top"><div
> align="left">
> <label> <input name="SubtotalGroup"
type="radio" value="Both" checked>
> Project & Sites</label>
> <br>
> <label> <input type="radio"
name="SubtotalGroup" value="Projects">
> Projects only</label>
> <br>
> <label> <input type="radio"
name="SubtotalGroup"
> value="Sites"> Sites only</label>
> </div></td>
>
> </table>
> </form>
> </body>
waz69 wrote:
> I tried creating hidden fields to which I assign my
desired values. The
> CFINVOKEARGUMENTs then become:
>
> <cfinvokeargument name="Arg1" value=frm.Hide1>
> <cfinvokeargument name="Arg2" value=frm.Hide2>
> etc.
>
> What ends up in the table is the name of the field
(frm.Hide1) not
the value
> of the field. I've also tried with with quotes (single
and double)
which give
> the same result and with #'s which gives me an error
about undefined
element.
>
This is what your are going to need to do. But the javascript
form
object no longer exists once the request has been sent to the
server.
After that you are dealing with the "form" structure. So your
arguments
are going to look something like.
<cfinvokeargument name="Arg1" value="#form.Hide1#">
OR interchangeably
<cfinvokeargument name="Arg2" value="#form['Hide2']#">
When blending JavaScript and ColdFusion, one must be
constantly aware of
the order of actions. JavaScript can only run and exist on
the client,
it has no direct knowledge of any ColdFusion variables or
logic.
Vice-a-versa, ColdFusion only runs and exists on the server.
It has no
direct knowledge of the Client or its state.
To blend the two you have to carefully pass any required,
shared
information from one location to the other. -
Error in CFC - message to Flex
I am sending messages to a flex program via a CFC reading
messages off of a socket (gateway is called asocket - the flex
gateway is ows35_example4 via LCDM).
The messages are getting to the flex program but errors are
showing up in cfserver.log, eventgateway.log and exception.log that
says:
Error invoking CFC for gateway asocket: Unable to locate the
body entry in the outgoing message structure..
once for each message that is sent. The enclosed code shows
the CFC running the asocket gateway - which definitely has a "body"
entry.
How do I stop this error ? Is there something wrong with the
CFC ?
Using Coldfusion 8.0.0.1786276
-thank youUgh .... I figured this out.
I was using HTTP comments "<!-- -->" (that I did not
include in the source above) instead of the CF comments "<!---
--->".
What you don't see is that there is another
SendGatewayMessage that was (I thought) commented out using the
messageObject Struct for the message. It doesn't have a body part
so it makes sense that the error happened.
I changed the HTTP comments to CF comments and the errors
went away.
Note to self ... be careful of your comments. -
Configuration variables for a REST cfc
I am creating my first RESTful cfc which will allow a legacy system to interact with a more current system. There are some "configuration" variables that need to be available to a couple of functions in the cfc. These variables are mainly for disk paths and an API key. What is the best practice for setting these variables in my RESTful cfc? Should I just declare them at the beginning of the component outside the functions in the variables scope? Do I need an init function? If I use an init function how does it get called when the other functions are only called via REST?
I think you can declare them in the beginning of the component prior to any functions. You can include an init function, and just call it the same as you would call any other function.
<cffunction name="init">
<cfreturn this />
</cffunction>
<cfset tmp = path.to.component.init()>
I haven't worked with that, myself, but I've seen lots of code do that.
HTH,
^_^ -
Incorrect type inferrence when returning JSON from a cfc?
So, I have a CF function inside a cfc file that queries my
SQL database and then returns the CF query object. One of the
database fields is an nvarchar field contains a bunch of check
numbers, some of which have leading zeros.
The example I have used is a field containing the string
"02":
If I use cfdump, it shows up correctly as 02.
If I call the cfc directly from my browser and ask it for
wddx, I get the correct result <field
name='CHECKNUMBER'><string>02</string></field>
If I call the cfc directly from my browser and ask for json,
I get 2.0 back. WRONG.
Is CF8 just naively guessing the datatype when is does JSON
serialization? CF query objects have types in them and it does it
correctly in the other two cases so it obviously has the correct
type information available. I ended up retrieving WDDX instead of
JSON and deserializing it into a Javascript object using the
wddxDes.js file from www.openwddx.org. I also find it strange and
annoying that the matching wddx.js file from the same web site is
included with the standard installation of Coldfusion but the
deserializer part is not. Has anyone else run into these problems
or found a solution that works without extending Coldfusion with
outside help? This just seems like a straight-up bug in CF8 to
me.> If I call the cfc directly from my browser and ask for
json, I get 2.0 back.
> WRONG.
> [...]
>This just seems like a straight-up bug
> in CF8 to me.
Agreed.
This can be easily demonstrated with this code:
<cfscript>
q = queryNew("col1", "CF_SQL_VARCHAR");
queryAddRow(q);
querySetCell(q, "col1", javacast("String", "02"));
j = serializeJson(q);
writeOutput(j);
</cfscript>
This outputs:
{"COLUMNS":["COL1"],"DATA":[[2.0]]}
If one changes the string to " 20", it outputs:
{"COLUMNS":["COL1"],"DATA":[[" 02"]]}
So it's definitely not paying attention to the data-type of
the string. CF
has a habit of mucking things up like this.
I think you should raise a bug with Adobe.
Adam -
CFC Vs. Structure of functions.
Hi,
I've written a small framework for Coldfusion that has
similar functionality to that of CakePHP, but ran into a strange
performance issue. Here's the basic operation of the framework as
far as the problem is concerned...
URL's rewritten and handled by
"router.cfc" that processes the URL.
Router then calls the related
controller/action.
A View.cfc is instantiated and used
to call "helpers" (CFC containing functions for form validation or
other tasks).
The View.cfc then cleans the
variables scope and passes any variables set by the
controller/action, to the requested view (cfm).
View.cfc captures the view output and
then uses this in the relevant layout.
Now here's the problem, everything works well up until the
view itself (the [action].cfm template
included by the view.cfc with a clean variables scope)
starts using a helper cfc. The helper CFC is loaded into this.html
(for example) and is used like this.html.error('fieldname') to
return a message or variable. Creation of the CFC is fine but
multiple calls to it's functions is slow.
I compared this against calling the same functions but held
in a structure in the views variables scope and the performance was
perfect.
Does anyone know of performance pitfalls with CFC's that
might be causing this, or ways around it. I'd be happy enough to
use normal functions if I could keep the variables scope clean by
storing them in a structure, but Coldfusion doesn't seem happy
about '<cffunction name="help.html.error">'.
Any ideas?
Thanksddks2 wrote:
> Thanks for the reply.
>
> Regarding the CFReports vs. Flashpaper. Still some
confusing here on my side.
> From my understanding I could use CFReport to create a
report and then output
> this as a FlashPaper (or PDF). I thought one could also
use CFQuery to create
> a report (more or less manually in HTML) and import this
into FlashPaper?! Is
> this not possible? I tried looking at the Flashpaper
documentation but couldn't
> find this specifically but again assume CF8 has the
Flash integration to make
> this possible?!
>
> Thanks,
> Daniel
>
Well the you could use the <cfquery...> tag to get data
from a database
and then use several tags such as <cfoutput
query="recordset"> to output
the file as HTML or other text formats.
What you maybe thinking of is the <cfdocument...> tag
which can be
wrapped around basic HTML or other text. This content would
then be
delivered to the client as PDF or FlashPaper. This can be a
nice way to
make 'printer' friendly versions of a web page, but is by no
means
limited to just that purpose.
The difference between <cfdocument...> and
<cfreport...> is that report
supports pagination features then document. The ability to
have report,
section and page headers and footers, sub-reports, and other
nice to
have report formating functionality. But it requires an
seperate tool
to build the report templates over the simple text editor
required for a
HTML document converted with the <cfdocument...> tag.
Then, of course, there are the stand alone Flashpaper tools
available to
people who just want to create Flashpaper documents on their
desktops
and deliver these over the internet. The same as PDF people
who use
Adobe Acrobat to create PDF documents on their desktop that
can be
delivered over the internet if desired. But neither of these
are
particularly ColdFusion concepts. -
Application.cfc and UDFs
I have some UDFs that i want to make available to every page
in my site woudl i just drop the code for those UDFs inside the
onRequestStart method of application.cfc?In article <f8vi12$9q8$[email protected]>
"bdee2"<[email protected]> wrote:
> I have some UDFs that i want to make available to every
page in my
> site woudl i just drop the code for those UDFs inside
the
> onRequestStart method of application.cfc?
Probably the simplest approach for you is to put those UDFs
in some
cfm file and then include that into onRequest():
<cffunction name="onRequest">
<cfargument name="targetPage"/>
<cfinclude template="myudfs.cfm" />
<cfinclude template="#arguments.targetPage#" />
</cffunction>
Note: you must include the target page - onRequest() assumes
you are
taking full responsibility for the request.
Only when you use onRequest() will the VARIABLES scope of
Application.cfc be accessible inside your top-level page
(arguments.targetPage).
Note: if you use Flash Remoting, Web Services or direct AJAX
CFC
calls, you cannot use onRequest() directly (because it
intercepts the
result). Read the chapter on Application.cfc in the
ColdFusion
Developer's Guide (it's really very good reading!). You might
also
want to read this blog entry:
http://corfield.org/entry/Applicationcfc__onRequest_and_CFCs
And this LiveDocs page:
http://livedocs.adobe.com/coldfusion/7/htmldocs/00000698.htm
(which includes the workaround for and onRequest() and CFC
access)
Sean Corfield
An Architect's View --
http://corfield.org/
I'm using an evaluation license of nemo since 59 days.
You should really try it!
http://www.malcom-mac.com/nemo -
CFB2 unable to access Services Browser (unable to get metadata for CFC)
Hello --
I'm a novice with CF9.
== Scenario
- Mac OS X v10.6.8
- ColdFusion v9 [updated to latest 9.0.1]
- JRun with integrated WebServer [listen on 8500 port]
- Developer mode
- ColdFusion Builder v2.0.0 Build 277745 [standalone installation]
- Created a simple local CF9 server [localhost, local, 8500, ServerHome /Applications/ColdFusion9, ServerRoot /Applications/ColdFusion9/wwwroot]
- Enabled Debugger Mode in ColdFusion Administrator, test debugger ok, no problem
- RDS Viewer ok
- I'm able to open localhost:8500/CFIDE/administration without any problem
- I'm able to browsing CFIDE WebServer
== Problem
Within CFB2, when I try to open my local CF9 server to inspect RDS Server, I'm unable to view/introspect CFC Components.
I receive an error message "Unable to get meta data for cfc".
- In effect, trying to open cfcexplorer.cfc in componenutils path, I receive a 404 error
== Server Details
Server Details
Server Product
ColdFusion
Version
9,0,1,274733
Edition
Developer
Serial Number
Developer
Operating System
Mac OS X
OS Version
10.6.8
Adobe Driver Version
4.0 (Build 0005)
JVM Details
Java Version
1.6.0_24
Java Vendor
Apple Inc.
Java Vendor URL
http://www.apple.com/
Java Home
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Java File Encoding
MacRoman
Java Default Locale
it_IT
File Separator
Path Separator
Line Separator
Chr(10)
User Name
gobbo67
User Home
/Users/gobbo67
User Dir
/Applications/Adobe ColdFusion Builder 2/CFBuilder.app/Contents/MacOS
Java VM Specification Version
1.0
Java VM Specification Vendor
Sun Microsystems Inc.
Java VM Specification Name
Java Virtual Machine Specification
Java VM Version
19.1-b02-334
Java VM Vendor
Apple Inc.
Java VM Name
Java HotSpot(TM) 64-Bit Server VM
Java Specification Version
1.6
Java Specification Vendor
Sun Microsystems Inc.
Java Specification Name
Java Platform API Specification
Java Class Version
50.0
== Extract from application.log
25-giu-2011
22.21
Error
web-29
File not found: /CFIDE/componentutils/cfcexplorer.cfc The specific sequence of files included or processed is: /Applications/ColdFusion9/wwwroot/CFIDE/componentutils/cfcexplorer.cfc''
25-giu-2011
22.21
Error
web-29
Exception thrown by error-handling template:
25-giu-2011
22.21
Error
web-29
File not found: /Applications/ColdFusion9/wwwroot/WEB-INF/exception/coldfusion/runtime/TemplateNotFoundEx ception.cfm The specific sequence of files included or processed is: /Applications/ColdFusion9/wwwroot/WEB-INF/exception/coldfusion/runtime/TemplateNotFoundEx ception.cfm''
== Extract from exception.log
"Error","web-29","06/25/11","22:21:10",,"File not found: /Applications/ColdFusion9/wwwroot/WEB-INF/exception/coldfusion/runtime/TemplateNotFoundEx ception.cfm The specific sequence of files included or processed is: /Applications/ColdFusion9/wwwroot/WEB-INF/exception/coldfusion/runtime/TemplateNotFoundEx ception.cfm'' "
coldfusion.runtime.TemplateNotFoundException: File not found: /Applications/ColdFusion9/wwwroot/WEB-INF/exception/coldfusion/runtime/TemplateNotFoundEx ception.cfm
My problem is probably similar to http://forums.adobe.com/thread/503319
Any suggest is appreciate.
Alex/Hello --
after spending many hours I'm believe that probably my concern arent related to CFBuilder [or not only] but also with CF9 installation on Mac OS X.
Attached you can find screen-shot about second page of Server Setup. Please note that I have configured a *local* server (not remote) with a developer environment.
Additional info; after checking in detail, I have noted that integrated WebServer (that I'm believe is JRun based) listen on 8500 is unable to open any .cfm page.
Under a directory created in WebRoot [Applications\ColdFusion9\wwwroot\Education] I have created a dumb index.cfm page, but that isnt executed.
But whem I go in CFIDE\administration all is working nicely.
Where can I check about integrated WebServer configuration, handler, etc?
== Error from Local CF9 server.log
27/06 09:02:01 error Requested resource 'File not found: /Education/index.cfm' (File%20not%20found%3a%20%2fEducation%2findex.cfm) not found
java.lang.IllegalStateException
at jrun.servlet.JRunResponse.getWriter(JRunResponse.java:205)
at jrun.servlet.JRunResponse.sendError(JRunResponse.java:597)
at jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:316)
at jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:543)
at jrun.servlet.http.WebService.invokeRunnable(WebService.java:172)
at jrunx.scheduler.ThreadPool$DownstreamMetrics.invokeRunnable(ThreadPool.java:320)
at jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:428)
at jrunx.scheduler.ThreadPool$UpstreamMetrics.invokeRunnable(ThreadPool.java:266)
at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)
== About starting server.log
"Information","main","06/27/11","08:49:04",,"Starting logging..."
"Information","main","06/27/11","08:49:04",,"Starting license..."
"Information","main","06/27/11","08:49:04",,"Invalid ColdFusion 9 license."
"Information","main","06/27/11","08:49:04",,"Invalid ColdFusion 9 license."
"Information","main","06/27/11","08:49:04",,"Developer Edition enabled"
"Information","main","06/27/11","08:49:04",,"Starting crypto..."
"Information","main","06/27/11","08:49:04",,"Installed JSafe JCE provider: Version 3.6 RSA Security Inc. Crypto-J JCE Security Provider (implements RSA, DSA, Diffie-Hellman, AES, DES, Triple DES, DESX, RC2, RC4, RC5, PBE, MD2, MD5, RIPEMD160, SHA1, SHA224, SHA256, SHA384, SHA512, HMAC-MD5, HMAC-RIPEMD160, HMAC-SHA1, HMAC-SHA224, HMAC-SHA256, HMAC-SHA384, HMAC-SHA512)"
"Information","main","06/27/11","08:49:04",,"Starting security..."
"Information","main","06/27/11","08:49:04",,"Starting scheduler..."
"Information","main","06/27/11","08:49:04",,"Starting WatchService..."
"Information","main","06/27/11","08:49:04",,"Starting debugging..."
"Information","main","06/27/11","08:49:04",,"Starting sql..."
"Information","main","06/27/11","08:49:05",,"Pool Manager Started"
"Information","main","06/27/11","08:49:05",,"Starting mail..."
"Information","main","06/27/11","08:49:05",,"Starting runtime..."
"Information","main","06/27/11","08:49:05",,"CORBA Configuration not enabled"
"Information","main","06/27/11","08:49:05",,"Starting cron..."
"Information","main","06/27/11","08:49:05",,"Starting registry..."
"Information","main","06/27/11","08:49:05",,"Starting client..."
"Information","main","06/27/11","08:49:06",,"Starting xmlrpc..."
"Information","main","06/27/11","08:49:06",,"Starting graphing..."
"Information","main","06/27/11","08:49:07",,"Starting verity..."
"Information","main","06/27/11","08:49:07",,"Starting solr..."
"Information","main","06/27/11","08:49:07",,"Starting archive..."
"Information","main","06/27/11","08:49:07",,"Starting document..."
"Information","main","06/27/11","08:49:07",,"Starting eventgateway..."
"Information","main","06/27/11","08:49:07",,"Starting FlexAssembler..."
"Information","main","06/27/11","08:49:07",,"Starting .NET..."
"Information","main","06/27/11","08:49:07",,"Starting Monitoring..."
"Information","main","06/27/11","08:49:07",,"ColdFusion started"
27/06 08:49:07 user ColdFusionStartUpServlet: ColdFusion: application services are now available
27/06 08:49:07 user CFMxmlServlet: init
27/06 08:49:07 user CFMxmlServlet: Macromedia Flex Build: 87315.134646
27/06 08:49:07 INFO Macromedia Flex Build: 87315.134646
27/06 08:49:08 user CFSwfServlet: init
27/06 08:49:08 user CFCServlet: init
27/06 08:49:09 user FlashGateway: init
27/06 08:49:09 user MessageBrokerServlet: init
27/06 08:49:09 user CFFormGateway: init
27/06 08:49:09 user CFInternalServlet: init
27/06 08:49:09 user WSRPProducer: init
27/06 08:49:10 user ServerCFCServlet: init
Server coldfusion ready (startup time: 10 seconds)
06/27 08:49:20 [Thread-15] WARN PDFM_W19004: The system font "/Library/Fonts/Baskerville.ttc" could not be loaded.
com.adobe.fontengine.font.InvalidFontException: Data could not be copied
at com.adobe.fontengine.font.opentype.FontFactory$TableToLoad.load(Unknown Source)
at com.adobe.fontengine.font.opentype.FontFactory$FontToLoad.load(Unknown Source)
at com.adobe.fontengine.font.opentype.FontFactory$TTCToLoad.load(Unknown Source)
at com.adobe.fontengine.font.opentype.FontFactory.load(Unknown Source)
at com.adobe.fontengine.font.opentype.FontFactory.load(Unknown Source)
at com.adobe.fontengine.fontmanagement.FontLoader.loadFont(Unknown Source)
at com.adobe.fontengine.fontmanagement.FontLoader.load(Unknown Source)
at com.adobe.internal.pdfm.util.FontSetBuilder.loadFontsPath(FontSetBuilder.java:385)
at com.adobe.internal.pdfm.util.FontSetBuilder.loadFontsPath(FontSetBuilder.java:472)
at com.adobe.internal.pdfm.util.FontSetBuilder.initFonts(FontSetBuilder.java:175)
at com.adobe.internal.ddxm.Executive.initFonts(Executive.java:573)
at coldfusion.document.DocumentServiceImpl.callAssemblerInitFonts(DocumentServiceImpl.java:1 249)
at coldfusion.document.DocumentServiceImpl.initializeDocumentService(DocumentServiceImpl.jav a:230)
at coldfusion.document.DocumentServiceImpl.access$000(DocumentServiceImpl.java:52)
at coldfusion.document.DocumentServiceImpl$1.run(DocumentServiceImpl.java:180)
27/06 08:53:14 user RDSServlet: init
27/06 08:53:14 user RDSServlet: init
27/06 08:53:14 user RDSServlet: init
27/06 08:53:14 user RDSServlet: init
27/06 08:53:14 user RDSServlet: init
27/06 08:53:14 user RDSServlet: init
27/06 08:53:14 user RDSServlet: init
27/06 08:53:14 user RDSServlet: init
27/06 08:53:14 user RDSServlet: init
27/06 08:53:14 user RDSServlet: init
27/06 08:53:14 user RDSServlet: init
27/06 09:00:52 user FileServlet: init
Maybe you are looking for
-
XDMCP and GDM Start of a later session problem.
I'm currently running Archlinux on one computer (PC1) and Windows Vista on another (PC2). I have X11 and GDM installed and they work perfectly. On PC2 I use Xming to connect to PC1 via the XDMCP protocol and everything works perfectly the first time
-
SQL loader Field in data file exceeds maximum length for CLOB column
Hi all I'm loading data from text file separated by TAB and i got the error below for some lines. Event the column is CLOB data type is there a limitation of the size of a CLOB data type. The error is: Record 74: Rejected - Error on table _TEMP, colu
-
How to run a process PSPPYRUN or PSPPYBLD in PeopleSoft Test Framework ?
How to run a process PSPPYRUN or PSPPYBLD in PeopleSoft Test Framework ? Please advise on the below scripts , 1 True Browser Start_Login 2 True Browser Set_URL PORTAL 3
-
Jdeveloper and forms developer
hi folks what is the difference between forms developer and jdeveloper if the both of them can deal with java and can deal with pl\sql ? regards
-
One weblogic instance listening to multiple ports
I'd like to run weblogic with its http subsysten listen to port 80. Any other service should listen to port 7001. Is it really impossible to let weblogic do this? Are there any plans to implement such a feature? Which alternatives do exist? TIA klaus