SlideShare a Scribd company logo
1 of 38
Download to read offline
1   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Leverage Enterprise
Integration Patterns with
Apache Camel and Twitter
Bruno Borges
Oracle Product Manager for Latin America
Java EE, GlassFish, WebLogic, Coherence



2   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Who am I?
        Bruno Borges


           Java developer since 2000
           Speaker at Conferences
                    – JustJava, JavaOne Brazil, The Developers’ Conference, ApacheCon
           Evangelized Apache Camel and Apache Wicket in Brazil
           Joined Oracle on July 2012
                    – Product Manager for Java EE, GlassFish and WebLogic – Latin America
           Married, lives in Sao Paulo, has a Golden Retriever, hiker and gamer



3   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Agenda


         Enterprise Integration Patterns
         Introduction to Apache Camel
         Social Media and Social Data
         Camel Twitter
         Demonstration



4   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Enterprise
        Integration
        Patterns




5   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
“If you are involved with the operation or development of an
         enterprise application, there will doubtless come a time
         when you will need to integrate your application with another
         using the emerging preferred approach of messaging.”

           Randy Stafford
           Oracle




6   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Enterprise Integration Patterns
        Integration, integration, integration…


           Why do we need patterns for integration?
           Why is it so hard?
           Asynchronous messages
           Where and when to use them?
           Cloud Computing depends on it




7   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Apache Camel
        http://camel.apache.org




8   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
What is Apache Camel?
        A Java framework that enables the developer to:


           Use implementations of Enterprise Integration Patterns
           Design routes for Enterprise Integration Patterns
           Use out-of-the-box or develop components and endpoints
           Process asynchronous and synchronous messages
           Connect distinct and independent systems
           Receive, transform and deliver data




9   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Quick overview of Apache Camel
         The core of Camel is about


            Components
            Endpoints
            Routes
            Exchanges and Messages
            Consumers
            Producers
            Processors



10   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
What can you do with Apache Camel?
         Example of exchanging and filtering messages between queues




                                                                Queue A     Queue B




11   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
What can you do with Apache Camel?
         Example of exchanging a message between queues




                                                                Queue A              Queue B


                                                            from                        to
                                                                            filter
                                                           queue A                   queue B

12   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
What can you do with Apache Camel?
         Example of exchanging a message between queues




                                                                Queue A                Queue B



                                                     from(qA)               filter()   to(qB)


13   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Example using Spring
         Because you love XML

            <camelContext xmlns="http://camel.apache.org/schema/spring">
                <route>
                    <from uri="file:///var/usr/inbox/"/>
                    <choice>
                        <when> <xpath>$foo = 'widget'</xpath>
                               <to uri="seda:widget"/> </when>
                        <when> <xpath>$foo = 'gadget'</xpath>
                               <to uri="seda:gadget"/> </when>
                        <otherwise> <to uri="seda:lixo"/> </otherwise>
                    </choice>
                </route>
            </camelContext>




14   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Examples using Scala
         With the Scala DSL


            "direct:a" when(_.in ==
            "<hello/>") to("direct:b")

            "direct:b" ==> {
              when(_.in == "<hallo/>") {
                to ("mock:c")
              } otherwise {
                to ("mock:e")
              }
              to ("mock:d")
            }

15   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Apache Camel
         Implementation of Enterprise Integration Patterns


            DSLs for Java, Spring XML and Scala
            Standard URIs for Endpoints
            Message routing based on Predicates and Expressions
            Lots of components
                     – JMS, HTTP, MINA, JDBC, FTP, WebServices, EJB, JPA, Hibernate, IRC,
                             JCR, AS/400, LDAP, Mail, Nagios, POP, Printers, Quartz, Restlet, RMI,
                             RSS, Scalate, XMPP…
            Integrates with CDI
                     – CamelContext can be started with EJB3’s @Startup/@Singleton

16   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Social Media and
         Social Data




17   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Social Media
         The Rise of Social Media as a Communications Channels


            29% of consumers post negative comments on social networks
            49% of 16-24 y’o have posted negative comment following bad CX
            71% that had complaints on social networks were ignored


            Of 29% who did get responses, 51% had positive reaction after
            17% of those who had a response, wrote a positive comment
            13% deleted their negative post

Source: 2011 Customer Experience Index Report “The Era of Impatience”
http://www.oracle.com/us/products/applications/uk-cei-report-1641675.pdf
18   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Social Data
         Reading and processing all that data


            Twitter for instance
                     – Twitter, on average, receives 3,9k tweets per second
                     – Peaks during main events can reach 20k tweets per second
                     – This can more than 300 million tweets per day
                     – One tweet may have 140 characters
                                   560 bytes (Twitter uses UTF-8)
                     – Per day, more than 150 GB of raw text tweets
                                   Not counting indexing and storage overhead
            Let’s not forget about Facebook, Google+, LinkedIn and many others
19   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Social Data


         “It is not information overload.
           It’s filter failure”


            Clay Shirky
            Independent Consultant, Teacher and Writer




20   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Filtering and Processing Social Data
         It looks like a lot with Enterprise Integration Patterns, isn’t?


            Read status updates
            Filter based on general keywords
            Identify the issue based on their content
            Route to who will best process that tweet
            Reply if possible
            Store for future conversations with original sender
                     – Store retweets that mention users who thought the same thing
            Customize as needed

21   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Camel Twitter
         Component for Apache Camel




22   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Camel Twitter
         The initial idea: March 2009                                       http://blog.brunoborges.com.br/2009/03/leverage-
                                                                            eip-with-apache-camel-and.html




23   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Camel Twitter
         The initial idea: March 2009                                       http://blog.brunoborges.com.br/2009/03/leverage-
                                                                            eip-with-apache-camel-and.html




