Client variables - quick confirmation
Can someone confirm something with client variables...
1. <cfparam name=client.colour value="blue"> in
application.cfm
2. On a web page <cfset client.colour="red"> and the
same page confirms this when I cfoutput the value
3 If I check that value on yet another page, it should be
red, shouldn't it ? But, instead its blue
I'm having a major problem with cfclientstore=myDSN where it
points to an Access2007 database via an ODBC socket connection.
sorry about that, my application.cfm does actually use the
correct format
<cfparam name="client.colour" default="blue">
I'm still getting the problem - does anyone else use MS
Access 2007 ? When I look at the database it's storing "blue" but
when I'm changing the value in another page with <cfset
client.colour="red"> its not storing this change in the access
database
I've tied upgrading CF from 8.0 to 8.01 with still no joy
I read Adobe's advice on a lack of Access 2007 driver, and
used the ODBC socket instead but still no joy
Is there anything in my cfapplication that could be messing
around ?
<cfapplication
name="Catalogue"
clientmanagement="Yes"
sessionmanagement="Yes"
setclientcookies="Yes"
sessiontimeout="#CreateTimeSpan(0, 0, 360, 0)#"
applicationtimeout="#CreateTimeSpan(0, 0, 360, 0)#"
clientstorage="cfclientstore"
loginstorage="session">
Similar Messages
-
Client variable storage setting
Here is a little question hope someone can shine some light
on it.
Right now I am using the database as the client variable
storage in CF (with options of Purge data for 1 day and Disable
global client variable updates ). But it gives the database server
a really heavy load (50-90% CPU usage average) and I believe this
is the bottleneck of the time it takes CF serving the pages. I was
wondering that is this good idea to put the client variable storage
back to the Registry or cookie (for a quick fix until we upgrade
the servers in 4 weeks)? We have average of 46000 page view/day and
9000 visits/day.
CFMX 6.11 apply the Hot fix for client variables already
Win2003
P4 with 2gb ram
ThanksIt is a bottleneck. But on 46k pages views with that high of
a CPU load, you must really have a very undersized db server. We're
doing 3 million page views/day and about 65% of those use client
variables and it doesn't even phase our db server.
Putting them into a cookie shoudl work just fine. I wouldn't
use the registry setting. It'll make a mess of your registry.
You should consider session variables where possible. Those
stay in server memory. -
Client variables not working in Apache and CF8
I have Apache and CF8 set up with multiple virtual hosts
locally for development(win xp pro, apache 2.2.4)
Client variables are not working. I can log into CF
administrator fine(not sure if authentication uses client variables
or not). Any site that I work on that uses client variables behaves
as if the variable is not defined after setting it then going to
another page that checks for its existence. I have verified that
client variables are set up in cf administrator.
Thanks for any helpThanks a lot. I understood the mistake. Pls do not spend time on this.
Thanks,
Swarna -
Client variables storage in production environment?
Right now we are using Registry to store client variables in production environment, will changing it to Database increase the performance? or what i heard from my colleague is that In production environment , using Database for client storage is not advisable! how true is his statement.
His statement is completely wrong. The docs talk about this here: http://help.adobe.com/en_US/ColdFusion/9.0/Developing/WSc3ff6d0ea77859461172e0811cbec0c35c -7fd5.html
Specifically, read this paragraph from that reference:
Choosing a client variable storage method
By default, ColdFusion stores client variables in the Registry. In most cases, however, it is more appropriate to store the information as client cookies or in a SQL database.
The ColdFusion Administrator Client Variables page controls the default client variable location. You can override the default location by specifying a This.clientStorage value in Application.cfc or by setting the clientStorage attribute in thecfapplication tag.
You can specify the following values for the client storage method:
Registry (default). Client variables are stored under the key HKEY_LOCAL_MACHINE\ SOFTWARE\Macromedia\ColdFusion\CurrentVersion\Clients.
Name of a data source configured in ColdFusion Administrator
Cookie
Generally, it is most efficient to store client variables in a database. Although the Registry option is the default, the Registry has significant limitations for client data storage. The Registry cannot be used in clustered systems and its use for client variables on UNIX is not supported in ColdFusion. -
Coldfusion session/client variables?
We have multiple users using VPN to get to our intranet. When the second user gets on they get the first person's session/client variables?
I have tried looking for the session/client variables and where they are stored but I can't seem to find them. I have tried searching out the cookies.
I would appreciate any help.There are not too many people on this forum that have dabbled with ColdFusion. I used to, but that was more than one decade ago.
Your best bet on getting assistance with your problem, is to go to the ColdFusion forum. -
LVISIT usage in Client Variables
I have a need to track the last visit of a user on my site.
After some searching it appears that the LVISIT column of the
CGLOBAL table in the client variables database should hold the data
that I need. Unfortunately this column is null on every record.
In CF Administrator the global client variable updates are
enabled.
Why is this not getting updated?
Version Info:
Server Product ColdFusion MX
Version 7,0,2,142559
Edition Standard
Operating System Windows 2003
OS Version 5.2Hi,
If you are using DB user you have to connect to the disocverer using your connect window without checking the "oracle application user" at the bottom. for example apps/[email protected] out the TNS name for the DB user is correct or not.
If your using an application user then first you have to go to discoverer administartor and go to tools/options and go to connection and check connect to both standard and application EUL's and give the gateway user as APPLSYSPUB/PUB and foundation name as APPS.
If your connecting to application user,the TNS name should be set in oracle/BI tools home/network/admin and set the TNS name.
Hope this helps you.
Best Wishes,
Kranthi. -
I am at my wits end trying to fix what I think is a client
variable problem. I am currently running CFMX 6.1 + updaters on a
Windows 2003 R2 SP1standard edition server with IIS 6.0. Since
implementing with this server (01/2007), we have installed all the
necessary Windows patches for security every month. I have
installed hot fixes for client variables (TN 19590) and a few
others for COM and cfforms issues. I have experienced CF 'hanging';
not allowing anyone into the application. I shut down the CF MX
Application service, the CF MX ADBC agent, and try to shut the CF
MX ODBC server, but it remains in a 'stopping' state, with a reboot
the only cure.
While trying to troubleshoot the problem, I have come across
the following error:
10/16 15:12:24 error Operation failed on the data source
named "Treasury".
coldfusion.runtime.ClientScopeDBException: Operation failed
on the data source named "Treasury".
at
coldfusion.runtime.JDBCHelper.Store(PersistenceFactory.java:261)
at
coldfusion.runtime.ClientScopeServiceImpl.PersistClientVariables(ClientScopeServiceImpl.j ava:282)
at
coldfusion.runtime.ClientScopeServiceImpl.PersistClientVariablesForRequest(ClientScopeSer viceImpl.java:264)
at
coldfusion.filter.ClientScopePersistenceFilter.invoke(ClientScopePersistenceFilter.java:3 2)
at
coldfusion.filter.BrowserFilter.invoke(BrowserFilter.java:35)
at
coldfusion.filter.GlobalsFilter.invoke(GlobalsFilter.java:43)
at
coldfusion.filter.DatasourceFilter.invoke(DatasourceFilter.java:22)
at coldfusion.CfmServlet.service(CfmServlet.java:105)
at
jrun.servlet.ServletInvoker.invoke(ServletInvoker.java:91)
at
jrun.servlet.JRunInvokerChain.invokeNext(JRunInvokerChain.java:42)
at
jrun.servlet.JRunRequestDispatcher.invoke(JRunRequestDispatcher.java:249)
at
jrun.servlet.ServletEngineService.dispatch(ServletEngineService.java:527)
at
jrun.servlet.jrpp.JRunProxyService.invokeRunnable(JRunProxyService.java:192)
at
jrunx.scheduler.ThreadPool$DownstreamMetrics.invokeRunnable(ThreadPool.java:348)
at
jrunx.scheduler.ThreadPool$ThreadThrottle.invokeRunnable(ThreadPool.java:451)
at
jrunx.scheduler.ThreadPool$UpstreamMetrics.invokeRunnable(ThreadPool.java:294)
at jrunx.scheduler.WorkerThread.run(WorkerThread.java:66)
That's it - nothing else. I have searched high an low,
finding similar errors, but they all have an additional error
message like outOfBounds. This error appears up to 200 times per
day, some within seconds of each other. (I never really looked at
the logs, but it has been occurring since I brought up each server,
test and production). I mentioned the client variable fix above
because of the references in the error message like
'ClientScopeServiceImpl.PersistClientVariables'. I am using an
Access DB to store the client variables, with a purge date of 90
days. Within the Access DB there are the CDATA and CGLOBAL tables,
but with only 278 records in each. I inheritated the system in
version 4.5, and have upgrade to 5 and the to 6.1, so I have never
really looked at client variables before.
Any ideas? Could these errors be created every time someone
logs onto the application? Your time and suggestions are greatly
appreciated.
LibbyLibby, your wits should take you further. Your problem is
your choice of databases more than a client variable issue. It is
regularyly stated that ODBC and especially ODBC to a desktop
database (access, paradox, etc.) is not recommended for real
applications. More so, only use Access for low traffic,
departmental applications or not at all. Storing client variables
in access only compounds the bad choice. Client variables stored in
a database means there is a db read at the start of every request
and a write at the end of each request. That alone will over stress
access.
And then you have your explicit database queries on top of
that. With a datasource named "treasury", it seem likely you are
storing application data there too. So you have a multithreaded
application server going to a database that can only handle a
single connection at a time where you are making multiple database
queries for every page request.
Win2k3 was originally distributed
without any desktop ODBC drivers, the msjet, etc. Microsoft
indicated that an application server was not a place where desktop
databases should be used. Unfortunately, MS let up and eventually
put the destop ODBC drivers back in win2k3. But, their thinking is
correct. Desktop db's cannot keep pace with a high speed appserver,
including coldfusion and win2k3.
Path of a JDBC query to MS SQL
server:
CFMX (java) - JDBC SQL server driver - over wire as TDS
request straight to the database server. MSS DBMS engine does all
work on back end.
[Path of a ODBC query to MS Access:
CFMX (java) - JDBC sequellink driver - sequelink server -
sequelink client - windows ODBC - Access driver -msjet manipulates
access file.
I will make the main points in this thread only, since they
are all around these forums. ODBC is very indirect. File based
desktop databases are typically not thread safe, multi-user or just
capable enough for any appserver. Use a real DBMS, in short. Even
mssql developer, desktop or what ever their new low cost database.
Say good bye to Access for any real application's backend. -
Setting expiration of client variables
We are in need to expire client variables at the same rate as
session variables. In our case this is 2 hours.
Unfortunately, our client variables expire randomly well
before 2 hours are passed.
What should be the correct setting to achieve this?
Our configuration:
- Client variables are stored in their own separate database.
- The checkbox 'Purge data for clients that remain unvisited
for 0 days' is checked and days is set to 0.
- The checkbox 'Disable global client variable updates' is
not checked.
- The 'Purge Interval' is set to 2 hours and 0 minutes.
Thank you,
Alex IsmailHi,
I noticed you managed to "persuade" the proxy WS client in setting timeout.
Can this be done using JCX control too?
With regards, matevz
Matevz Mutec, M.Sc.
Information systems development engineer
Telekom Slovenije, d.d.
Information technology department
Tel.no.: +386-1-2341868
Cell.tel.no.: +386-41-752266 (MPO 8868)
www.telekom.si
<velagale> wrote in message news:[email protected]..
Anyway,
I figured it out myself, by looking at other posts and applying some
reflection API
HelloWorld_Impl proxy = new HelloWorld_Impl();
HelloWorldSoap soapProxy = proxy.getHelloWorldSoap();
// I learnt that this soapProxy is infact an object of HelloWorldSoap_Stub
class
HelloWorldSoap_Stub myStub =
(HelloWorldSoap_Stub)proxy.getHelloWorldSoap();
BindingInfo bInfo =
(BindingInfo)myStub._getProperty("weblogic.webservice.bindinginfo");
bInfo.setTimeout(5); //secs
myStub._setProperty("weblogic.webservice.rpc.timeoutsecs", "5"); // secs
// finally you can call the methods of the web service
soapProxy.Hello();
Please be aware that, upon time out, you would get an exception : <class =
java.rmi.RemoteException
cause = javax.xml.rpc.soap.SOAPFaultException:
javax.xml.rpc.JAXRPCException:java.net.SocketTimeoutException: Read timed
out.> -
Cannot Delete Client Variables
Summary: I have a logout page that deletes session and client
variables. When I execute the page, the CF debugging information
notes that all the session and client vars have been deleted.
However, when I execute another page in the same application and on
the same browser, that page's debugging info notes that the client
var stll exists. How is the server showing that the client var
doesn't exist one page, but exists on another? (I am using CF MX
Version: 6,1,0,63958)
*****Here's the code I use to delete the client and session
vars
<!--- Delete session variables --->
<cfapplication
name="SteadyApp"
sessionmanagement="yes"
sessiontimeout="#createTimeSpan(0,0,0,0)#">
<!--- Delete client variables --->
<cfset DelteVar = DeleteClientVariable("userID")>
*****Here's the code from my application.cfm page:
<cfapplication
name = "SteadyApplication"
clientmanagement = "Yes"
clientstorage="SteadyDatabase"
setdomaincookies="Yes"
sessionmanagement="Yes">
Thank you in advance.
/AJI continuely have this same problem, so if someone has any
insight on whats up with this... please.
let me ask you this though... where is your setting of your
variable located? is it in the appplication.cfm page?
if it is this might be the problem. even though you are
deleting the var in your delete page, the application page is
present and will persist the var because ... it knows... -
Client variables stored in registry getting errors
I'm moving from CF9 to CF10. On the new server I've moved things over, and run the suggested lock-down proceedures. On the CF9 box, I'm using the registry to store client variables.
On the new server I've set it up to use the registry to store client variables. In the coldfusion-out file, I'm getting errors like:
Jan 15, 2013 15:39:03 PM Information [ajp-bio-8012-exec-4] - Unable to set value HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia\ColdFusion\CurrentVersion\Clients\4210-c8158ffa199 3bc18-7CF31106-90B1-1C19-1B0C24F3BDD33D8C\hitcount: Windows error number 0 occurred.The handle is invalid.
Jan 15, 2013 15:39:03 PM Information [ajp-bio-8012-exec-4] - Unable to set value HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia\ColdFusion\CurrentVersion\Clients\4210-c8158ffa199 3bc18-7CF31106-90B1-1C19-1B0C24F3BDD33D8C\cftoken: Windows error number 0 occurred.The handle is invalid.
Jan 15, 2013 15:39:03 PM Information [ajp-bio-8012-exec-4] - Unable to set value HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia\ColdFusion\CurrentVersion\Clients\4210-c8158ffa199 3bc18-7CF31106-90B1-1C19-1B0C24F3BDD33D8C\cfid: Windows error number 0 occurred.The handle is invalid.
On the new server, CF logs in with its own user whereas on the old system, CF logged in as admin. I'm guessing this might be the issue.
Anyone having similar issues or can suggest a solution? I did a search but most people were either turing off client variables or the answer was from 2006.
Thanks.All that said (and I do agree with Adam and Carl that you should eschew the registry for client vars), the answer to your question is that yes, it had to do with your having changed the user that the CF service runs as. You need to grant permissions on that path in the registry (HKEY_LOCAL_MACHINE\SOFTWARE\Macromedia\ColdFusion\CurrentVersion\Clients\) for that user. Find it using regedit, and right-click on that path, and choose “permissions”.
Hopefully that’s enough to get you going. But again, do give serious thought to switching to cookie or a datasource to hold them.
(Sadly, while many people will tell you to do that, they don’t give any guidance on how to get any and all legit client var data out of the registry and into a new storage mechanism. That’s because it’s not easy, and it’s way too big to discuss here in this forum post.)
/charlie -
Embeded derby as client variable store
I've spent considerable time trying to configure the built-in
derby embeded DB as a CF client variable store and have failed
utterly. It seems to be impossible.
I had a SQL Server client store which worked just find, but,
for various reasons that are irrelevant here, I would really prefer
not to do that and use derby instead.
I created the database, created the dsn, set the dsn as the
client store and it all looked okay. But it isn't. The CLOCAL and
CGLOBAL tables were not created as they should have been (and were
for SQL Server). So I created them by hand as described in the
help
files, but that failed as well. Changing various things yields
different errors, but there is a consisted 500 Server error. I can
only guess that the database writes are failing, but there is no
indication as to why.
I have looked all over adobe.com and all over the intertubes
and there is no further information of any kind. In fact, the
latest instructions for even creating the database date back to
May
2007 and have no resemblance to the administrators screens at
all. (I'm running CF 8,0,1,195765 standard). When I create an
embedded derby dsn, I get the generic "default"
Data & Services > Datasources > Other screen.
There's nothing "derby" about it.
So, frankly, it seems pretty pointless and useless to me. If
someone can point me DIRECTLY to relevant information, I'd
appreciate it. I cannot believe in the year plus this product has
been out that NO ONE has done this, especially when it's commented
all
over the place that this is one of the things you can do, yet
there's nothing. Even searching for just "derby" on these forums
yields only three hits, none of which are relevant.>> Well it does actually *tell you* it won't create
them automatically when
> > you go to set the DSN as the client store. I
suppose one has to read what
> > it says on the screen, which I have to say I don't
bother doing a lot of
> > the time in CFAdmin because I "know" what the text
says. This very screen
> > has caught me out with that before. Just the first
time, though.
>
> Actually, it does not tell you. The SQL Server screen
presents you with a box
> that says "create tables" but this one does not.
It doesn't say - underneath the "Description" text area "Your
data source
requires you to manually create the necessary database tables
to store your
client variables. See the Online Help for details. "?
It does for me.
You have a most curious CF install, and I would be very
hesitant continuing
with it given what you say.
What OS are you running on? Do you still have your install
logs, and do
they reveal anything relevant?
Is this an install that was fresh 8.0 (or 8.0.1), or has it
been upgraded
from an earlier release?
> The ones you expect. And the tables are there and
created correctly as per
> <cfdbinfo> which matches the <cfdbinfo>
created by CF in SQL Server. Things
> like:
> CREATE TABLE CDATA (cfid char (64), app char (64), data
clob,)
> CREATE TABLE CGLOBAL (cfid char (64), data clob, lvisit
datetime)
> CREATE UNIQUE INDEX id1 ON CDATA(cfid, app)
> CREATE INDEX id2 ON CGLOBAL(cfid)
> CREATE INDEX id3 ON CGLOBAL(lvisit)
OK, that sounds about right. The only thing I did different
was to use
timestamp rather than datetime. I'm not sure if that's worth
a try.
Can you insert / update / delete manually to/from those?
> > What are the error messages?
> As I said, the only consistent one is an Apache 500
Server error
The inconsistent ones would probably be helpful to know about
too.
What goes into the CF logs when these errors are being
raised? Do the 500
errors give an stack trace info? I think 500 errors usually
don't, but
don't exactly recall.
> > That sounds wrong. I get " Data & Services >
Datasources > Apache Derby
> > Embedded" on all three servers I have at my
disposal currently (a mix of
> > CF8 multiserver, CF8 stand-alone), and the rest of
the screen is
> > Derby-specific. It sounds to me like your install
is bung. Are you saying
> > when you select "Apache Derby Embedded" you just
get the same screen you
> > would have had you selected "other"? Odd.
>
> Also, as I said, I do not get any Derby anything.
I'm finding your tone a bit tedious to be honest.
I asked for clarification because you weren't completely
clear in your
post, and I just wanted to make sure you were sure what you
were seeing
because it's somewhat unusual to be getting completely the
wrong screens in
CFAdmin. In all the CF servers I have had responsibility for,
I've not
seen this, so I just wanted to *make sure* I was reading you
right.
> "other" jdbc data source creation screen, In fact, I
even copied the
> derby-specific URL from the create link and pasted it
into the browser, and CF
> Admin redirected it to the generic jdbc. This happens on
all three CF servers I
> have access to (all running 8.0.1 standard).
Weird. How did you create the Derby DBs themselves? It's
usually one of
the options on the create DSN screen. Did you create them
manually or
using some other client tool?
> > I think your problem here is your attitude that
because *you* can't make
> > something work then automatically nor can anyone
else. That is seldom
> > going to be the case, surely (or you lead a very
charmed life). I always
> > find that when something doesn't work for me in CF
it's almost always my
> > fault.
>
> Thank you for your opinion. It's most helpful
When trying to solve a problem that's a result of something
you've done, I
find it easy to take the mindset that *you've* done something
wrong, not
[something else] has done something wrong. Once one starts
looking more
analytically at one's own actions, sometimes a flag comes up,
and there's a
bit of a "slap forehead" moment. However if it's
predetermined that
something else is at fault and one is just the victim of
circumstance, it's
difficult to progress.
It's just better to dispense with the hand-wringing and roll
up the sleeves
and get on with fixing it.
> should have somehow psychically determined. If you read
for comprehension
> you'll see that I said I can't believe no one had done
it.
Have you not found anyone reporting to have used the Derby
DB? I have to
say that I'd never used it before y/day, because I've got the
luxury of
having Oracle or SQL Server DBs at my disposal. However I do
know of other
organisations using Derby for their demo DBs, and have read a
few things
about its usage.
I don't think you should expect to hear people reporting back
"hey I am
using Derby to store my client variables", because I don't
think it's
really that report-worthy. How many people to you see
reporting back "I'm
using my Oracle DB to store client variables"? As "storing
client
variables in a DB" is such a mundane thing, people are only
going to report
on it if they have had problems with it. Maybe no-one's done
it (except
for me, as of y/day). Maybe no-one's had a problem with it. A
case in
point: I had no problems setting it up, so I have no further
need to report
anything to anyone about it because it's "job done, move on".
> As I said the first time and again above, and will
repeat again here: I can't
> find anywhere where someone said they've actually done
it.
I've *actually done it*. I told you this y/day, as soon as
you asked.
There you go. Can we move on now please?
I'm not actually sure you want help, but if you do, follow up
with those
error message and anything from the logs that are helpful. I
think you
just want to have a moan as to how you've been so put upon,
and if that's
the case, I think we're done here. It's up to you as to how
to proceed.
Adam -
Hello all, first off, I have never used a client variable
ever in Coldfusion. I am looking for some advice as to the
pros/cons of using client variables over cookies...
The only real situation I use a cookie for right now is to
store their username if they select remember me so that next time
they come to the site it remembers their username... Is this
something I should be using a client variable for?
Any advise/comparison to the uses of the two would be great.
Thanks!I never saw anything ever get inserted into the CDATA and CGLOBAL tables. Is that not the point of these tables? To hold the session data?
Yes, it is. You seem to have done the settings properly. However, you must enable client variables.
Here's how you do it. If your application file is Application.cfm, then add the following attributes to the cfapplication tag
clientManagement="yes" clientStorage="Name_of_datasource_you_created"
If your application file is Application.cfc, then define the following properties
this.clientManagement = "yes";
this.clientStorage = "Name_of_datasource_you_created"; -
ColdFusion 8 - Client Variables don't work with PostgreSQL
RedHat Fedora Linux
PostgreSQL version 8.2
ColdFusion version 8 Developer
Steps to create problem:
Creating Client Variables in the "ColdFusion Administrator".
checked "Create Client Variables" pressed "submit"
Results:
The "ColdFusion Administrator" errors out.
Problem:
"ColdFusion Administrator" calls a the page "postgresql.cfm",
which creates the tables in the database.
Until "ColdFusion" executes the SQL "create table CGLOBAL
(cfid char(64), data text, lvisit datetime)".
According to PostgreSQL website and documentation, the data
type "datetime" doesn't exists."
Valid 'time/date data types' are timestamp,interval,date and
time.
Question:
Is there some way of getting "ColdFusion" to "create a
'Client Variables' database" in PostgreSQL DBMS,
using "ColdFusion Administrator?
What are the SQL statements to "create a 'Client Variables'
database" by hand?Have you viewed the Livedocs section at
Client
Variables page? It does explain the process for creating client
variable tables:
Use the following sample ColdFusion page as a model for creating
client variable database tables in your own database. However, keep
in mind that not all databases support the same column data type
names. For the proper data type, see your database
documentation.
This is where you can substitute the correct data types that
are appropriate for your flavor of DBMS.
Phil -
CF MX7, Client variables and an internal app
I work for a retail company that has over 500 stores. Some time ago, I wrote 4 applications that the stores use in CF. In the time since I developed them, we moved to CFMX7 and now are changing to a new point of sale, on a Windows XP platform with IE 7.0 as the client.
Nothing can change on the client so any suggestions in that area won't help me.
The applicaitons the stores use are store specific and I have to pass the store number in the URL. I store the store number in a Client variable and a Cookie (as backup). I was lazy back then and in each application, the store number variable is the same name.
So now I have a problem since we moveed to the new POS (which I do not believe has anything to do with it, but maybe).
When one store is in one app (call it App A) and another store is in App B, at some point, the store numbers get mixed up and some how when the first store submits, it ends up submitting with the other store number.
Are my client variables getting crossed up? I thought that the client variables were instance specific.
Thoughts?I had no problems with MySQL 5.1 on CF8.0.1. However, I found
there were quite a few corners to turn when changing the datasource
for the client store. I followed the following steps:
1) Create a new database (called
client_data)using the following SQL script:
CREATE DATABASE client_data;
USE client_data;
/*Table structure for table cdata */
DROP TABLE IF EXISTS cdata;
CREATE TABLE cdata (
cfid char(64) NOT NULL,
app char(64) NOT NULL,
data text,
UNIQUE KEY id1 (cfid,app)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*Table structure for table cglobal */
DROP TABLE IF EXISTS cglobal;
CREATE TABLE cglobal (
cfid char(64) NOT NULL,
data text,
lvisit datetime NOT NULL,
KEY id2 (cfid),
KEY id3 (lvisit)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
2) Configure a datasource called
client_data in the datasources page in the Coldfusion
Adimistrator. Use the following settings:
Data Source Name:client_data
Driver:MySQL (4/5)
Database:client_data
Server:127.0.0.1
Port:3306
Username:root
Password:BKBK1432
3) In the Client Variables page in the Administrator, delete
any previous datasources used for client storage.
4) Restart Coldfusion.
5) In the Client Variables page in the Administrator, add
client_data as the store for client variables. Make sure its
radio-button is selected.
6) If necessary, change the value of the
clientStorage attribute in Application.cfm or the
this.clientStorage in Application.cfc to "client_data". -
Client variable database repository exception handling
We have recently had 2 incidents where client variable
database storage appears to have failed in our clustered
environment. We have 2 servers that share a sybase 12.5.2 client
variable repository (CDATA/CGLOBAL). The problem seems to be
occuring when a table that the application uses gets blocked by an
unrelated application. When this happens, client variable storage
seems to fail - the 2 servers apparently use whatever client
variables they have in memory rather than getting the values from
CDATA.
There are no exceptions thrown, the application continues to
function normally except that each server has it's own copy of the
client variables. When we kill the process that has the table
locked up, the servers start using CDATA normally again.
The page that is getting blocked by the external process does
not update any client variables, but it does read them. The
inconsistent client variable problem occurs on other pages, not the
one being blocked.
I was able to sort of recreate the problem. I found that if I
renamed CDATA, no error is reported to the user. The database
exception (table not found) is logged, but not thrown on the page.
To the user the application appears to function normally. So this
demonstrates that updates to CDATA which result in database
exceptions fail silently and are not thrown to the page.
Has anyone else experienced silent exceptions in CDATA
updates? Are there any workarounds for this behavior? Our
application relies on client variables being consistent across
servers and really need for exceptions to be thrown to the page so
that the user is aware.
Additional Info:
CFMX 7.0.2
Windows Server 2003 SP1
database is sybase 12.5.2This is one of the "classic" design problems in this kind of architecture. And, unfortunately, the answer is "it depends on how you think you need to handle it." And I'm sure there are plenty of "gurus" that will tell you one way or another is the only way to do it.
I'll be more honest: I'll give you a couple of personal suggestions, based on experience in this architecture. These are suggestions - you may do with them what you will. I will not say this is the best, most correct, or even remotely relevant to what you're doing.
If it's simple data validation for "typing" (e.g. String, number, Date, etc.), that is taken care of when you attempt to stuff in the information into the appropriate DTO. If it's more "sophisticated" than that (must be in a certain range, etc.), that particular checking should probably be delegated from your Controller to a helper class. That not only saves the "expense" of transmitting the information back and forth across the wire, it's "faster" to the end user so say "Ooopsie" by redirecting back to the form right then. Basically the same thing if the types are wrong.
That only leaves the "big" problems in the business layer (EJBs), where you have to deal with concurrency, database failures, etc. Generally these kinds of exceptions are thrown back to to the Controller in one of two forms:
1) a sublass of RuntimeException, which signals that some Very Bad Things have happened in your container. EJBException is one like that and you can see where it's being thrown from.
2) a subclass of Exception, also called "application exceptions." They are usually something like a "duplicate record" or a validation-like error (which you mentioned) like a missing field. They're used as a signal to a failure in the logic, not the container. That way you have to decide at what layer of your architecture they should be handled and/or passed on to the next.
Maybe you are looking for
-
Why does paintbrush not work on images opened from Bridge?
This problem may be due to another cause but the most common occurance is when an image is opened from Bridge so I've posted it here. Here are the details. I have had tons of problems with CS4 on my desktop PC but seem to have most of them resolved
-
Windows 7 O.S. and latest version of FF browser.
-
Lightroom 3- How do I batch process a group of photos with the same preset?
Using Lightroom 3/Mac. Attempting to apply a preset to a group of photos. I read the forum already but what I read didn't make sense to me. Sorry. Also wondering if anyone else is plagued by Lightroom's tendency to take over the monitor. Whenever I
-
My hp photosmart 5512 will only print in black and white on my gateway PC, but will print correctly on my laptops, does anyone know why?
-
I have a problem using the powersave package. When I do a suspend, it appears to work as it should. That is, it goes to sleep and when I hit a key it wakes up. Magic! The problem is after it wakes up, I have no network. If I do an 'ifconfig' my e