If you are ever going to use long text fields in mysql or a SQL server you will get a strange result when outputting this data. By default ColdFusion retrieves the number of characters specified in the Long Text Buffer setting (under the advanced settings of a datasource). When coldfusion stores the information of the database into an structure or variable it limits the number of characters (if you are using utf-8 by default about 4.000 characters will be stored). To prevend this behavior and to be able to display the complete content of the database cell you need to check the Enable long text retrieval (CLOB) in the advance settings of a data source.
css
Tuesday, May 25, 2010
Tuesday, May 18, 2010
32 bit components on 64 bit coldfusion
If you try to initiate an 32 bit component on the 64 bit version of coldfusion (e.g. <cfobject action="Create" class="MSXML2.ServerXMLHTTP" name="objSrvHTTP">)
you will get the following error:
The only way to solve this is to install a 32bit version of coldfusion on a different server or workstation (or run it parallel on the same server). I know of two possible solutions for this problem.
Option 1
Install a 32bit version of coldfusion on a different server or workstation (or run it parallel on the same server). You can run the component on a 32 bit server or workstation. In my case i created a web services that executed the 32bit component and returns the result to the caller.
Option 2
Call the component in asp and return the data in a webservice or as html. The following example executes the MSXML2.ServerXMLHTTP component in aspx and writes the response to the page. This pages can be called from a coldfusion cfhttp tag. Please note i know very little of asp so this example could probebly be improved.
you will get the following error:
An exception occurred when instantiating a COM object.Unfortunately there is no easy solution for this problem.
The cause of this exception was that: java.lang.RuntimeException: Can not use native code: Initialisation failed.
Option 1
Install a 32bit version of coldfusion on a different server or workstation (or run it parallel on the same server). You can run the component on a 32 bit server or workstation. In my case i created a web services that executed the 32bit component and returns the result to the caller.
<cfcomponent>
<cffunction name="example" access="remote" returntype="struct" output="no">
<cfset pass_url="http://www.adobe.com/"">
<cfobject action="Create" name="objSrvHTTP" class="MSXML2.ServerXMLHTTP">
<cfset temp = objSrvHTTP.open("GET","#pass_url#")>
<cfset temp = objSrvHTTP.send("")>
<cfset websitedata=structnew()>
<cfset websitedata.responseBody = #toString(objSrvHTTP.responseBody)#>
<cfset websitedata.status = #left(objSrvHTTP.Status,3)#>
<cfreturn websitedata>
</cffunction>
</cfcomponent>Option 2
Call the component in asp and return the data in a webservice or as html. The following example executes the MSXML2.ServerXMLHTTP component in aspx and writes the response to the page. This pages can be called from a coldfusion cfhttp tag. Please note i know very little of asp so this example could probebly be improved.
<%@ Page Language="VB" Debug="false" %>
<%
dim page_url
dim page_status
dim page_responseBody
dim page_responseText
dim xmlhttp
dim mycharset
page_url = Request.QueryString("weburl")
xmlhttp = CreateObject("MSXML2.ServerXMLHTTP")
xmlhttp.open ("GET", page_url, false)
xmlhttp.setRequestHeader("User-Agent","Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9.2.10) Gecko/20100914 Firefox/3.6.10 ( .NET CLR 3.5.30729)")
xmlhttp.send ("")
' page_status = Cint(xmlhttp.status)
page_responseBody = xmlhttp.responseBody
page_responseText = xmlhttp.responseText
mycharset = ""
mycharset= xmlhttp.getResponseHeader("Content-Type")
If(inStr(mycharset,"charset")=0) Then
mycharset = "ISO-8859-1"
Dim pattern As String = "(?i)>META(.*)charset=\s*([^\s|^""|^']*)"
If( Regex.IsMatch( page_responseText, pattern )) Then
Response.CharSet = Regex.Match( page_responseText, pattern ).Groups(2).ToString()
End If
End If
Response.CharSet = mycharset
response.StatusCode = page_status
Response.BinaryWrite(page_responseBody)
' Response.Write(page_responseText)
xmlhttp = nothing
%>
Subscribe to:
Posts (Atom)