24   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Camel Twitter
         Proposed as a Camel Component to the ASF in 2009


            CAMEL-1520
                     – https://issues.apache.org/jira/browse/CAMEL-1520
            Presented at ApacheCon NA’09 during the BarCamp
            Discussions with Camel committers at ApacheCon led me to build a
             broader component, that could support other social networks
            Challenge: same URIs and features for different Social Networks
             (“social data providers”). Starting with Facebook, Twitter, LinkedIn,
             Foursquare, and (the already dead) Google Buzz


25   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Camel Social
         How would it look like?


            Started in 2010
            Goal
                     – The Camel Social component objective was to be able to poll social data
                             from several networks in a uniform way to be processed through a route
            URI format
                     – social://[social provider] [/social path]?parameters
            Features
                     – Post, Read, Search


26   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Camel Social
         Examples


            Sending a tweet
            "direct:foo" to "social://twitter/status"

            Reading a Facebook Timeline
            "social://facebook/timeline/brunocborges" ==> {
               to("log:facebookWall")
            }
            Searching for events on Facebook
             "direct:doSearch" to "social://facebook/events"
                                                                            to "log:events"


27   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Camel Social
         An unsuccessful attempt

                                                                            http://code.google.com/p/camel-social
            Problem
                     – It was very hard to design an standard API for different Social Nets
            Died in 2010
            What about Spring Social?
                     – Didn’t exist back then
                     – Now they have an abstract API for Social Providers and for OAuth
                     – One extra API per Social Network
                     – It “could” bring the component back to life


28   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Camel Twitter
         A rebirth, thanks to GitHub


            May 2011 – project rebooted on GitHub
                     – Focus only on Twitter
            http://github.com/brunoborges/camel-twitter
                                                                            @brettemeyer
            Kudos to Brett Meyer, who finished the job
            Bilgin Ibryam added support for the Twitter Streaming API


            Thank you guys! I owe you two a beer :-)




29   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Camel Twitter
         Final version


            Available since Apache Camel 2.10
            Features
                     – Send a tweet (update status)
                     – Send and read Direct Messages (DMs)
                     – Search using REST (polling) or Streaming
                     – Sample streaming from public tweets
                     – Timeline reads for home, mentions, retweets, specific user
            Uses the well-know Twitter4J library (Apache licensed)


30   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Examples
         Using the Scala DSL

          Sending a tweet
          "jms:queue:tweetingQueue1" to "twitter://timeline/user"

          Reading a Timeline
          "twitter://timeline/home?type=polling&delay=5" ==> {
             to("log:homeTweets")
          }
          Searching for keywords
                  "direct:doSearch" to "twitter://search?keywords=JavaOne“
                                                                            to "log:homeTweets"



31   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Camel Twitter Demo
         Searching for pictures about Batman




32   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
Camel Twitter Demo
         How it works


            Connects to the Search Streaming channel based on keywords
            Filter for tweets with media only
            Check Coherence Cache and filter duplicates
            Put image/tweet URL as key/value on Coherence Cache
            Transform tweets into small POJOs
            Transform POJOs into JSON Strings
            Sends to users connected to the WebSocket channel

           * based on the Camelympics project developed by Bilgin Ibryam
                https://github.com/bibryam/camelympics
33   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
About Camel Coherence Component
         The #1 Distributed Caching technology


            A fork of the Camel Cache component
                     – Instead of EHCache, now uses Oracle Coherence
            Same features as the core component
                     – Operations: add, check, get, remove, removeAll
                     – URI: coherence://cacheName
            Coherence is LRU by default (‘local-scheme’)
                     – Great for the demo! Stores the recent tweets without blowing the Heap
                     – If more storage is needed, deploy new Coherence Cache instance


34   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
QUESTIONS?




35   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
THANK YOU!
         @brunoborges
         blogs.oracle.com/brunoborges




36   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
The preceding is intended to outline our general product direction. It is intended
         for information purposes only, and may not be incorporated into any contract.
         It is not a commitment to deliver any material, code, or functionality, and should
         not be relied upon in making purchasing decisions. The development, release,
         and timing of any features or functionality described for Oracle’s products
         remains at the sole discretion of Oracle.




37   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
38   Copyright © 2012, Oracle and/or its affiliates. All rights reserved.

More Related Content

What's hot

Java: Create The Future Keynote
Java: Create The Future KeynoteJava: Create The Future Keynote
Java: Create The Future KeynoteSimon Ritter
 
Oracle ADF Architecture TV - Design - ADF BC Application Module Design
Oracle ADF Architecture TV - Design - ADF BC Application Module DesignOracle ADF Architecture TV - Design - ADF BC Application Module Design
Oracle ADF Architecture TV - Design - ADF BC Application Module DesignChris Muir
 
Ed presents JSF 2.2 and WebSocket to Gameduell.
Ed presents JSF 2.2 and WebSocket to Gameduell.Ed presents JSF 2.2 and WebSocket to Gameduell.
Ed presents JSF 2.2 and WebSocket to Gameduell.Edward Burns
 
Ankara JUG Ağustos 2013 - Oracle ADF
Ankara JUG Ağustos 2013 - Oracle ADFAnkara JUG Ağustos 2013 - Oracle ADF
Ankara JUG Ağustos 2013 - Oracle ADFAnkara JUG
 
JSF 2.2 Input Output JavaLand 2015
JSF 2.2 Input Output JavaLand 2015JSF 2.2 Input Output JavaLand 2015
JSF 2.2 Input Output JavaLand 2015Edward Burns
 
Burns jsf-confess-2015
Burns jsf-confess-2015Burns jsf-confess-2015
Burns jsf-confess-2015Edward Burns
 
Functional programming with_jdk8-s_ritter
Functional programming with_jdk8-s_ritterFunctional programming with_jdk8-s_ritter
Functional programming with_jdk8-s_ritterSimon Ritter
 
