SlideShare a Scribd company logo
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Rupesh Kumar July 25th 2010
http://www.rupeshk.org/ : rukumar
Extending Java with ColdFusion
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Agenda
 Objective
 Using Java from CFML
 Leveraging ColdFusion Features from Java
 Areas to watch out for
 ColdFusion as a Service (CFaaS)
 Q&A
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
ColdFusion is Java
3
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
ColdFusion is Java
 ColdFusion applications are developed in CFML (and likely take
advantage of Java, XML, SOAP, and more).
 At runtime ColdFusion applications are pure Java.
 A J2EE server (internal or external)
 … running a Java application (the ColdFusion engine)
 … invoking Java code (CFML code compiled to Java bytecode).
 CFML exists only at developer time, runtime is pure Java (and deployed
like any other Java application).
 CFML source need not be present at runtime.
 Applications may be packaged and deployed like any other Java
applications.
4
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
5
ColdFusion Leverages Underlying Java
Connectivity
Security
Management
Transactions
Directory
JEE Application
Server
Java App #1
ColdFusion
Java App #2
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 6
JEE Services
Java Runtime
Presentation
(HTML, Reporting, PDF Generation, AJAX, Flash Forms)
Database
Connectivity
Document
Services
PDF/Excel/P
PT/
Word
Network
Services
(http, ftp, mail
–
smtp/pop/ima
p)
Enterprise
Services
(Exchange,
Sharepoint)
SOA
connectivity
(WebServices
FDS, Flash
Remoting)
Event
Gateways
(IM, JMS
SMS)
ColdFusion Runtime
CFML Compiler
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
ColdFusion is Java…
ColdFusion Type Java Type
String String
Number Double
Boolean Boolean
Array List/Vector
Struct Map
Date Date
Query coldfusion.sql.QueryTable
7
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Why CF + Java?
 ColdFusion and Java complement each other
 ColdFusion  Java
 Take advantage of wide set of Java libraries available
 Extend ColdFusion features
 Functionalities that are not baked in ColdFusion could be available in Java
 J2SDK APIs
 There are tons of libraries shipped with ColdFusion – Apache POI, EhCache, Hibernate,
iText, webchart etc
 Other libraries -
 Java  ColdFusion
 Productivity
 Easy to learn.
 Rapid development.
 Huge number of Services available readymade.
 Leverages standards and existing IT and training investments.
8
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 9
ColdFusion Integrated Services
 Database connectivity
 Full text searching (Verity and Solr)
 Printing (PDF)
 Document Services (PDF, Excel,
Word, PPT)
 Reporting (PDF, FlashPaper, RTF,
Excel, HTML, XML)
 Graphing and Charting
 E-Mail (POP, IMAP and SMTP)
 Exchange
 XML manipulation
 Including XSL and XPath
 Imaging
 Sharepoint
 Flash Remoting
 Server-side HTTP and FTP
 LDAP client
 Windows NT/AD authentication
 Gateways
 Socket
 JMS
 Instant messaging (including XMPP)
 SMS
 Asynchronous processing
 S3 Storage Service
 RSS Feed
 Java, COM, .NET, CORBA client
 … and more
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
ColdFusion  Java
 Java CFX Tags
 JSP and Servlets
 JSP Tag Libraries
 Direct Invocation
10
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Direct Invocation
 Object Creation
createObject(“java”, className)
<CFOBJECT type=“Java” class=“className” name=“variable”>
 Method invocation
 obj.foo(arg1, arg2,..)
 Constructors – use init
<cfobject type=”java” class=”java.lang.StringBuffer” name=”buff”>
<cfset buff.init(“CFUnited”)>
 Calling methods
<cfset buff.append(“2010”)>
 Static method
 no need to init() to call static method
integer = createObject(“Java”, “java.lang.Integer”);
intval = integer.parseInt(“10”);
11
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Java Invocation – class loading ColdFusionJava
 ColdFusion’s java invocation needs class to be loaded by ColdFusion
classloader
 Classes need to be placed in a pre-defined directory
 CF Classloader will pick up from <cf_root>/lib folder
 Parent i.e web application classloader will pick up from <cf_root>/WEB-INF/lib
 One might not have permission to do this
 Classes cannot be changed at runtime.
 Server must be restarted to pick up the change
 They cannot be application specific
 You cannot have multiple versions of the same library in the server
12
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
JavaLoader ColdFusionJava
 Project by Mark Mandel :
 http://www.compoundtheory.com/?action=javaloader.index
 Dynamically loads java libraries using its own classloader
 Create JavaLoader object
 createObject("component","javaloader.JavaLoader").
