Introduction |
|
xxvii | |
|
PART 1 Creating High Availability Applications |
|
|
1 | (142) |
|
Understanding High Availability |
|
|
3 | (14) |
|
High Availability Explained |
|
|
4 | (1) |
|
How Do I Know My Server Load? |
|
|
5 | (2) |
|
Load and Performance Testing |
|
|
5 | (2) |
|
The High-Availability Plan: Seven Must-Haves for Building High-Availability Solutions |
|
|
7 | (7) |
|
Implement a Load-Balanced Web-Server Cluster |
|
|
8 | (2) |
|
Choose a Network Provider with Circuit Redundancy |
|
|
10 | (1) |
|
|
10 | (1) |
|
Use RAID Level 5 on Database Servers |
|
|
11 | (1) |
|
Calculate Acceptable Risk |
|
|
12 | (1) |
|
Redundant Server Components vs. Commodity Computing |
|
|
12 | (1) |
|
|
13 | (1) |
|
Some Truths about Web Hosting |
|
|
14 | (1) |
|
|
14 | (1) |
|
The Quality of Service Guarantee |
|
|
15 | (1) |
|
|
15 | (2) |
|
Monitoring System Performance |
|
|
17 | (30) |
|
Monitoring Your ColdFusion MX 7 Server |
|
|
17 | (6) |
|
|
17 | (1) |
|
|
18 | (1) |
|
Analyzing ColdFusion Log Files |
|
|
18 | (2) |
|
|
20 | (2) |
|
Analyzing Web Server Log Files |
|
|
22 | (1) |
|
|
23 | (19) |
|
|
24 | (2) |
|
|
26 | (2) |
|
|
28 | (1) |
|
Monitoring ColdFusion Using Perfmon and Settings |
|
|
29 | (7) |
|
Monitoring Performance on Unix and Linux Servers |
|
|
36 | (3) |
|
|
39 | (3) |
|
|
42 | (5) |
|
Some Issues to Consider When Looking for Performance Problems |
|
|
43 | (1) |
|
|
43 | (4) |
|
Scaling with ColdFusion MX 7 |
|
|
47 | (30) |
|
The Importance of Scaling |
|
|
47 | (1) |
|
|
48 | (9) |
|
Tiered Application Architecture |
|
|
49 | (2) |
|
Server and Hardware Components |
|
|
51 | (3) |
|
Considerations for Choosing a Load-Balancing Option |
|
|
54 | (1) |
|
User-Request Distribution Algorithms |
|
|
55 | (1) |
|
|
56 | (1) |
|
|
56 | (1) |
|
Mixed Web Application Environments |
|
|
56 | (1) |
|
How to Write ColdFusion MX 7 Applications That Scale |
|
|
57 | (4) |
|
|
57 | (1) |
|
|
57 | (1) |
|
Streamlined, Efficient Code |
|
|
58 | (1) |
|
Avoiding Common Bottlenecks |
|
|
59 | (2) |
|
Keeping Web Site Servers in Sync |
|
|
61 | (2) |
|
|
61 | (1) |
|
|
62 | (1) |
|
|
62 | (1) |
|
Multiple ColdFusion MX 7 Instances |
|
|
63 | (3) |
|
Hardware vs. Software Load Balancing Options |
|
|
66 | (3) |
|
ColdFusion MX 7 Load Balancing and Software-Based Load Balancing |
|
|
66 | (2) |
|
Dedicated Load-Balancing Hardware |
|
|
68 | (1) |
|
Scaling with ColdFusion MX 7 Load Balancing |
|
|
69 | (4) |
|
Understanding ColdFusion MX 7 Load Balancing |
|
|
69 | (1) |
|
Configuring a Load Balanced Cluster |
|
|
70 | (3) |
|
Hardware Load-Balancing Options |
|
|
73 | (2) |
|
|
73 | (2) |
|
|
75 | (1) |
|
|
75 | (2) |
|
|
77 | (28) |
|
Benefits of Deploying ColdFusion on J2EE Application Server |
|
|
78 | (3) |
|
|
78 | (1) |
|
|
78 | (1) |
|
Support for Legacy Infrastructure and Prior Investments |
|
|
79 | (1) |
|
Inheritance of Multiplatform Interoperability |
|
|
80 | (1) |
|
Development Values of ColdFusion MX on J2EE |
|
|
81 | (5) |
|
Deploying Rich Internet Applications in Java |
|
|
81 | (1) |
|
|
81 | (1) |
|
|
82 | (1) |
|
Leveraging Diverse Developer Skill Sets |
|
|
83 | (1) |
|
Using J2EE Built-In Security Features |
|
|
83 | (1) |
|
Improving Web Site Scalability |
|
|
83 | (3) |
|
How MX Lives on Top of Java Server |
|
|
86 | (4) |
|
Coding Implications from the Developer's Perspective |
|
|
88 | (2) |
|
Scaling with ColdFusion and JRun |
|
|
90 | (4) |
|
Scaling with Other Java Application Servers |
|
|
94 | (1) |
|
Tuning the Java Virtual Machine |
|
|
95 | (8) |
|
|
95 | (2) |
|
Tuning Garbage Collection |
|
|
97 | (2) |
|
|
99 | (1) |
|
|
100 | (1) |
|
Visualizing Garbage Collections |
|
|
101 | (2) |
|
|
103 | (2) |
|
Managing Session State in Clusters |
|
|
105 | (18) |
|
|
105 | (1) |
|
The History of Managing State |
|
|
106 | (1) |
|
|
106 | (1) |
|
|
106 | (1) |
|
Options for Managing Session State |
|
|
107 | (16) |
|
A Little about Server-Side ColdFusion Client, Application, Server, and Session Variables |
|
|
107 | (1) |
|
Embedding Parameters in a URL or a Form Post |
|
|
108 | (1) |
|
|
109 | (3) |
|
Session Variables versus Client Variables |
|
|
112 | (2) |
|
Keeping the User on the Same Machine |
|
|
114 | (1) |
|
Using a Central Client Variable Repository |
|
|
115 | (4) |
|
|
119 | (2) |
|
Hardware-Based Session Management |
|
|
121 | (1) |
|
|
122 | (1) |
|
|
123 | (20) |
|
|
123 | (1) |
|
|
123 | (8) |
|
|
124 | (3) |
|
|
127 | (2) |
|
|
129 | (2) |
|
|
131 | (5) |
|
|
131 | (5) |
|
|
136 | (1) |
|
|
136 | (5) |
|
Compiling Sourceless Templates |
|
|
137 | (2) |
|
Customizing the cfcompile Script |
|
|
139 | (2) |
|
Choosing the Right Deployment Option |
|
|
141 | (2) |
|
|
143 | (136) |
|
|
145 | (30) |
|
|
145 | (2) |
|
What Is ColdFusion's Concern and What Is Not |
|
|
146 | (1) |
|
|
147 | (20) |
|
|
147 | (1) |
|
ColdFusion Encryption Functions |
|
|
147 | (1) |
|
How Encrypt () and Decrypt () Work |
|
|
148 | (3) |
|
Encrypt () and Decrypt () Functions |
|
|
151 | (2) |
|
ColdFusion's Hash () Function |
|
|
153 | (4) |
|
Installing Third-Party JCE Providers |
|
|
157 | (2) |
|
|
159 | (8) |
|
|
167 | (6) |
|
Cross-Site Scripting (XSS) |
|
|
167 | (3) |
|
|
170 | (1) |
|
|
170 | (2) |
|
|
172 | (1) |
|
Authentication and Authorization |
|
|
173 | (2) |
|
ColdFusion Security Options |
|
|
175 | (42) |
|
Operating System Security |
|
|
175 | (4) |
|
|
175 | (3) |
|
|
178 | (1) |
|
|
179 | (15) |
|
Microsoft Internet Information Server (IIS) |
|
|
179 | (4) |
|
|
183 | (5) |
|
|
188 | (6) |
|
ColdFusion Security Framework |
|
|
194 | (11) |
|
|
195 | (1) |
|
|
196 | (6) |
|
Basic ColdFusion Login Example |
|
|
202 | (3) |
|
ColdFusion Login Wizard Extension |
|
|
205 | (12) |
|
ColdFusion Login Wizard Example |
|
|
212 | (5) |
|
Creating Server Sandboxes |
|
|
217 | (18) |
|
|
217 | (6) |
|
Understanding File and Directory Permissions |
|
|
218 | (1) |
|
|
219 | (4) |
|
Creating and Securing Applications Using Sandboxes |
|
|
223 | (12) |
|
Enabling Sandbox Security |
|
|
223 | (2) |
|
|
225 | (1) |
|
|
226 | (6) |
|
The Blackbox Sandbox Example |
|
|
232 | (3) |
|
Security in Shared and Hosted Environments |
|
|
235 | (28) |
|
Risks in the Shared Environment |
|
|
235 | (2) |
|
|
235 | (2) |
|
|
237 | (1) |
|
|
237 | (3) |
|
Enabling RDS Password Security |
|
|
238 | (1) |
|
Disabling RDS on Production Servers |
|
|
238 | (2) |
|
|
240 | (1) |
|
Multiple Server Configurations |
|
|
241 | (3) |
|
Configuration Issues for Multi-homed Web Servers |
|
|
242 | (2) |
|
Configuring ColdFusion for Multiple Hosts |
|
|
244 | (6) |
|
|
244 | (6) |
|
|
250 | (11) |
|
Running ColdFusion as a User |
|
|
250 | (1) |
|
Macromedia Flash Remoting Integration |
|
|
251 | (2) |
|
Disabling JSP Functionality |
|
|
253 | (1) |
|
Securing the CFIDE Directory |
|
|
253 | (2) |
|
Limit Session Timeout Values |
|
|
255 | (1) |
|
Removing Help Docs and Example Applications |
|
|
256 | (1) |
|
Debugging IP Restrictions |
|
|
256 | (1) |
|
Encrypt ColdFusion Templates |
|
|
257 | (1) |
|
|
258 | (1) |
|
|
258 | (1) |
|
|
259 | (1) |
|
Adding the Default Document |
|
|
260 | (1) |
|
|
261 | (2) |
|
Using the Administrator API |
|
|
263 | (16) |
|
Understanding the Admin API |
|
|
263 | (1) |
|
Building Custom Admin Consoles |
|
|
264 | (7) |
|
|
265 | (6) |
|
Security Implications for the Admin API |
|
|
271 | (6) |
|
ColdFusion ServiceFactory |
|
|
271 | (1) |
|
|
272 | (1) |
|
|
272 | (2) |
|
Securing the Facade Component |
|
|
274 | (3) |
|
|
277 | (2) |
|
|
277 | (1) |
|
Custom Console Coding Best Practices |
|
|
277 | (2) |
|
PART 3 Advanced Application Development |
|
|
279 | (496) |
|
|
281 | (22) |
|
|
281 | (5) |
|
What You Can and Cannot Do with <cfscript> |
|
|
282 | (3) |
|
Differences between <cfscript> and JavaScript |
|
|
285 | (1) |
|
|
286 | (1) |
|
|
286 | (9) |
|
Creating and Using Variables |
|
|
287 | (1) |
|
|
288 | (1) |
|
Calling ColdFusion Functions |
|
|
288 | (1) |
|
Flow Control Using <cfscript> |
|
|
289 | (2) |
|
|
291 | (4) |
|
Common Problems and Solutions |
|
|
295 | (3) |
|
A Note about the {} Symbols |
|
|
296 | (1) |
|
|
297 | (1) |
|
User-Defined Functions in <cfscript> |
|
|
298 | (1) |
|
|
298 | (1) |
|
Exception Handling in <cfscript> |
|
|
299 | (4) |
|
Using Regular Expressions |
|
|
303 | (54) |
|
Introducing Regular Expressions |
|
|
303 | (3) |
|
What Are Regular Expressions? |
|
|
303 | (3) |
|
RegEx Support in ColdFusion |
|
|
306 | (1) |
|
What Changed in ColdFusion |
|
|
306 | (1) |
|
Where Can You Use Regular Expressions? |
|
|
307 | (1) |
|
Using Regular Expressions in ColdFusion |
|
|
307 | (21) |
|
Finding Matches with reFind() |
|
|
308 | (4) |
|
Working with Subexpressions |
|
|
312 | (3) |
|
Working with Multiple Matches |
|
|
315 | (2) |
|
Replacing Text using reReplace() |
|
|
317 | (5) |
|
Altering Text with Backreferences |
|
|
322 | (3) |
|
Altering Text Using a Loop |
|
|
325 | (3) |
|
Some Convenient RegEx UDFs |
|
|
328 | (5) |
|
Building a RegEx Testing Page |
|
|
333 | (6) |
|
Crafting Your Own Regular Expressions |
|
|
339 | (16) |
|
Understanding Literals and Metacharacters |
|
|
339 | (1) |
|
Introducing the Cast of Metacharacters |
|
|
340 | (1) |
|
Metacharacters 101: Character Classes |
|
|
341 | (2) |
|
Metacharacters 102: Quantifiers |
|
|
343 | (5) |
|
Metacharacters 201: Alternation |
|
|
348 | (1) |
|
Metacharacters 202: Word Boundaries |
|
|
348 | (1) |
|
Metacharacters 203: String Anchors |
|
|
348 | (3) |
|
Metacharacters 301: Match Modifiers |
|
|
351 | (2) |
|
Metacharacters 302: Lookahead Matching |
|
|
353 | (1) |
|
Metacharacters 303: Backreferences Redux |
|
|
353 | (1) |
|
Metacharacters 304: Escape Sequences |
|
|
354 | (1) |
|
Learning More about Regular Expressions |
|
|
355 | (2) |
|
|
357 | (1) |
|
|
358 | (3) |
|
Elements and Their Attributes |
|
|
359 | (1) |
|
|
360 | (1) |
|
|
361 | (1) |
|
|
361 | (1) |
|
|
362 | (6) |
|
|
363 | (3) |
|
|
366 | (1) |
|
Creating XML Documents from Database Content |
|
|
367 | (1) |
|
Using Special Characters in XML |
|
|
368 | (2) |
|
|
369 | (1) |
|
|
369 | (1) |
|
|
370 | (3) |
|
|
372 | (1) |
|
|
373 | (1) |
|
|
373 | (8) |
|
|
373 | (1) |
|
|
374 | (5) |
|
Validating XML in ColdFusion |
|
|
379 | (2) |
|
|
381 | |
|
Manipulating XML with XSLT and XPath |
|
|
357 | (26) |
|
|
357 | (5) |
|
|
357 | (2) |
|
|
359 | (2) |
|
Using XmlSearch() to retrieve an array of nodes |
|
|
361 | (1) |
|
Transforming XML into Content by Using XSLT |
|
|
362 | (20) |
|
Creating a basic transformation |
|
|
363 | (5) |
|
Performing the transformation by using XmlTransform() |
|
|
368 | (1) |
|
Ignoring nodes in the hierarchy |
|
|
368 | (1) |
|
Creating a more complex transformation |
|
|
369 | (13) |
|
More XPath and XSLT Resources |
|
|
382 | (1) |
|
|
383 | (72) |
|
|
383 | (3) |
|
|
384 | (1) |
|
Tools and Languages Supported by WDDX |
|
|
385 | (1) |
|
|
386 | (1) |
|
Using WDDX with ColdFusion |
|
|
386 | (8) |
|
Introducing the <cfwddx> Tag |
|
|
386 | (1) |
|
Creating Your First WDDX Packet |
|
|
387 | (2) |
|
Deserializing Your First WDDX Packet |
|
|
389 | (1) |
|
Serializing and Deserializing Complex Data |
|
|
390 | (3) |
|
Validating Packets with IsWDDX() |
|
|
393 | (1) |
|
|
394 | (3) |
|
Using WDDX Packets to Store Information in Files |
|
|
397 | (14) |
|
About Storing Packets in Files |
|
|
398 | (1) |
|
Building a Simple WDDX Function Library |
|
|
398 | (4) |
|
Storing Application Settings as a WDDX Packet |
|
|
402 | (9) |
|
|
411 | (1) |
|
Other Places to Store WDDX Packets |
|
|
411 | (2) |
|
Storing Packets as Client Variables |
|
|
411 | (1) |
|
Storing Packets in Databases |
|
|
412 | (1) |
|
Exchanging WDDX Packets among Web Pages |
|
|
413 | (7) |
|
The Concept of a Back-End Web Page |
|
|
413 | (1) |
|
Back-End WDDX Pages vs. Web Services |
|
|
413 | (1) |
|
Creating a Back-End Web Page |
|
|
414 | (3) |
|
Putting the Back-End Web Page to Use |
|
|
417 | (3) |
|
Understanding the Possibilities |
|
|
420 | (1) |
|
Binary Content in WDDX Packets |
|
|
420 | (35) |
|
Using JavaScript and ColdFusion Together |
|
|
455 | (74) |
|
A Crash Course in JavaScript |
|
|
455 | (11) |
|
JavaScript Language Elements |
|
|
456 | (5) |
|
Understanding JavaScript's Relationship to Web Browsers |
|
|
461 | (1) |
|
Understanding Scripting Object Models |
|
|
461 | (1) |
|
JavaScript Objects Available in Web Pages |
|
|
462 | (1) |
|
Understanding JavaScript Events |
|
|
463 | (1) |
|
Including JavaScript Code in Web Pages |
|
|
464 | (1) |
|
Browser Specific Features and Compatibility Issues |
|
|
465 | (1) |
|
That's the End of the Crash Course |
|
|
465 | (1) |
|
Working with Form Elements |
|
|
466 | (2) |
|
Passing Variables to JavaScript |
|
|
468 | (20) |
|
Passing Numbers to JavaScript |
|
|
468 | (1) |
|
Passing Strings to JavaScript |
|
|
469 | (2) |
|
Variable Passing Example: Mortgage Calculator |
|
|
471 | (6) |
|
Passing Arrays to JavaScript |
|
|
477 | (2) |
|
Passing Structures to JavaScript as Objects |
|
|
479 | (1) |
|
Passing Enough Data to Relate Two Select Boxes |
|
|
480 | (1) |
|
Cascading Selects, Approach #1: Creating an Array of Films |
|
|
480 | (4) |
|
Cascading Selects, Approach #2: Using a Custom JavaScript Object |
|
|
484 | (4) |
|
Passing Data to JavaScript Using <cfwddx> |
|
|
488 | (12) |
|
Using this Form of <cfwddx> |
|
|
489 | (2) |
|
Cascading Selects, Approach #3: Passing the Data Via <cfwddx> |
|
|
491 | (4) |
|
Working with WddxRecordset Objects |
|
|
495 | (2) |
|
Cascading Selects, Approach #4: Using a WddxRecordset Object |
|
|
497 | (3) |
|
Working with WDDX Packets in JavaScript |
|
|
500 | (17) |
|
Serializing Packets with WddxSerializer |
|
|
500 | (10) |
|
Deserializing Packets with WddxDeserializer |
|
|
510 | (2) |
|
Cascading Selects, Approach #5: Fetching Matching Films in Real Time |
|
|
512 | (5) |
|
Cascading Selects, Approach #6: Wrapping the WDDX Fetching in a Custom Tag |
|
|
517 | (1) |
|
Calling CFCs from JavaScript |
|
|
517 | (2) |
|
Passing Simple Variables to ColdFusion |
|
|
519 | (10) |
|
|
526 | (3) |
|
Creating Advanced Custom Tags |
|
|
529 | (48) |
|
Simple CFML Custom Tags: Back to Basics |
|
|
529 | (3) |
|
|
532 | (7) |
|
|
533 | (2) |
|
The Concept of GeneratedContent |
|
|
535 | (1) |
|
Custom Tags That May Be Called as Paired or Empty |
|
|
536 | (1) |
|
Using CFEXIT to Control Custom Tag Processing Flow |
|
|
537 | (2) |
|
|
539 | (13) |
|
|
539 | (3) |
|
Communicating Between Parent and Child Custom Tags |
|
|
542 | (10) |
|
Creating an Advanced Custom Tag |
|
|
552 | (24) |
|
Two Phases: Initial Page Display and PostBack |
|
|
552 | (1) |
|
Two Statuses: Preparing and Building |
|
|
553 | (1) |
|
Using CFEXIT to Control Child Tag Processing Flow |
|
|
553 | (1) |
|
Creating an Add Form and a Form Field |
|
|
554 | (5) |
|
Adding Edit Form Functionality |
|
|
559 | (7) |
|
Adding Delete Form Functionality |
|
|
566 | (5) |
|
Adding View Form Functionality |
|
|
571 | (5) |
|
|
576 | (1) |
|
Creating Advanced ColdFusion Components |
|
|
577 | (44) |
|
|
577 | (3) |
|
|
577 | (1) |
|
|
578 | (2) |
|
|
580 | (4) |
|
|
580 | (1) |
|
|
580 | (2) |
|
|
582 | (2) |
|
|
584 | (1) |
|
|
584 | (2) |
|
|
584 | (1) |
|
|
585 | (1) |
|
|
585 | (1) |
|
Accessing a CFC Using a URL |
|
|
586 | (1) |
|
|
586 | (5) |
|
The GetMetaData() Function |
|
|
589 | (2) |
|
|
591 | (1) |
|
Persisting CFCs for Performance |
|
|
592 | (1) |
|
All This ``Object'' Stuff |
|
|
593 | (1) |
|
|
593 | (7) |
|
|
600 | (4) |
|
Persistence and Constructors |
|
|
604 | (7) |
|
|
606 | (5) |
|
|
611 | (7) |
|
|
611 | (3) |
|
Role-Based Security in CFCs |
|
|
614 | (4) |
|
|
618 | (3) |
|
|
618 | (1) |
|
|
618 | (1) |
|
Don't Expose Yourself Unless You Need To |
|
|
618 | (1) |
|
|
618 | (1) |
|
|
619 | (1) |
|
|
619 | (2) |
|
|
621 | (28) |
|
What's wrong with HTML Forms? |
|
|
621 | (1) |
|
|
622 | (1) |
|
|
622 | (1) |
|
|
623 | (26) |
|
The XForms Form Definition |
|
|
630 | (5) |
|
Skinning and Styling: Rendering the Form |
|
|
635 | (1) |
|
XSL: The eXtensible Stylesheet Language |
|
|
636 | (6) |
|
Writing Extensions to XForms Using XSL |
|
|
642 | (7) |
|
Using Server-Side HTTP and FTP |
|
|
649 | (30) |
|
|
649 | (1) |
|
|
650 | (4) |
|
Errors and Results for a <cfhttp> Call |
|
|
653 | (1) |
|
Using the <cfhttpparam> Tag |
|
|
654 | (1) |
|
|
654 | (14) |
|
|
654 | (3) |
|
Building a Query from a Text File |
|
|
657 | (3) |
|
|
660 | (2) |
|
Creating Intelligent Agents with <cfftp> |
|
|
662 | (5) |
|
Summarizing the <cfhttp> Tag |
|
|
667 | (1) |
|
|
668 | (7) |
|
Connection Operations with <cfftp> |
|
|
668 | (3) |
|
File and Directory Operations with <cfftp> |
|
|
671 | (2) |
|
Errors and Results for a <cfftp> Call |
|
|
673 | (2) |
|
|
675 | (4) |
|
Displaying Available Files |
|
|
675 | (2) |
|
Using <cfftp> to Download a File |
|
|
677 | (1) |
|
Using <cfftp> to Upload a File |
|
|
677 | (1) |
|
Summarizing the <cfftp> Tag |
|
|
678 | (1) |
|
Interacting with Directory Services |
|
|
679 | (30) |
|
|
679 | (2) |
|
|
680 | (1) |
|
|
681 | (1) |
|
|
681 | (6) |
|
|
682 | (2) |
|
|
684 | (2) |
|
|
686 | (1) |
|
|
686 | (1) |
|
|
687 | (1) |
|
Querying Public LDAP Servers |
|
|
687 | (1) |
|
Interacting with Directories |
|
|
688 | (16) |
|
|
688 | (1) |
|
|
689 | (1) |
|
|
690 | (1) |
|
|
691 | (2) |
|
|
693 | (2) |
|
|
695 | (7) |
|
|
702 | (2) |
|
|
704 | (5) |
|
ColdFusion and Globalization |
|
|
709 | (66) |
|
|
709 | (1) |
|
|
710 | (1) |
|
``Secret'' Globalization Language Revealed |
|
|
710 | (1) |
|
Dancing the Globalization Jig |
|
|
711 | (1) |
|
|
711 | (56) |
|
|
711 | (29) |
|
|
740 | (2) |
|
|
742 | (7) |
|
|
749 | (1) |
|
|
750 | (1) |
|
|
751 | (6) |
|
|
757 | (2) |
|
|
759 | (1) |
|
|
760 | (2) |
|
|
762 | (2) |
|
|
764 | (1) |
|
Relevant ColdFusion MX 7 Tags/Functions |
|
|
765 | (2) |
|
|
767 | (8) |
|
|
768 | (1) |
|
Monolingual or Multilingual Web Sites |
|
|
769 | (1) |
|
|
770 | (1) |
|
|
770 | (1) |
|
|
771 | (1) |
|
|
771 | (2) |
|
|
773 | (1) |
|
When ColdFusion MX 7 Isn't Enough |
|
|
773 | (2) |
|
PART 4 Extending ColdFusion |
|
|
775 | (172) |
|
Creating and Consuming Web Services |
|
|
777 | (34) |
|
Understanding Web Services |
|
|
777 | (5) |
|
|
778 | (1) |
|
|
778 | (2) |
|
|
780 | (2) |
|
|
782 | (7) |
|
|
789 | (10) |
|
|
789 | (6) |
|
Defining Complex Data Types |
|
|
795 | (4) |
|
|
799 | (7) |
|
|
799 | (1) |
|
Invoking ColdFusion MX Web Services |
|
|
800 | (2) |
|
|
802 | (1) |
|
Invoking with Dreamweaver |
|
|
802 | (1) |
|
Invoking .NET Web Services |
|
|
803 | (1) |
|
Invoking Java Web Services |
|
|
804 | (1) |
|
|
805 | (1) |
|
Working with SOAP Requests |
|
|
806 | (2) |
|
Calling Web Services with Nillable Arguments |
|
|
807 | (1) |
|
|
808 | (3) |
|
|
809 | (1) |
|
Configuring in ColdFusion Administrator |
|
|
810 | (1) |
|
|
810 | (1) |
|
|
811 | (22) |
|
|
811 | (1) |
|
.NET Web Service (Returning a Simple Type) |
|
|
812 | (5) |
|
ColdFusion/.NET Web Service Integration Example |
|
|
816 | (1) |
|
.NET Web Service (Returning a Complex Type) |
|
|
817 | (5) |
|
ColdFusion Web Service (Returning a Complex Type) |
|
|
822 | (5) |
|
Interoperability through COM Callable Wrapper |
|
|
826 | (1) |
|
|
827 | (4) |
|
|
828 | (1) |
|
Exercising with ColdFusion |
|
|
829 | (2) |
|
|
831 | (2) |
|
Extending ColdFusion with COM |
|
|
833 | (2) |
|
Integrating with Microsoft Office |
|
|
835 | (24) |
|
|
835 | (6) |
|
|
841 | (2) |
|
|
843 | (5) |
|
|
848 | (8) |
|
|
856 | (3) |
|
Extending ColdFusion with CORBA |
|
|
859 | (2) |
|
Extending ColdFusion with Java |
|
|
861 | (36) |
|
|
862 | (13) |
|
Instantiating Objects and Calling Methods |
|
|
863 | (2) |
|
Working with Constructors |
|
|
865 | (2) |
|
A Practical Example: Resizing Images |
|
|
867 | (4) |
|
Using External Java Classes |
|
|
871 | (2) |
|
About the ImageInfo Class |
|
|
873 | (1) |
|
Managing Method-Selection Problems |
|
|
874 | (1) |
|
|
875 | (1) |
|
|
876 | (6) |
|
|
876 | (1) |
|
Installing the Tag Library |
|
|
876 | (1) |
|
Importing the Library with <cfimport> |
|
|
877 | (1) |
|
Using the Tag Library's Tags |
|
|
877 | (1) |
|
Using the Jakarta Image 1.1 Tag Library |
|
|
878 | (2) |
|
Using CFML Expressions in JSP Tag Attributes |
|
|
880 | (2) |
|
Creating Your Own JSP Tag Libraries |
|
|
882 | (1) |
|
Accessing the Underlying Servlet Context |
|
|
882 | (2) |
|
Integrating with Java Servlets and JSP Pages |
|
|
884 | (6) |
|
Understanding Which Variables Can Be Shared |
|
|
884 | (1) |
|
Sharing Request Variables |
|
|
885 | (2) |
|
|
887 | (3) |
|
|
890 | (5) |
|
|
891 | (2) |
|
Making It Easier with a Custom Tag |
|
|
893 | (2) |
|
|
895 | (2) |
|
Extending ColdFusion with CFX |
|
|
897 | (2) |
|
|
899 | (24) |
|
What Is an Event Gateway? |
|
|
899 | (3) |
|
Categories of Event Gateways |
|
|
901 | (1) |
|
Creating a Simple Gateway Application |
|
|
902 | (5) |
|
Creating an Event Gateway Instance |
|
|
905 | (2) |
|
Creating an Initiator Application Using the ColdFusion Gateway |
|
|
907 | (2) |
|
Debugging CFML Applications for Event Gateways |
|
|
909 | (1) |
|
Creating Your Own Custom Gateways |
|
|
910 | (5) |
|
The ColdFusion Event Gateway Architecture |
|
|
910 | (1) |
|
|
910 | (5) |
|
|
915 | (8) |
|
Deploying a Custom Event Gateway |
|
|
920 | (3) |
|
Integrating with SMS and IM |
|
|
923 | (24) |
|
|
924 | (2) |
|
|
925 | (1) |
|
Creating a Development Environment |
|
|
925 | (1) |
|
|
925 | (1) |
|
|
926 | (3) |
|
The Gateway Configuration File |
|
|
927 | (1) |
|
Creating the Gateway Instance |
|
|
928 | (1) |
|
Creating your First IM Application |
|
|
929 | (6) |
|
|
930 | (1) |
|
|
930 | (1) |
|
|
931 | (1) |
|
|
931 | (4) |
|
Creating Interactive Applications |
|
|
935 | (3) |
|
|
938 | (3) |
|
Testing Your SMS Applications |
|
|
940 | (1) |
|
Getting Your Messages Out |
|
|
940 | (1) |
|
|
941 | (2) |
|
|
943 | (1) |
|
Responding to SMS Messages |
|
|
943 | (2) |
|
Ensuring Delivery of Your Messages |
|
|
944 | (1) |
|
Extending Your Application Even Further |
|
|
945 | (2) |
|
|
947 | (10) |
|
Appendix A The WDDX.DTD File |
|
|
949 | (8) |
Index |
|
957 | |