Oracle ADF Architecture TV - Design - Architecting for ADF Mobile Integration
Oracle ADF Architecture TV - Design - Architecting for ADF Mobile IntegrationOracle ADF Architecture TV - Design - Architecting for ADF Mobile Integration
Oracle ADF Architecture TV - Design - Architecting for ADF Mobile IntegrationChris Muir
 
Oracle ADF Architecture TV - Design - Task Flow Navigation Options
Oracle ADF Architecture TV - Design - Task Flow Navigation OptionsOracle ADF Architecture TV - Design - Task Flow Navigation Options
Oracle ADF Architecture TV - Design - Task Flow Navigation OptionsChris Muir
 
Oracle ADF Architecture TV - Design - Task Flow Overview
Oracle ADF Architecture TV - Design - Task Flow OverviewOracle ADF Architecture TV - Design - Task Flow Overview
Oracle ADF Architecture TV - Design - Task Flow OverviewChris Muir
 
What's New in Java 8
What's New in Java 8What's New in Java 8
What's New in Java 8javafxpert
 
Oracle ADF Architecture TV - Design - ADF Service Architectures
Oracle ADF Architecture TV - Design - ADF Service ArchitecturesOracle ADF Architecture TV - Design - ADF Service Architectures
Oracle ADF Architecture TV - Design - ADF Service ArchitecturesChris Muir
 
Introduction to SAP Gateway and OData
Introduction to SAP Gateway and ODataIntroduction to SAP Gateway and OData
Introduction to SAP Gateway and ODataChris Whealy
 
Oracle ADF Architecture TV - Development - Error Handling
Oracle ADF Architecture TV - Development - Error HandlingOracle ADF Architecture TV - Development - Error Handling
Oracle ADF Architecture TV - Development - Error HandlingChris Muir
 
Oracle ADF Architecture TV - Design - Service Integration Architectures
Oracle ADF Architecture TV - Design - Service Integration ArchitecturesOracle ADF Architecture TV - Design - Service Integration Architectures
Oracle ADF Architecture TV - Design - Service Integration ArchitecturesChris Muir
 

What's hot (20)

Java: Create The Future Keynote
Java: Create The Future KeynoteJava: Create The Future Keynote
Java: Create The Future Keynote
 
Oracle ADF Architecture TV - Design - ADF BC Application Module Design
Oracle ADF Architecture TV - Design - ADF BC Application Module DesignOracle ADF Architecture TV - Design - ADF BC Application Module Design
Oracle ADF Architecture TV - Design - ADF BC Application Module Design
 
Ed presents JSF 2.2 and WebSocket to Gameduell.
Ed presents JSF 2.2 and WebSocket to Gameduell.Ed presents JSF 2.2 and WebSocket to Gameduell.
Ed presents JSF 2.2 and WebSocket to Gameduell.
 
Ankara JUG Ağustos 2013 - Oracle ADF
Ankara JUG Ağustos 2013 - Oracle ADFAnkara JUG Ağustos 2013 - Oracle ADF
Ankara JUG Ağustos 2013 - Oracle ADF
 
JSF 2.2 Input Output JavaLand 2015
JSF 2.2 Input Output JavaLand 2015JSF 2.2 Input Output JavaLand 2015
JSF 2.2 Input Output JavaLand 2015
 
Burns jsf-confess-2015
Burns jsf-confess-2015Burns jsf-confess-2015
Burns jsf-confess-2015
 
Functional programming with_jdk8-s_ritter
Functional programming with_jdk8-s_ritterFunctional programming with_jdk8-s_ritter
Functional programming with_jdk8-s_ritter
 
NetWeaver Gateway- Gateway Service Consumption
NetWeaver Gateway- Gateway Service ConsumptionNetWeaver Gateway- Gateway Service Consumption
NetWeaver Gateway- Gateway Service Consumption
 
Oracle ADF Architecture TV - Design - Architecting for ADF Mobile Integration
Oracle ADF Architecture TV - Design - Architecting for ADF Mobile IntegrationOracle ADF Architecture TV - Design - Architecting for ADF Mobile Integration
Oracle ADF Architecture TV - Design - Architecting for ADF Mobile Integration
 
NetWeaver Gateway- Introduction to REST
NetWeaver Gateway- Introduction to RESTNetWeaver Gateway- Introduction to REST
NetWeaver Gateway- Introduction to REST
 
Oracle ADF Architecture TV - Design - Task Flow Navigation Options
Oracle ADF Architecture TV - Design - Task Flow Navigation OptionsOracle ADF Architecture TV - Design - Task Flow Navigation Options
Oracle ADF Architecture TV - Design - Task Flow Navigation Options
 
Oracle ADF Architecture TV - Design - Task Flow Overview
Oracle ADF Architecture TV - Design - Task Flow OverviewOracle ADF Architecture TV - Design - Task Flow Overview
Oracle ADF Architecture TV - Design - Task Flow Overview
 
What's New in Java 8
What's New in Java 8What's New in Java 8
What's New in Java 8
 
Oracle ADF Architecture TV - Design - ADF Service Architectures
Oracle ADF Architecture TV - Design - ADF Service ArchitecturesOracle ADF Architecture TV - Design - ADF Service Architectures
Oracle ADF Architecture TV - Design - ADF Service Architectures
 
Introduction to SAP Gateway and OData
Introduction to SAP Gateway and ODataIntroduction to SAP Gateway and OData
Introduction to SAP Gateway and OData
 
SAP NetWeaver Gateway - Gateway Service Consumption
SAP NetWeaver Gateway - Gateway Service Consumption SAP NetWeaver Gateway - Gateway Service Consumption
SAP NetWeaver Gateway - Gateway Service Consumption
 