init(loadPaths [,loadColdFusionClassPath]
[,parentClassLoader]);
 Loadpaths : Array of jars or class directories
 loadColdFusionClasspath : true|false whether ColdFusion classloader will be
the parent classloader
 parentClassLoader : the parent classloader object
 Create object
 javaloader.create(className).init(arg1, arg2...);
13
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Java Invocation.. ColdFusionJava
 Watch out for
 Overloaded constructors and methods
 Resolve ambiguity using javacast – javacast(“datatype”, data)
 Java is case sensitive. Classname must be in the correct case
 For method invocation, it is better to use the correct case.
14
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Demo
15
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Java  ColdFusion
 CFCProxy
 TemplateProxy
 Dynamic Proxy
 WebServices (SOAP and REST)
 CFC methods over HTTP
 ColdFusion as a Service (CFaaS)
 Event Gateway
16
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
CFC Proxy
 Allows Java to directly invoke CFC methods
 CFCProxy
 new CFCProxy(“path to cfc");
 invoke(String method, Object[] args)
 Example
CFCProxy myCFC = new CFCProxy("C:test.cfc");
Object[] args = {"CFUnited"};
Object greeting = myCFC.invoke("greet", args);
 ColdFusion classloader should be the context classloader
 Works with cfc’s absolute path
17
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
TemplatePoxy
 Use this when invoked from CF request
 Works with cfc’s absolute path as well as cfc’s fully qualified name.
 Create using TemplateProxyFactory
 TemplateProxy proxy = TemplateProxyFactory.resolveFile(pageContext, file)
 TemplateProxy proxy = TemplateProxyFactory.resolveName(cfcName,
pageContext)
 Invoke
 invoke(String method, Object[] args, PageContext ctx)
18
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Dynamic Proxy
 Part of JavaLoader 1.0
 Makes CFCs behave like Java classes or impl for Java interfaces
 Allows java objects to call cfc methods seamlessly
 Java Frameworks relying on certain contract can leverage CFC
 DynamicProxy = javaloader.create(
"com.compoundtheory.coldfusion.cfc.CFCDynamicProxy");
 DynamicProxy.createInstance(cfc, interfaces)
 DynamicProxy.createInstance(pathToCFC, interfaces)
19
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
CFC methods over HTTP
 A remote method can be invoked directly using http
Component
{
remote String function greet(arg)
{
return "Hello " & arg;
}
}
 Invoke using url
http://localhost:8500/cfunited/hello.cfc?method=greet&a
rg=cfunited
20
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
WebService
 CFC methods exposed as webservice
Component style="document" {
remote String function greet(arg){
return "Hello " & arg;
}
}
 Generate the Java proxies from wsdl
 Axis – Use WSDL2Java
 java org.apache.axis.wsdl.WSDL2Java –p cfunited.hello http://localhost:8500/Hello.cfc?wsdl
HelloServiceLocator locator = new HelloServiceLocator();
cfunited.axis.hello.Hello helloCfc = locator.getHelloCfc();
String msg = helloCfc.greet("CFUnited 2010");
 Java SE6 now natively supports webservices
 Wsimport
 wsimport http://localhost:8500/cfunited/hello.cfc?wsdl -d c:workcfunitedemoclasses -s
c:Workcfunitedemosrc -p cfunited.hello
HelloService helloService = new HelloService();
Hello helloCfc = helloService.getHelloCfc();
String msg = helloCfc.greet("CFUnited 2010");
21
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
ColdFusion as a Service
 CFChart
 CFDocument
 CFImage
 CFMail
 CFPop
 CFPdf
22
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Setup for CFaaS
 Enable services in the admin
 Define IPs for access
 Admin>>security >> Allowed IP Address
 Define users who have permission
 Admin>> security >> User Manager >> add User >> Exposed Services
23
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 24
CFImage
• negative()
• rotate()
• blur()
• grayScale()
• scaletoFit()
• resize()
• overlay()
• flip()
• sharpen()
• shear()
• crop()
• addBorder()
• batchOperation()
 getEXIFTAG()
 getHeight()
 getWidth()
 info()
 getIPTCTag()
 getIPTCMetadata()
 getEXIFMetaData()
http://localhost:8500/CFIDE/services/image.cfc?wsdl
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 25
CFPDF
 protect()
 thumbnail()
 processDDX()
 extractText()
 extractImage()
 setinfo()
 mergeFiles()
 addwatermark()
 extractPages()
 getinfo()
 mergespecificpages()
 deletepages()
 removewatermark()
http://localhost:8500/CFIDE/services/pdf.cfc?wsdl
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Other Services
 CFChart
 http://localhost:8500/cfide/services/cfchart.cfc?wsdl
 generate()
 CFDocument
 http://localhost:8500/cfide/services/document.cfc?wsdl
 Generate()
 CFMail
 http://localhost:8500/cfide/services/mail.cfc?wsdl
 Send()
 CFPOP
 http://localhost:8500/cfide/services/pop.cfc?wsdl
 delete()
 getAll()
 getHeaderOnly()
26
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Summary
27
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Q & A
Q & A
rukumar@adobe.com
http://www.rupeshk.org
rukumar
© 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.
Ad

More Related Content

What's hot (20)

Java Play Restful JPA
Java Play Restful JPAJava Play Restful JPA
Java Play Restful JPA
Faren faren
 
Raj apache
Raj apacheRaj apache
Raj apache
firstplanet
 
Java Play RESTful ebean
Java Play RESTful ebeanJava Play RESTful ebean
Java Play RESTful ebean
Faren faren
 
Sql killedserver
Sql killedserverSql killedserver
Sql killedserver
ColdFusionConference
 
[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova
[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova
[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova
Hazem Saleh
 
JWT - Sécurisez vos APIs
JWT - Sécurisez vos APIsJWT - Sécurisez vos APIs
JWT - Sécurisez vos APIs
André Tapia
 
TorqueBox for Rubyists
TorqueBox for RubyistsTorqueBox for Rubyists
TorqueBox for Rubyists
bobmcwhirter
 
Hidden Gems in ColdFusion 2016
Hidden Gems in ColdFusion 2016Hidden Gems in ColdFusion 2016
Hidden Gems in ColdFusion 2016
ColdFusionConference
 
[JavaLand 2015] Developing JavaScript Mobile Apps Using Apache Cordova
[JavaLand 2015] Developing JavaScript Mobile Apps Using Apache Cordova[JavaLand 2015] Developing JavaScript Mobile Apps Using Apache Cordova
[JavaLand 2015] Developing JavaScript Mobile Apps Using Apache Cordova
Hazem Saleh
 
EJB et WS (Montreal JUG - 12 mai 2011)
EJB et WS (Montreal JUG - 12 mai 2011)EJB et WS (Montreal JUG - 12 mai 2011)
EJB et WS (Montreal JUG - 12 mai 2011)
Montreal JUG
 
Web API Test Automation using Frisby & Node.js
Web API Test Automation using Frisby  & Node.jsWeb API Test Automation using Frisby  & Node.js
Web API Test Automation using Frisby & Node.js
Chi Lang Le Vu Tran
 
Design Summit - RESTful API Overview - John Hardy
Design Summit - RESTful API Overview - John HardyDesign Summit - RESTful API Overview - John Hardy
Design Summit - RESTful API Overview - John Hardy
ManageIQ
 
TorqueBox: The beauty of Ruby with the power of JBoss. Presented at Devnexus...
TorqueBox: The beauty of Ruby with the power of JBoss.  Presented at Devnexus...TorqueBox: The beauty of Ruby with the power of JBoss.  Presented at Devnexus...
TorqueBox: The beauty of Ruby with the power of JBoss. Presented at Devnexus...
bobmcwhirter
 
Devignition 2011
Devignition 2011Devignition 2011
Devignition 2011
tobiascrawley
 
[Devoxx Morocco 2015] Apache Cordova In Action
[Devoxx Morocco 2015] Apache Cordova In Action[Devoxx Morocco 2015] Apache Cordova In Action
[Devoxx Morocco 2015] Apache Cordova In Action
Hazem Saleh
 
Apache Presentation
Apache PresentationApache Presentation
Apache Presentation
Manish Bothra
 
Introduction to nu soap
Introduction to nu soapIntroduction to nu soap
Introduction to nu soap
vikash_pri14
 
Information security programming in ruby
Information security programming in rubyInformation security programming in ruby
Information security programming in ruby
Hiroshi Nakamura
 
Gradle in a Polyglot World
Gradle in a Polyglot WorldGradle in a Polyglot World
Gradle in a Polyglot World
Schalk Cronjé
 
ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)
ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)
ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)
ZFConf Conference
 
Java Play Restful JPA
Java Play Restful JPAJava Play Restful JPA
Java Play Restful JPA
Faren faren
 
Java Play RESTful ebean
Java Play RESTful ebeanJava Play RESTful ebean
Java Play RESTful ebean
Faren faren
 
[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova
[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova
[JMaghreb 2014] Developing JavaScript Mobile Apps Using Apache Cordova
Hazem Saleh
 
JWT - Sécurisez vos APIs
JWT - Sécurisez vos APIsJWT - Sécurisez vos APIs
JWT - Sécurisez vos APIs
André Tapia
 
TorqueBox for Rubyists
TorqueBox for RubyistsTorqueBox for Rubyists
TorqueBox for Rubyists
bobmcwhirter
 
[JavaLand 2015] Developing JavaScript Mobile Apps Using Apache Cordova
[JavaLand 2015] Developing JavaScript Mobile Apps Using Apache Cordova[JavaLand 2015] Developing JavaScript Mobile Apps Using Apache Cordova
[JavaLand 2015] Developing JavaScript Mobile Apps Using Apache Cordova
Hazem Saleh
 
EJB et WS (Montreal JUG - 12 mai 2011)
EJB et WS (Montreal JUG - 12 mai 2011)EJB et WS (Montreal JUG - 12 mai 2011)
EJB et WS (Montreal JUG - 12 mai 2011)
Montreal JUG
 
Web API Test Automation using Frisby & Node.js
Web API Test Automation using Frisby  & Node.jsWeb API Test Automation using Frisby  & Node.js
Web API Test Automation using Frisby & Node.js
Chi Lang Le Vu Tran
 
Design Summit - RESTful API Overview - John Hardy
Design Summit - RESTful API Overview - John HardyDesign Summit - RESTful API Overview - John Hardy
Design Summit - RESTful API Overview - John Hardy
ManageIQ
 
TorqueBox: The beauty of Ruby with the power of JBoss. Presented at Devnexus...
TorqueBox: The beauty of Ruby with the power of JBoss.  Presented at Devnexus...TorqueBox: The beauty of Ruby with the power of JBoss.  Presented at Devnexus...
TorqueBox: The beauty of Ruby with the power of JBoss. Presented at Devnexus...
bobmcwhirter
 
[Devoxx Morocco 2015] Apache Cordova In Action
[Devoxx Morocco 2015] Apache Cordova In Action[Devoxx Morocco 2015] Apache Cordova In Action
[Devoxx Morocco 2015] Apache Cordova In Action
Hazem Saleh
 
Introduction to nu soap
Introduction to nu soapIntroduction to nu soap
Introduction to nu soap
vikash_pri14
 
Information security programming in ruby
Information security programming in rubyInformation security programming in ruby
Information security programming in ruby
Hiroshi Nakamura
 
Gradle in a Polyglot World
Gradle in a Polyglot WorldGradle in a Polyglot World
Gradle in a Polyglot World
Schalk Cronjé
 
ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)
ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)
ZFConf 2012: Dependency Management в PHP и Zend Framework 2 (Кирилл Чебунин)
ZFConf Conference
 

Similar to Extending Java From ColdFusion - CFUnited 2010 (20)

ColdFusion Internals
ColdFusion InternalsColdFusion Internals
ColdFusion Internals
ColdFusionConference
 
ColdFusion 10
ColdFusion 10ColdFusion 10
ColdFusion 10
Raymond Camden
 
ColdFusion .NET integration - Adobe Max 2006
ColdFusion .NET integration - Adobe Max 2006ColdFusion .NET integration - Adobe Max 2006
ColdFusion .NET integration - Adobe Max 2006
Rupesh Kumar
 
Developing html5 mobile applications using cold fusion 11
Developing html5 mobile applications using cold fusion 11Developing html5 mobile applications using cold fusion 11
Developing html5 mobile applications using cold fusion 11
ColdFusionConference
 
Play Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaPlay Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and Scala
Yevgeniy Brikman
 
How we rest
How we restHow we rest
How we rest
ColdFusionConference
 
FATC UK - Real time collaborative Flex apps
FATC UK - Real time collaborative Flex appsFATC UK - Real time collaborative Flex apps
FATC UK - Real time collaborative Flex apps
Michael Chaize
 
How we REST
How we RESTHow we REST
How we REST
devObjective
 
This is how we REST
This is how we RESTThis is how we REST
This is how we REST
ColdFusionConference
 
Apache Felix Web Console
Apache Felix Web ConsoleApache Felix Web Console
Apache Felix Web Console
Felix Meschberger
 
Selenium
SeleniumSelenium
Selenium
Ruturaj Doshi
 
Apache Cordova In Action
Apache Cordova In ActionApache Cordova In Action
Apache Cordova In Action
Hazem Saleh
 
Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014
Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014
Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014
Hazem Saleh
 
Java Cloud and Container Ready
Java Cloud and Container ReadyJava Cloud and Container Ready
Java Cloud and Container Ready
CodeOps Technologies LLP
 
Oop2008 RESTful services with GWT and Apache CXF
Oop2008 RESTful services with GWT and Apache CXFOop2008 RESTful services with GWT and Apache CXF
Oop2008 RESTful services with GWT and Apache CXF
Adrian Trenaman
 
Scala, Apache Spark, The PlayFramework and Docker in IBM Platform As A Service
Scala, Apache Spark, The PlayFramework and Docker in IBM Platform As A ServiceScala, Apache Spark, The PlayFramework and Docker in IBM Platform As A Service
Scala, Apache Spark, The PlayFramework and Docker in IBM Platform As A Service
Romeo Kienzler
 
All about CFThread - CFUnited 2008
All about CFThread - CFUnited 2008All about CFThread - CFUnited 2008
All about CFThread - CFUnited 2008
Rupesh Kumar
 
RESTful web apps with Apache Sling - 2013 version
RESTful web apps with Apache Sling - 2013 versionRESTful web apps with Apache Sling - 2013 version
RESTful web apps with Apache Sling - 2013 version
Bertrand Delacretaz
 
Accelerate your ColdFusion Applications using Caching
Accelerate your ColdFusion Applications using CachingAccelerate your ColdFusion Applications using Caching
Accelerate your ColdFusion Applications using Caching
ColdFusionConference
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applications
hchen1
 
ColdFusion .NET integration - Adobe Max 2006
ColdFusion .NET integration - Adobe Max 2006ColdFusion .NET integration - Adobe Max 2006
ColdFusion .NET integration - Adobe Max 2006
Rupesh Kumar
 
Developing html5 mobile applications using cold fusion 11
Developing html5 mobile applications using cold fusion 11Developing html5 mobile applications using cold fusion 11
Developing html5 mobile applications using cold fusion 11
ColdFusionConference
 
Play Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaPlay Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and Scala
Yevgeniy Brikman
 
FATC UK - Real time collaborative Flex apps
FATC UK - Real time collaborative Flex appsFATC UK - Real time collaborative Flex apps
FATC UK - Real time collaborative Flex apps
Michael Chaize
 
Apache Cordova In Action
Apache Cordova In ActionApache Cordova In Action
Apache Cordova In Action
Hazem Saleh
 
Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014
Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014
Developing Native Mobile Apps Using JavaScript, ApacheCon NA 2014
Hazem Saleh
 
Oop2008 RESTful services with GWT and Apache CXF
Oop2008 RESTful services with GWT and Apache CXFOop2008 RESTful services with GWT and Apache CXF
Oop2008 RESTful services with GWT and Apache CXF
Adrian Trenaman
 
Scala, Apache Spark, The PlayFramework and Docker in IBM Platform As A Service
Scala, Apache Spark, The PlayFramework and Docker in IBM Platform As A ServiceScala, Apache Spark, The PlayFramework and Docker in IBM Platform As A Service
Scala, Apache Spark, The PlayFramework and Docker in IBM Platform As A Service
Romeo Kienzler
 
All about CFThread - CFUnited 2008
All about CFThread - CFUnited 2008All about CFThread - CFUnited 2008
All about CFThread - CFUnited 2008
Rupesh Kumar
 
RESTful web apps with Apache Sling - 2013 version
RESTful web apps with Apache Sling - 2013 versionRESTful web apps with Apache Sling - 2013 version
RESTful web apps with Apache Sling - 2013 version
Bertrand Delacretaz
 
Accelerate your ColdFusion Applications using Caching
Accelerate your ColdFusion Applications using CachingAccelerate your ColdFusion Applications using Caching
Accelerate your ColdFusion Applications using Caching
ColdFusionConference
 
Developing Java Web Applications
Developing Java Web ApplicationsDeveloping Java Web Applications
Developing Java Web Applications
hchen1
 
Ad

More from Rupesh Kumar (6)

Language enhancement in ColdFusion 8
Language enhancement in ColdFusion 8Language enhancement in ColdFusion 8
Language enhancement in ColdFusion 8
Rupesh Kumar
 
ColdFusion 11 Overview - CFSummit 2013
ColdFusion 11 Overview - CFSummit 2013ColdFusion 11 Overview - CFSummit 2013
ColdFusion 11 Overview - CFSummit 2013
Rupesh Kumar
 
Keeping Current with ColdFusion - Adobe Max 2011
Keeping Current with ColdFusion - Adobe Max 2011Keeping Current with ColdFusion - Adobe Max 2011
Keeping Current with ColdFusion - Adobe Max 2011
Rupesh Kumar
 
ColdFusion ORM - Advanced : Adobe Max 2009
ColdFusion ORM - Advanced : Adobe Max 2009ColdFusion ORM - Advanced : Adobe Max 2009
ColdFusion ORM - Advanced : Adobe Max 2009
Rupesh Kumar
 
ColdFusion ORM - Part II
ColdFusion ORM - Part II  ColdFusion ORM - Part II
ColdFusion ORM - Part II
Rupesh Kumar
 
ColdFusion 9 ORM
ColdFusion 9 ORMColdFusion 9 ORM
ColdFusion 9 ORM
Rupesh Kumar
 
Language enhancement in ColdFusion 8
Language enhancement in ColdFusion 8Language enhancement in ColdFusion 8
Language enhancement in ColdFusion 8
Rupesh Kumar
 
ColdFusion 11 Overview - CFSummit 2013
ColdFusion 11 Overview - CFSummit 2013ColdFusion 11 Overview - CFSummit 2013
ColdFusion 11 Overview - CFSummit 2013
Rupesh Kumar
 
Keeping Current with ColdFusion - Adobe Max 2011
Keeping Current with ColdFusion - Adobe Max 2011Keeping Current with ColdFusion - Adobe Max 2011
Keeping Current with ColdFusion - Adobe Max 2011
Rupesh Kumar
 
ColdFusion ORM - Advanced : Adobe Max 2009
ColdFusion ORM - Advanced : Adobe Max 2009ColdFusion ORM - Advanced : Adobe Max 2009
ColdFusion ORM - Advanced : Adobe Max 2009
Rupesh Kumar
 
ColdFusion ORM - Part II
ColdFusion ORM - Part II  ColdFusion ORM - Part II
ColdFusion ORM - Part II
Rupesh Kumar
 
Ad

Recently uploaded (20)

Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
Alan Dix
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 
Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)Into The Box Conference Keynote Day 1 (ITB2025)
Into The Box Conference Keynote Day 1 (ITB2025)
Ortus Solutions, Corp
 
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
#StandardsGoals for 2025: Standards & certification roundup - Tech Forum 2025
BookNet Canada
 