Oracle ADF Architecture TV - Development - Error Handling
Oracle ADF Architecture TV - Development - Error HandlingOracle ADF Architecture TV - Development - Error Handling
Oracle ADF Architecture TV - Development - Error Handling
 
NetWeaver Gateway- Introduction to OData
NetWeaver Gateway- Introduction to ODataNetWeaver Gateway- Introduction to OData
NetWeaver Gateway- Introduction to OData
 
Java EE for the Cloud
Java EE for the CloudJava EE for the Cloud
Java EE for the Cloud
 
Oracle ADF Architecture TV - Design - Service Integration Architectures
Oracle ADF Architecture TV - Design - Service Integration ArchitecturesOracle ADF Architecture TV - Design - Service Integration Architectures
Oracle ADF Architecture TV - Design - Service Integration Architectures
 

Similar to Leverage Enterprise Integration Patterns with Apache Camel and Twitter

Oracle REST Data Services
Oracle REST Data ServicesOracle REST Data Services
Oracle REST Data ServicesChris Muir
 
REST API Doc Best Practices
REST API Doc Best PracticesREST API Doc Best Practices
REST API Doc Best PracticesMarta Rauch
 
Boost Your Content Strategy for REST APIs
Boost Your Content Strategy for REST APIsBoost Your Content Strategy for REST APIs
Boost Your Content Strategy for REST APIsMarta Rauch
 
Fusesource camel-persistence-part1-webinar-charles-moulliard
Fusesource camel-persistence-part1-webinar-charles-moulliardFusesource camel-persistence-part1-webinar-charles-moulliard
Fusesource camel-persistence-part1-webinar-charles-moulliardCharles Moulliard
 
10 Building Blocks for Enterprise JavaScript
10 Building Blocks for Enterprise JavaScript10 Building Blocks for Enterprise JavaScript
10 Building Blocks for Enterprise JavaScriptGeertjan Wielenga
 
Modern App Development with Oracle Cloud
Modern App Development with Oracle CloudModern App Development with Oracle Cloud
Modern App Development with Oracle CloudJuan Carlos Ruiz Rico
 
JavaOne2013 Leveraging Linked Data and OSLC
JavaOne2013 Leveraging Linked Data and OSLCJavaOne2013 Leveraging Linked Data and OSLC
JavaOne2013 Leveraging Linked Data and OSLCSteve Speicher
 
How Scala, Wicket, and Java EE Can Improve Web Development
How Scala, Wicket, and Java EE Can Improve Web DevelopmentHow Scala, Wicket, and Java EE Can Improve Web Development
How Scala, Wicket, and Java EE Can Improve Web DevelopmentBruno Borges
 
Leverage integration cloud_service_for_ebs_
Leverage integration cloud_service_for_ebs_Leverage integration cloud_service_for_ebs_
Leverage integration cloud_service_for_ebs_aioughydchapter
 
Ed presents JSF 2.2 at a 2013 Gameduell Tech talk
Ed presents JSF 2.2 at a 2013 Gameduell Tech talkEd presents JSF 2.2 at a 2013 Gameduell Tech talk
Ed presents JSF 2.2 at a 2013 Gameduell Tech talkEdward Burns
 
Consuming Java EE in Desktop, Web, and Mobile Frontends
Consuming Java EE in Desktop, Web, and Mobile FrontendsConsuming Java EE in Desktop, Web, and Mobile Frontends
Consuming Java EE in Desktop, Web, and Mobile FrontendsGeertjan Wielenga
 
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...AMD Developer Central
 
10 Tips for Java EE 7 with PrimeFaces - JavaOne 2013
10 Tips for Java EE 7 with PrimeFaces - JavaOne 201310 Tips for Java EE 7 with PrimeFaces - JavaOne 2013
10 Tips for Java EE 7 with PrimeFaces - JavaOne 2013Martin Fousek
 
OOW16 - Leverage Oracle Integration Cloud Service for Oracle E-Business Suite...
OOW16 - Leverage Oracle Integration Cloud Service for Oracle E-Business Suite...OOW16 - Leverage Oracle Integration Cloud Service for Oracle E-Business Suite...
OOW16 - Leverage Oracle Integration Cloud Service for Oracle E-Business Suite...vasuballa
 
Apache Camel
Apache CamelApache Camel
Apache CamelGenevaJUG
 

Similar to Leverage Enterprise Integration Patterns with Apache Camel and Twitter (20)

Oracle REST Data Services
Oracle REST Data ServicesOracle REST Data Services
Oracle REST Data Services
 
REST API Doc Best Practices
REST API Doc Best PracticesREST API Doc Best Practices
REST API Doc Best Practices
 
Boost Your Content Strategy for REST APIs
Boost Your Content Strategy for REST APIsBoost Your Content Strategy for REST APIs
Boost Your Content Strategy for REST APIs
 
Fusesource camel-persistence-part1-webinar-charles-moulliard
Fusesource camel-persistence-part1-webinar-charles-moulliardFusesource camel-persistence-part1-webinar-charles-moulliard
Fusesource camel-persistence-part1-webinar-charles-moulliard
 
10 Building Blocks for Enterprise JavaScript
10 Building Blocks for Enterprise JavaScript10 Building Blocks for Enterprise JavaScript
10 Building Blocks for Enterprise JavaScript
 
Modern App Development with Oracle Cloud
Modern App Development with Oracle CloudModern App Development with Oracle Cloud
Modern App Development with Oracle Cloud
 
Session at Oredev 2016.
Session at Oredev 2016.Session at Oredev 2016.
Session at Oredev 2016.
 
Imworld.ro
Imworld.roImworld.ro
Imworld.ro
 
Slovenian Oracle User Group
Slovenian Oracle User GroupSlovenian Oracle User Group
Slovenian Oracle User Group
 
JavaOne2013 Leveraging Linked Data and OSLC
JavaOne2013 Leveraging Linked Data and OSLCJavaOne2013 Leveraging Linked Data and OSLC
JavaOne2013 Leveraging Linked Data and OSLC
 
How Scala, Wicket, and Java EE Can Improve Web Development
How Scala, Wicket, and Java EE Can Improve Web DevelopmentHow Scala, Wicket, and Java EE Can Improve Web Development
How Scala, Wicket, and Java EE Can Improve Web Development
 
Leverage integration cloud_service_for_ebs_
Leverage integration cloud_service_for_ebs_Leverage integration cloud_service_for_ebs_
Leverage integration cloud_service_for_ebs_
 
Ed presents JSF 2.2 at a 2013 Gameduell Tech talk
Ed presents JSF 2.2 at a 2013 Gameduell Tech talkEd presents JSF 2.2 at a 2013 Gameduell Tech talk
Ed presents JSF 2.2 at a 2013 Gameduell Tech talk
 
JavaCro'14 - Consuming Java EE Backends in Desktop, Web, and Mobile Frontends...
JavaCro'14 - Consuming Java EE Backends in Desktop, Web, and Mobile Frontends...JavaCro'14 - Consuming Java EE Backends in Desktop, Web, and Mobile Frontends...
JavaCro'14 - Consuming Java EE Backends in Desktop, Web, and Mobile Frontends...
 
Consuming Java EE in Desktop, Web, and Mobile Frontends
Consuming Java EE in Desktop, Web, and Mobile FrontendsConsuming Java EE in Desktop, Web, and Mobile Frontends
Consuming Java EE in Desktop, Web, and Mobile Frontends
 
Marcin Szałowicz - MySQL Workbench
Marcin Szałowicz - MySQL WorkbenchMarcin Szałowicz - MySQL Workbench
Marcin Szałowicz - MySQL Workbench
 
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...
Keynote (Nandini Ramani) - The Role of Java in Heterogeneous Computing & How ...
 
10 Tips for Java EE 7 with PrimeFaces - JavaOne 2013
10 Tips for Java EE 7 with PrimeFaces - JavaOne 201310 Tips for Java EE 7 with PrimeFaces - JavaOne 2013
10 Tips for Java EE 7 with PrimeFaces - JavaOne 2013
 
OOW16 - Leverage Oracle Integration Cloud Service for Oracle E-Business Suite...
OOW16 - Leverage Oracle Integration Cloud Service for Oracle E-Business Suite...OOW16 - Leverage Oracle Integration Cloud Service for Oracle E-Business Suite...
OOW16 - Leverage Oracle Integration Cloud Service for Oracle E-Business Suite...
 
Apache Camel
Apache CamelApache Camel
Apache Camel
 

More from Bruno Borges

Secrets of Performance Tuning Java on Kubernetes
Secrets of Performance Tuning Java on KubernetesSecrets of Performance Tuning Java on Kubernetes
Secrets of Performance Tuning Java on KubernetesBruno Borges
 
[Outdated] Secrets of Performance Tuning Java on Kubernetes
[Outdated] Secrets of Performance Tuning Java on Kubernetes[Outdated] Secrets of Performance Tuning Java on Kubernetes
[Outdated] Secrets of Performance Tuning Java on KubernetesBruno Borges
 
From GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX Apps
From GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX AppsFrom GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX Apps
From GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX AppsBruno Borges
 
Making Sense of Serverless Computing
Making Sense of Serverless ComputingMaking Sense of Serverless Computing
Making Sense of Serverless ComputingBruno Borges
 
Visual Studio Code for Java and Spring Developers
Visual Studio Code for Java and Spring DevelopersVisual Studio Code for Java and Spring Developers
Visual Studio Code for Java and Spring DevelopersBruno Borges
 
Taking Spring Apps for a Spin on Microsoft Azure Cloud
Taking Spring Apps for a Spin on Microsoft Azure CloudTaking Spring Apps for a Spin on Microsoft Azure Cloud
Taking Spring Apps for a Spin on Microsoft Azure CloudBruno Borges
 
A Look Back at Enterprise Integration Patterns and Their Use into Today's Ser...
A Look Back at Enterprise Integration Patterns and Their Use into Today's Ser...A Look Back at Enterprise Integration Patterns and Their Use into Today's Ser...
A Look Back at Enterprise Integration Patterns and Their Use into Today's Ser...Bruno Borges
 
Melhore o Desenvolvimento do Time com DevOps na Nuvem
Melhore o Desenvolvimento do Time com DevOps na NuvemMelhore o Desenvolvimento do Time com DevOps na Nuvem
Melhore o Desenvolvimento do Time com DevOps na NuvemBruno Borges
 
Tecnologias Oracle em Docker Containers On-premise e na Nuvem
Tecnologias Oracle em Docker Containers On-premise e na NuvemTecnologias Oracle em Docker Containers On-premise e na Nuvem
Tecnologias Oracle em Docker Containers On-premise e na NuvemBruno Borges
 
Java EE Arquillian Testing with Docker & The Cloud
Java EE Arquillian Testing with Docker & The CloudJava EE Arquillian Testing with Docker & The Cloud
Java EE Arquillian Testing with Docker & The CloudBruno Borges
 
Migrating From Applets to Java Desktop Apps in JavaFX
Migrating From Applets to Java Desktop Apps in JavaFXMigrating From Applets to Java Desktop Apps in JavaFX
Migrating From Applets to Java Desktop Apps in JavaFXBruno Borges
 
Servidores de Aplicação: Por quê ainda precisamos deles?
Servidores de Aplicação: Por quê ainda precisamos deles?Servidores de Aplicação: Por quê ainda precisamos deles?
Servidores de Aplicação: Por quê ainda precisamos deles?Bruno Borges
 