Role of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered ManufacturingRole of Data Annotation Services in AI-Powered Manufacturing
Role of Data Annotation Services in AI-Powered Manufacturing
Andrew Leo
 
Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.Greenhouse_Monitoring_Presentation.pptx.
Greenhouse_Monitoring_Presentation.pptx.
hpbmnnxrvb
 
Quantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur MorganQuantum Computing Quick Research Guide by Arthur Morgan
Quantum Computing Quick Research Guide by Arthur Morgan
Arthur Morgan
 
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptxSpecial Meetup Edition - TDX Bengaluru Meetup #52.pptx
Special Meetup Edition - TDX Bengaluru Meetup #52.pptx
shyamraj55
 
Generative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in BusinessGenerative Artificial Intelligence (GenAI) in Business
Generative Artificial Intelligence (GenAI) in Business
Dr. Tathagat Varma
 
Procurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptxProcurement Insights Cost To Value Guide.pptx
Procurement Insights Cost To Value Guide.pptx
Jon Hansen
 
Semantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AISemantic Cultivators : The Critical Future Role to Enable AI
Semantic Cultivators : The Critical Future Role to Enable AI
artmondano
 
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdfComplete Guide to Advanced Logistics Management Software in Riyadh.pdf
Complete Guide to Advanced Logistics Management Software in Riyadh.pdf
Software Company
 
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
AI Changes Everything – Talk at Cardiff Metropolitan University, 29th April 2...
Alan Dix
 