Build and Monitor Cloud PaaS with JVM’s Nashorn JavaScripts [CON1859]
Build and Monitor Cloud PaaS with JVM’s Nashorn JavaScripts [CON1859]Build and Monitor Cloud PaaS with JVM’s Nashorn JavaScripts [CON1859]
Build and Monitor Cloud PaaS with JVM’s Nashorn JavaScripts [CON1859]Bruno Borges
 
Cloud Services for Developers: What’s Inside Oracle Cloud for You? [CON1861]
Cloud Services for Developers: What’s Inside Oracle Cloud for You? [CON1861]Cloud Services for Developers: What’s Inside Oracle Cloud for You? [CON1861]
Cloud Services for Developers: What’s Inside Oracle Cloud for You? [CON1861]Bruno Borges
 
Booting Up Spring Apps on Lightweight Cloud Services [CON10258]
Booting Up Spring Apps on Lightweight Cloud Services [CON10258]Booting Up Spring Apps on Lightweight Cloud Services [CON10258]
Booting Up Spring Apps on Lightweight Cloud Services [CON10258]Bruno Borges
 
Java EE Application Servers: Containerized or Multitenant? Both! [CON7506]
Java EE Application Servers: Containerized or Multitenant? Both! [CON7506]Java EE Application Servers: Containerized or Multitenant? Both! [CON7506]
Java EE Application Servers: Containerized or Multitenant? Both! [CON7506]Bruno Borges
 
Running Oracle WebLogic on Docker Containers [BOF7537]
Running Oracle WebLogic on Docker Containers [BOF7537]Running Oracle WebLogic on Docker Containers [BOF7537]
Running Oracle WebLogic on Docker Containers [BOF7537]Bruno Borges
 
Lightweight Java in the Cloud
Lightweight Java in the CloudLightweight Java in the Cloud
Lightweight Java in the CloudBruno Borges
 
Tweet for Beer - Beertap Powered by Java Goes IoT, Cloud, and JavaFX
Tweet for Beer - Beertap Powered by Java Goes IoT, Cloud, and JavaFXTweet for Beer - Beertap Powered by Java Goes IoT, Cloud, and JavaFX
Tweet for Beer - Beertap Powered by Java Goes IoT, Cloud, and JavaFXBruno Borges
 
Integrando Oracle BPM com Java EE e WebSockets
Integrando Oracle BPM com Java EE e WebSocketsIntegrando Oracle BPM com Java EE e WebSockets
Integrando Oracle BPM com Java EE e WebSocketsBruno Borges
 

More from Bruno Borges (20)

Secrets of Performance Tuning Java on Kubernetes
Secrets of Performance Tuning Java on KubernetesSecrets of Performance Tuning Java on Kubernetes
Secrets of Performance Tuning Java on Kubernetes
 
[Outdated] Secrets of Performance Tuning Java on Kubernetes
[Outdated] Secrets of Performance Tuning Java on Kubernetes[Outdated] Secrets of Performance Tuning Java on Kubernetes
[Outdated] Secrets of Performance Tuning Java on Kubernetes
 
From GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX Apps
From GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX AppsFrom GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX Apps
From GitHub Source to GitHub Release: Free CICD Pipelines For JavaFX Apps
 
Making Sense of Serverless Computing
Making Sense of Serverless ComputingMaking Sense of Serverless Computing
Making Sense of Serverless Computing
 
Visual Studio Code for Java and Spring Developers
Visual Studio Code for Java and Spring DevelopersVisual Studio Code for Java and Spring Developers
Visual Studio Code for Java and Spring Developers
 
Taking Spring Apps for a Spin on Microsoft Azure Cloud
Taking Spring Apps for a Spin on Microsoft Azure CloudTaking Spring Apps for a Spin on Microsoft Azure Cloud
Taking Spring Apps for a Spin on Microsoft Azure Cloud
 
A Look Back at Enterprise Integration Patterns and Their Use into Today's Ser...
A Look Back at Enterprise Integration Patterns and Their Use into Today's Ser...A Look Back at Enterprise Integration Patterns and Their Use into Today's Ser...
A Look Back at Enterprise Integration Patterns and Their Use into Today's Ser...
 
Melhore o Desenvolvimento do Time com DevOps na Nuvem
Melhore o Desenvolvimento do Time com DevOps na NuvemMelhore o Desenvolvimento do Time com DevOps na Nuvem
Melhore o Desenvolvimento do Time com DevOps na Nuvem
 
Tecnologias Oracle em Docker Containers On-premise e na Nuvem
Tecnologias Oracle em Docker Containers On-premise e na NuvemTecnologias Oracle em Docker Containers On-premise e na Nuvem
Tecnologias Oracle em Docker Containers On-premise e na Nuvem
 
Java EE Arquillian Testing with Docker & The Cloud
Java EE Arquillian Testing with Docker & The CloudJava EE Arquillian Testing with Docker & The Cloud
Java EE Arquillian Testing with Docker & The Cloud
 
Migrating From Applets to Java Desktop Apps in JavaFX
Migrating From Applets to Java Desktop Apps in JavaFXMigrating From Applets to Java Desktop Apps in JavaFX
Migrating From Applets to Java Desktop Apps in JavaFX
 
Servidores de Aplicação: Por quê ainda precisamos deles?
Servidores de Aplicação: Por quê ainda precisamos deles?Servidores de Aplicação: Por quê ainda precisamos deles?
Servidores de Aplicação: Por quê ainda precisamos deles?
 
Build and Monitor Cloud PaaS with JVM’s Nashorn JavaScripts [CON1859]
Build and Monitor Cloud PaaS with JVM’s Nashorn JavaScripts [CON1859]Build and Monitor Cloud PaaS with JVM’s Nashorn JavaScripts [CON1859]
Build and Monitor Cloud PaaS with JVM’s Nashorn JavaScripts [CON1859]
 
Cloud Services for Developers: What’s Inside Oracle Cloud for You? [CON1861]
Cloud Services for Developers: What’s Inside Oracle Cloud for You? [CON1861]Cloud Services for Developers: What’s Inside Oracle Cloud for You? [CON1861]
Cloud Services for Developers: What’s Inside Oracle Cloud for You? [CON1861]
 
Booting Up Spring Apps on Lightweight Cloud Services [CON10258]
Booting Up Spring Apps on Lightweight Cloud Services [CON10258]Booting Up Spring Apps on Lightweight Cloud Services [CON10258]
Booting Up Spring Apps on Lightweight Cloud Services [CON10258]
 
Java EE Application Servers: Containerized or Multitenant? Both! [CON7506]
Java EE Application Servers: Containerized or Multitenant? Both! [CON7506]Java EE Application Servers: Containerized or Multitenant? Both! [CON7506]
Java EE Application Servers: Containerized or Multitenant? Both! [CON7506]
 
Running Oracle WebLogic on Docker Containers [BOF7537]
Running Oracle WebLogic on Docker Containers [BOF7537]Running Oracle WebLogic on Docker Containers [BOF7537]
Running Oracle WebLogic on Docker Containers [BOF7537]
 
Lightweight Java in the Cloud
Lightweight Java in the CloudLightweight Java in the Cloud
Lightweight Java in the Cloud
 
Tweet for Beer - Beertap Powered by Java Goes IoT, Cloud, and JavaFX
Tweet for Beer - Beertap Powered by Java Goes IoT, Cloud, and JavaFXTweet for Beer - Beertap Powered by Java Goes IoT, Cloud, and JavaFX
Tweet for Beer - Beertap Powered by Java Goes IoT, Cloud, and JavaFX
 
Integrando Oracle BPM com Java EE e WebSockets
Integrando Oracle BPM com Java EE e WebSocketsIntegrando Oracle BPM com Java EE e WebSockets
Integrando Oracle BPM com Java EE e WebSockets
 

Recently uploaded

Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxBkGupta21
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 

Recently uploaded (20)

Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
unit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptxunit 4 immunoblotting technique complete.pptx
unit 4 immunoblotting technique complete.pptx
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 