How analogue intelligence complements AI
How analogue intelligence complements AIHow analogue intelligence complements AI
How analogue intelligence complements AI
Paul Rowe
 
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
Transcript: #StandardsGoals for 2025: Standards & certification roundup - Tec...
BookNet Canada
 
Cyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of securityCyber Awareness overview for 2025 month of security
Cyber Awareness overview for 2025 month of security
riccardosl1
 
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In FranceManifest Pre-Seed Update | A Humanoid OEM Deeptech In France
Manifest Pre-Seed Update | A Humanoid OEM Deeptech In France
chb3
 
Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025Splunk Security Update | Public Sector Summit Germany 2025
Splunk Security Update | Public Sector Summit Germany 2025
Splunk
 
Build Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For DevsBuild Your Own Copilot & Agents For Devs
Build Your Own Copilot & Agents For Devs
Brian McKeiver
 
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes Partner Innovation Updates for May 2025
ThousandEyes
 
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptxIncreasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Increasing Retail Store Efficiency How can Planograms Save Time and Money.pptx
Anoop Ashok
 
2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx2025-05-Q4-2024-Investor-Presentation.pptx
2025-05-Q4-2024-Investor-Presentation.pptx
Samuele Fogagnolo
 

Extending Java From ColdFusion - CFUnited 2010

  • 1. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Rupesh Kumar July 25th 2010 http://www.rupeshk.org/ : rukumar Extending Java with ColdFusion
  • 2. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Agenda  Objective  Using Java from CFML  Leveraging ColdFusion Features from Java  Areas to watch out for  ColdFusion as a Service (CFaaS)  Q&A
  • 3. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. ColdFusion is Java 3
  • 4. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. ColdFusion is Java  ColdFusion applications are developed in CFML (and likely take advantage of Java, XML, SOAP, and more).  At runtime ColdFusion applications are pure Java.  A J2EE server (internal or external)  … running a Java application (the ColdFusion engine)  … invoking Java code (CFML code compiled to Java bytecode).  CFML exists only at developer time, runtime is pure Java (and deployed like any other Java application).  CFML source need not be present at runtime.  Applications may be packaged and deployed like any other Java applications. 4
  • 5. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 5 ColdFusion Leverages Underlying Java Connectivity Security Management Transactions Directory JEE Application Server Java App #1 ColdFusion Java App #2
  • 6. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 6 JEE Services Java Runtime Presentation (HTML, Reporting, PDF Generation, AJAX, Flash Forms) Database Connectivity Document Services PDF/Excel/P PT/ Word Network Services (http, ftp, mail – smtp/pop/ima p) Enterprise Services (Exchange, Sharepoint) SOA connectivity (WebServices FDS, Flash Remoting) Event Gateways (IM, JMS SMS) ColdFusion Runtime CFML Compiler
  • 7. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. ColdFusion is Java… ColdFusion Type Java Type String String Number Double Boolean Boolean Array List/Vector Struct Map Date Date Query coldfusion.sql.QueryTable 7
  • 8. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Why CF + Java?  ColdFusion and Java complement each other  ColdFusion  Java  Take advantage of wide set of Java libraries available  Extend ColdFusion features  Functionalities that are not baked in ColdFusion could be available in Java  J2SDK APIs  There are tons of libraries shipped with ColdFusion – Apache POI, EhCache, Hibernate, iText, webchart etc  Other libraries -  Java  ColdFusion  Productivity  Easy to learn.  Rapid development.  Huge number of Services available readymade.  Leverages standards and existing IT and training investments. 8
  • 9. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 9 ColdFusion Integrated Services  Database connectivity  Full text searching (Verity and Solr)  Printing (PDF)  Document Services (PDF, Excel, Word, PPT)  Reporting (PDF, FlashPaper, RTF, Excel, HTML, XML)  Graphing and Charting  E-Mail (POP, IMAP and SMTP)  Exchange  XML manipulation  Including XSL and XPath  Imaging  Sharepoint  Flash Remoting  Server-side HTTP and FTP  LDAP client  Windows NT/AD authentication  Gateways  Socket  JMS  Instant messaging (including XMPP)  SMS  Asynchronous processing  S3 Storage Service  RSS Feed  Java, COM, .NET, CORBA client  … and more
  • 10. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. ColdFusion  Java  Java CFX Tags  JSP and Servlets  JSP Tag Libraries  Direct Invocation 10
  • 11. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Direct Invocation  Object Creation createObject(“java”, className) <CFOBJECT type=“Java” class=“className” name=“variable”>  Method invocation  obj.foo(arg1, arg2,..)  Constructors – use init <cfobject type=”java” class=”java.lang.StringBuffer” name=”buff”> <cfset buff.init(“CFUnited”)>  Calling methods <cfset buff.append(“2010”)>  Static method  no need to init() to call static method integer = createObject(“Java”, “java.lang.Integer”); intval = integer.parseInt(“10”); 11
  • 12. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Java Invocation – class loading ColdFusionJava  ColdFusion’s java invocation needs class to be loaded by ColdFusion classloader  Classes need to be placed in a pre-defined directory  CF Classloader will pick up from <cf_root>/lib folder  Parent i.e web application classloader will pick up from <cf_root>/WEB-INF/lib  One might not have permission to do this  Classes cannot be changed at runtime.  Server must be restarted to pick up the change  They cannot be application specific  You cannot have multiple versions of the same library in the server 12
  • 13. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. JavaLoader ColdFusionJava  Project by Mark Mandel :  http://www.compoundtheory.com/?action=javaloader.index  Dynamically loads java libraries using its own classloader  Create JavaLoader object  createObject("component","javaloader.JavaLoader"). init(loadPaths [,loadColdFusionClassPath] [,parentClassLoader]);  Loadpaths : Array of jars or class directories  loadColdFusionClasspath : true|false whether ColdFusion classloader will be the parent classloader  parentClassLoader : the parent classloader object  Create object  javaloader.create(className).init(arg1, arg2...); 13
  • 14. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Java Invocation.. ColdFusionJava  Watch out for  Overloaded constructors and methods  Resolve ambiguity using javacast – javacast(“datatype”, data)  Java is case sensitive. Classname must be in the correct case  For method invocation, it is better to use the correct case. 14
  • 15. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Demo 15
  • 16. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Java  ColdFusion  CFCProxy  TemplateProxy  Dynamic Proxy  WebServices (SOAP and REST)  CFC methods over HTTP  ColdFusion as a Service (CFaaS)  Event Gateway 16
  • 17. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. CFC Proxy  Allows Java to directly invoke CFC methods  CFCProxy  new CFCProxy(“path to cfc");  invoke(String method, Object[] args)  Example CFCProxy myCFC = new CFCProxy("C:test.cfc"); Object[] args = {"CFUnited"}; Object greeting = myCFC.invoke("greet", args);  ColdFusion classloader should be the context classloader  Works with cfc’s absolute path 17
  • 18. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. TemplatePoxy  Use this when invoked from CF request  Works with cfc’s absolute path as well as cfc’s fully qualified name.  Create using TemplateProxyFactory  TemplateProxy proxy = TemplateProxyFactory.resolveFile(pageContext, file)  TemplateProxy proxy = TemplateProxyFactory.resolveName(cfcName, pageContext)  Invoke  invoke(String method, Object[] args, PageContext ctx) 18
  • 19. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Dynamic Proxy  Part of JavaLoader 1.0  Makes CFCs behave like Java classes or impl for Java interfaces  Allows java objects to call cfc methods seamlessly  Java Frameworks relying on certain contract can leverage CFC  DynamicProxy = javaloader.create( "com.compoundtheory.coldfusion.cfc.CFCDynamicProxy");  DynamicProxy.createInstance(cfc, interfaces)  DynamicProxy.createInstance(pathToCFC, interfaces) 19
  • 20. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. CFC methods over HTTP  A remote method can be invoked directly using http Component { remote String function greet(arg) { return "Hello " & arg; } }  Invoke using url http://localhost:8500/cfunited/hello.cfc?method=greet&a rg=cfunited 20
  • 21. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. WebService  CFC methods exposed as webservice Component style="document" { remote String function greet(arg){ return "Hello " & arg; } }  Generate the Java proxies from wsdl  Axis – Use WSDL2Java  java org.apache.axis.wsdl.WSDL2Java –p cfunited.hello http://localhost:8500/Hello.cfc?wsdl HelloServiceLocator locator = new HelloServiceLocator(); cfunited.axis.hello.Hello helloCfc = locator.getHelloCfc(); String msg = helloCfc.greet("CFUnited 2010");  Java SE6 now natively supports webservices  Wsimport  wsimport http://localhost:8500/cfunited/hello.cfc?wsdl -d c:workcfunitedemoclasses -s c:Workcfunitedemosrc -p cfunited.hello HelloService helloService = new HelloService(); Hello helloCfc = helloService.getHelloCfc(); String msg = helloCfc.greet("CFUnited 2010"); 21
  • 22. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. ColdFusion as a Service  CFChart  CFDocument  CFImage  CFMail  CFPop  CFPdf 22
  • 23. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Setup for CFaaS  Enable services in the admin  Define IPs for access  Admin>>security >> Allowed IP Address  Define users who have permission  Admin>> security >> User Manager >> add User >> Exposed Services 23
  • 24. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 24 CFImage • negative() • rotate() • blur() • grayScale() • scaletoFit() • resize() • overlay() • flip() • sharpen() • shear() • crop() • addBorder() • batchOperation()  getEXIFTAG()  getHeight()  getWidth()  info()  getIPTCTag()  getIPTCMetadata()  getEXIFMetaData() http://localhost:8500/CFIDE/services/image.cfc?wsdl
  • 25. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. 25 CFPDF  protect()  thumbnail()  processDDX()  extractText()  extractImage()  setinfo()  mergeFiles()  addwatermark()  extractPages()  getinfo()  mergespecificpages()  deletepages()  removewatermark() http://localhost:8500/CFIDE/services/pdf.cfc?wsdl
  • 26. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Other Services  CFChart  http://localhost:8500/cfide/services/cfchart.cfc?wsdl  generate()  CFDocument  http://localhost:8500/cfide/services/document.cfc?wsdl  Generate()  CFMail  http://localhost:8500/cfide/services/mail.cfc?wsdl  Send()  CFPOP  http://localhost:8500/cfide/services/pop.cfc?wsdl  delete()  getAll()  getHeaderOnly() 26
  • 27. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Summary 27
  • 28. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential. Q & A Q & A [email protected] http://www.rupeshk.org rukumar
  • 29. © 2010 Adobe Systems Incorporated. All Rights Reserved. Adobe Confidential.