Leverage Enterprise Integration Patterns with Apache Camel and Twitter

  • 1. 1 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 2. Leverage Enterprise Integration Patterns with Apache Camel and Twitter Bruno Borges Oracle Product Manager for Latin America Java EE, GlassFish, WebLogic, Coherence 2 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 3. Who am I? Bruno Borges  Java developer since 2000  Speaker at Conferences – JustJava, JavaOne Brazil, The Developers’ Conference, ApacheCon  Evangelized Apache Camel and Apache Wicket in Brazil  Joined Oracle on July 2012 – Product Manager for Java EE, GlassFish and WebLogic – Latin America  Married, lives in Sao Paulo, has a Golden Retriever, hiker and gamer 3 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 4. Agenda  Enterprise Integration Patterns  Introduction to Apache Camel  Social Media and Social Data  Camel Twitter  Demonstration 4 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 5. Enterprise Integration Patterns 5 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 6. “If you are involved with the operation or development of an enterprise application, there will doubtless come a time when you will need to integrate your application with another using the emerging preferred approach of messaging.” Randy Stafford Oracle 6 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 7. Enterprise Integration Patterns Integration, integration, integration…  Why do we need patterns for integration?  Why is it so hard?  Asynchronous messages  Where and when to use them?  Cloud Computing depends on it 7 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 8. Apache Camel http://camel.apache.org 8 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 9. What is Apache Camel? A Java framework that enables the developer to:  Use implementations of Enterprise Integration Patterns  Design routes for Enterprise Integration Patterns  Use out-of-the-box or develop components and endpoints  Process asynchronous and synchronous messages  Connect distinct and independent systems  Receive, transform and deliver data 9 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 10. Quick overview of Apache Camel The core of Camel is about  Components  Endpoints  Routes  Exchanges and Messages  Consumers  Producers  Processors 10 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 11. What can you do with Apache Camel? Example of exchanging and filtering messages between queues Queue A Queue B 11 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 12. What can you do with Apache Camel? Example of exchanging a message between queues Queue A Queue B from to filter queue A queue B 12 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 13. What can you do with Apache Camel? Example of exchanging a message between queues Queue A Queue B from(qA) filter() to(qB) 13 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 14. Example using Spring Because you love XML <camelContext xmlns="http://camel.apache.org/schema/spring"> <route> <from uri="file:///var/usr/inbox/"/> <choice> <when> <xpath>$foo = 'widget'</xpath> <to uri="seda:widget"/> </when> <when> <xpath>$foo = 'gadget'</xpath> <to uri="seda:gadget"/> </when> <otherwise> <to uri="seda:lixo"/> </otherwise> </choice> </route> </camelContext> 14 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 15. Examples using Scala With the Scala DSL "direct:a" when(_.in == "<hello/>") to("direct:b") "direct:b" ==> { when(_.in == "<hallo/>") { to ("mock:c") } otherwise { to ("mock:e") } to ("mock:d") } 15 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 16. Apache Camel Implementation of Enterprise Integration Patterns  DSLs for Java, Spring XML and Scala  Standard URIs for Endpoints  Message routing based on Predicates and Expressions  Lots of components – JMS, HTTP, MINA, JDBC, FTP, WebServices, EJB, JPA, Hibernate, IRC, JCR, AS/400, LDAP, Mail, Nagios, POP, Printers, Quartz, Restlet, RMI, RSS, Scalate, XMPP…  Integrates with CDI – CamelContext can be started with EJB3’s @Startup/@Singleton 16 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 17. Social Media and Social Data 17 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 18. Social Media The Rise of Social Media as a Communications Channels  29% of consumers post negative comments on social networks  49% of 16-24 y’o have posted negative comment following bad CX  71% that had complaints on social networks were ignored  Of 29% who did get responses, 51% had positive reaction after  17% of those who had a response, wrote a positive comment  13% deleted their negative post Source: 2011 Customer Experience Index Report “The Era of Impatience” http://www.oracle.com/us/products/applications/uk-cei-report-1641675.pdf 18 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 19. Social Data Reading and processing all that data  Twitter for instance – Twitter, on average, receives 3,9k tweets per second – Peaks during main events can reach 20k tweets per second – This can more than 300 million tweets per day – One tweet may have 140 characters  560 bytes (Twitter uses UTF-8) – Per day, more than 150 GB of raw text tweets  Not counting indexing and storage overhead  Let’s not forget about Facebook, Google+, LinkedIn and many others 19 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 20. Social Data “It is not information overload. It’s filter failure” Clay Shirky Independent Consultant, Teacher and Writer 20 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 21. Filtering and Processing Social Data It looks like a lot with Enterprise Integration Patterns, isn’t?  Read status updates  Filter based on general keywords  Identify the issue based on their content  Route to who will best process that tweet  Reply if possible  Store for future conversations with original sender – Store retweets that mention users who thought the same thing  Customize as needed 21 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 22. Camel Twitter Component for Apache Camel 22 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 23. Camel Twitter The initial idea: March 2009 http://blog.brunoborges.com.br/2009/03/leverage- eip-with-apache-camel-and.html 23 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 24. Camel Twitter The initial idea: March 2009 http://blog.brunoborges.com.br/2009/03/leverage- eip-with-apache-camel-and.html 24 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 25. Camel Twitter Proposed as a Camel Component to the ASF in 2009  CAMEL-1520 – https://issues.apache.org/jira/browse/CAMEL-1520  Presented at ApacheCon NA’09 during the BarCamp  Discussions with Camel committers at ApacheCon led me to build a broader component, that could support other social networks  Challenge: same URIs and features for different Social Networks (“social data providers”). Starting with Facebook, Twitter, LinkedIn, Foursquare, and (the already dead) Google Buzz 25 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 26. Camel Social How would it look like?  Started in 2010  Goal – The Camel Social component objective was to be able to poll social data from several networks in a uniform way to be processed through a route  URI format – social://[social provider] [/social path]?parameters  Features – Post, Read, Search 26 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 27. Camel Social Examples Sending a tweet "direct:foo" to "social://twitter/status" Reading a Facebook Timeline "social://facebook/timeline/brunocborges" ==> { to("log:facebookWall") } Searching for events on Facebook "direct:doSearch" to "social://facebook/events" to "log:events" 27 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 28. Camel Social An unsuccessful attempt http://code.google.com/p/camel-social  Problem – It was very hard to design an standard API for different Social Nets  Died in 2010  What about Spring Social? – Didn’t exist back then – Now they have an abstract API for Social Providers and for OAuth – One extra API per Social Network – It “could” bring the component back to life 28 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 29. Camel Twitter A rebirth, thanks to GitHub  May 2011 – project rebooted on GitHub – Focus only on Twitter  http://github.com/brunoborges/camel-twitter @brettemeyer  Kudos to Brett Meyer, who finished the job  Bilgin Ibryam added support for the Twitter Streaming API  Thank you guys! I owe you two a beer :-) 29 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 30. Camel Twitter Final version  Available since Apache Camel 2.10  Features – Send a tweet (update status) – Send and read Direct Messages (DMs) – Search using REST (polling) or Streaming – Sample streaming from public tweets – Timeline reads for home, mentions, retweets, specific user  Uses the well-know Twitter4J library (Apache licensed) 30 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 31. Examples Using the Scala DSL Sending a tweet "jms:queue:tweetingQueue1" to "twitter://timeline/user" Reading a Timeline "twitter://timeline/home?type=polling&delay=5" ==> { to("log:homeTweets") } Searching for keywords "direct:doSearch" to "twitter://search?keywords=JavaOne“ to "log:homeTweets" 31 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 32. Camel Twitter Demo Searching for pictures about Batman 32 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 33. Camel Twitter Demo How it works  Connects to the Search Streaming channel based on keywords  Filter for tweets with media only  Check Coherence Cache and filter duplicates  Put image/tweet URL as key/value on Coherence Cache  Transform tweets into small POJOs  Transform POJOs into JSON Strings  Sends to users connected to the WebSocket channel * based on the Camelympics project developed by Bilgin Ibryam https://github.com/bibryam/camelympics 33 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 34. About Camel Coherence Component The #1 Distributed Caching technology  A fork of the Camel Cache component – Instead of EHCache, now uses Oracle Coherence  Same features as the core component – Operations: add, check, get, remove, removeAll – URI: coherence://cacheName  Coherence is LRU by default (‘local-scheme’) – Great for the demo! Stores the recent tweets without blowing the Heap – If more storage is needed, deploy new Coherence Cache instance 34 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 35. QUESTIONS? 35 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 36. THANK YOU! @brunoborges blogs.oracle.com/brunoborges 36 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 37. The preceding is intended to outline our general product direction. It is intended for information purposes only, and may not be incorporated into any contract. It is not a commitment to deliver any material, code, or functionality, and should not be relied upon in making purchasing decisions. The development, release, and timing of any features or functionality described for Oracle’s products remains at the sole discretion of Oracle. 37 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.
  • 38. 38 Copyright © 2012, Oracle and/or its affiliates. All rights reserved.