SlideShare a Scribd company logo
Social Enterprise Java
Apps
Safe Harbor Statement
Safe harbor statement under the Private Securities Litigation Reform Act of 1995.

This presentation may contain forward-looking statements that involve risks, uncertainties, and assumptions. If any such
uncertainties materialize or if any of the assumptions proves incorrect, the results of salesforce.com, inc. could differ materially
from the results expressed or implied by the forward looking-statements we make. All statements other than statements of
historical fact could be deemed forward-looking, including any projections of product or service availability, subscriber growth,
earnings, revenues, or other financial items and any statements regarding strategies or plans of management for future
operations, statements of belief, any statements concerning new, planned, or upgraded services or technology developments
and customer contracts or use of our services.

The risks and uncertainties referred to above include - but are not limited to - risks associated with developing and delivering new
functionality for our service, new products and services, our new business model, our past operating losses, possible fluctuations
in our operating results and rate of growth, interruptions or delays in our Web hosting, breach of our security measures, the
outcome of intellectual property and other litigation, risks associated with possible mergers and acquisitions, the immature
market in which we operate, our relatively limited operating history, our ability to expand, retain, and motivate our employees
and manage our growth, new releases of our service and successful customer deployment, our limited history reselling non-
salesforce.com products, and utilization and selling to larger enterprise customers. Further information on potential factors that
could affect the financial results of salesforce.com, inc. is included in our annual report on Form 10-Q for the most recent fiscal
quarter ended. This documents and others containing important disclosures are available on the SEC Filings section of the
Investor Information section of our Web site.

Any unreleased services or features referenced in this or other presentations, press releases or public statements are not
currently available and may not be delivered on time or at all. Customers who purchase our services should make the purchase
decisions based upon features that are currently available. Salesforce.com, inc. assumes no obligation and does not intend to
update these forward-looking statements.
@forcedotcom , #forcewebinar, @Heroku,
@anand_bn, @_JamesWard




Developer Force Group




facebook.com/forcedotcom
facebook.com/heroku




Developer Force – Force.com Community
Anand B Narasimhan
Senior Product Manager, Heroku
anand@heroku.com
@anand_bn


James L Ward
Principal Developer Evangelist, Heroku
jw@heroku.com
@_JamesWard
- Paul Cheesbrough
CIO, News International
In this webinar…
 What is a “Social Enterprise App”

 Heroku – a short intro

 Hands on with Java on Heroku

 Building a Social Enterprise Heroku app

 Coming soon to an IDE near you

 Q&A
The Social Enterprise

                                                          Customer
                                                        Social Network


                              Social
                              Profile
       Collaborate                             Market




Work                                                      Service




                     Extend             Sell
Market = Engage = Heroku




           5 Years Ago                    Today
    Static, Passive Marketing   Relevant, Active Marketing
What are the
    building blocks
          of a
Social Enterprise App ?
Social Enterprise Java Apps on Heroku Webinar
Enterprise Apps
                              Failover,             App Server
                      Clustering, Load Availability Admins, Network
                       Balancers, SSL               Admins
                              Domains



                                                           YOUR APP
      App crashes,
Alerts, Logs mining                                                   Servers: Web Servers, App
                                                                      Servers, Database servers
      Visibility                                                      etc
                                                                      Infrastructure
             Ops,
                                                                      System Admins, App server
Production support
                                                                      Admins, DBAs




                       DR,Rollback,
                        Replication
                                    Redundancy DBAs, Admins
                                               System
Forget                Run                   See              Trust &
  Servers             Anything             Everything          Manage


$ heroku create   worker: java –jar ..   $heroku logs --tail   $heroku ps
Heroku                                               User
                                                 •   Web browser Acces
    Architecture                                 •   API access




                                                        http(s)
                                            Elastic Load Balancing




Developer
                     Control Surface APIs




Code
•Java
•…

Deploy        REST
•GIT

Manage
•Heroku CLI
•Scaling
•Monitoring
Social Enterprise App Architecture
   Polyglot &                Process                    Real time                 Addons
     Open                     Model                     Visibiility




                Social API                   Data API                      Metadata API




                                    Access Management

            Identity     Profiles       Permissions               Record-Level Filtering



                                             Data

                  Business Data          Metadata             Files
Getting started
            with
     Spring MVC app
         on Heroku
( http://java.heroku.com )
DEMO / HANDS ON
Building a Social Enterprise
            App
            With
Heroku and Salesforce.com
Integrating with
          Salesforce.com
1.Setup OAuth
2.Update dependencies
3.Switch Entity to JSON
4.Switch DAO to Force REST API
5.Switch Spring Config to Force REST +
  OAuth
6.Add Servlet Filter for Oauth
7.Add Oauth Keys to the environment
Dyno
                          1. Build
                          2. Slug Compile
                          3. Deploy to Dyno



   Embedded Container

    WAR
                        $ git push heroku


Dependencies

                        pom.xml
                        $ mvn install

 Your code



                                Under the
Social Enterprise Java Apps on Heroku Webinar
Spring MVC app
 With Heroku &
Salesforce.com
      And
 Chatter APIs
What’s possible…
    Social Feeds,                   Real time/ Push
Recommendations                     Notifications




                       Social
                      Enterpris
                       e App


          Streaming               Analytics
               Data
is GA
Java
Heroku Labs
• WAR deployment (http://bit.ly/war-deploy )
• Jenkins plugin for Heroku(http://bit.ly/heroku-ci
  )
• Heroku.jar- Java Wrapper (http://bit.ly/heroku-
  jar )
• Atlassian Bamboo plugin for Heroku (Email
  anand@heroku.com for more details)




                     you can try these out now.

                  We would love your feedback
Coming Soon

+        =    like
Coming Soon

               All day
HEROKU ENTERPRISE DEVELOPER
         WORKSHOP

  Email anand@heroku.com if you are
             interested
Resources
 Getting Started -
     http://java.heroku.com
     http://bit.ly/heroku-java
 Toolbelt (http://toolbelt.herokuapp.com )
 Heroku Dev Center : http://devcenter.heroku.com
 Heroku Add-ons: http://addons.heroku.com
 Git: http://help.github.com/
 Webinar Source code:
     Spring MVC - Force.com : http://bit.ly/KZB68y
     Chatter - http://bit.ly/KgMlPP
     Pusher integration - http://bit.ly/KMVInx
Upcoming Events

•   June 12 – Visualforce CodeTalk
     http://bit.ly/codetalkheroku
•   June 13 – How Salesforce.com Uses
    Hadoop Webinar
     http://bit.ly/hadoopheroku
•   June 26 – Mobile CodeTalk
     http://bit.ly/mct-wr
Survey:
                 http://bit.ly/herokujavasurvey
   Heroku Devcenter: http://devcenter.heroku.com




 James Ward @_JamesWard            Anand Narasimhan @anand_bn
Developer Evangelist at Heroku     Sr. Product Manager at Heroku
      jw@heroku.com                      anand@heroku.com
SFDC Integration Steps

APPENDIX
1. Setup OAuth
i.   Salesforce.com > Setup > Develop >
     Remote Access
ii. Add Remote Access for Dev & Prod
     •   Dev Callback URL: http://localhost:8080/_auth
     •   Prod Callback URL: https://some-app-1234.herokuapp.com/_auth
2. Update dependencies
<repositories>
  <repository>
    <id>force-rest-api</id>
    <name>force-rest-api repository on GitHub</name>
    <url>
    http://jesperfj.github.com/force-rest-api/repository/
    </url>
  </repository>
</repositories>
2. Update dependencies
<dependency>
    <groupId>com.force.api</groupId>
    <artifactId>force-rest-api</artifactId>
    <version>0.0.15</version>
</dependency>
<dependency>
    <groupId>com.force.sdk</groupId>
    <artifactId>force-oauth</artifactId>
    <version>22.0.8-BETA</version>
</dependency>
<dependency>
    <groupId>com.force.sdk</groupId>
    <artifactId>force-springsecurity</artifactId>
    <version>22.0.8-BETA</version>
</dependency>
3. Switch Entity to JSON
@JsonIgnoreProperties(ignoreUnknown=true)
public class Person {

    @JsonProperty(value="Id")
    private String id;

    @JsonProperty(value="FirstName")
    private String firstName;

    @JsonProperty(value="LastName")
    private String lastName;
4. Switch DAO to Force REST
API
private ForceApi getForceApi() {
    SecurityContext sc = ForceSecurityContextHolder.get();
    ApiSession s = new ApiSession();
    s.setAccessToken(sc.getSessionId());
    s.setApiEndpoint(sc.getEndPointHost());
    return new ForceApi(s);
}

// Add Contact
getForceApi().createSObject("contact", person);

// Query Contacts
getForceApi().query("SELECT Id FROM contact", Person.class);

// Delete Contact
getForceApi().deleteSObject("contact", id);
5. Spring Config + OAuth
<fss:oauth>
  <fss:oauthInfo endpoint="http://login.salesforce.com"
    oauth-key="#{systemEnvironment['OAUTH_CLIENT_KEY']}"
    oauth-secret="#{systemEnvironment['OAUTH_CLIENT_SECRET']}"/>
</fss:oauth>

<security:http use-expressions="true">
  <security:intercept-url pattern="/people/*"
    access="isAuthenticated()" />
</security:http>



<!-- https redirect support -->
<property name="redirectHttp10Compatible" value="false" />
6. Add Servlet Filter for Oauth
<filter>
  <filter-name>springSecurityFilterChain</filter-name>
  <filter-class>
    org.springframework.web.filter.DelegatingFilterProxy
  </filter-class>
  <init-param>
    <param-name>contextAttribute</param-name>
    <param-value>
   org.springframework.web.servlet.FrameworkServlet.CONTEXT.spring
    </param-value>
  </init-param>
</filter>
<filter-mapping>
  <filter-name>springSecurityFilterChain</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>
7. Add Oauth Keys
export OAUTH_CLIENT_KEY=CQ3gmEE53MVG99OxTyEMal8ytj1E3NF7...
export OAUTH_CLIENT_SECRET=0905539091246761180


heroku config:add OAUTH_CLIENT_KEY=CQ3gmEE53MVG99OxTyEMal8yt...
heroku config:add OAUTH_CLIENT_SECRET=0905539091246761180

More Related Content

PPTX
Social ent. with java on heroku
Anand B Narasimhan
 
PPTX
Implement Authorization in your Apps with Microsoft identity platform-June 2020
Microsoft 365 Developer
 
PPTX
Microsoft identity platform developer community call-October 2019
Microsoft 365 Developer
 
PPTX
Mesh-Enabled Web Applications
goodfriday
 
PPTX
Community call: Develop multi tenant apps with the Microsoft identity platform
Microsoft 365 Developer
 
PPTX
Deep Dive SharePoint 2013: Developing applications in SharePoint 2013: forget...
Microsoft Developer Network (MSDN) - Belgium and Luxembourg
 
PDF
Enterprise Source and Release Management Using StratoSource
Salesforce Developers
 
PPTX
Microsoft Graph developer community call-March 2020
Microsoft 365 Developer
 
Social ent. with java on heroku
Anand B Narasimhan
 
Implement Authorization in your Apps with Microsoft identity platform-June 2020
Microsoft 365 Developer
 
Microsoft identity platform developer community call-October 2019
Microsoft 365 Developer
 
Mesh-Enabled Web Applications
goodfriday
 
Community call: Develop multi tenant apps with the Microsoft identity platform
Microsoft 365 Developer
 
Deep Dive SharePoint 2013: Developing applications in SharePoint 2013: forget...
Microsoft Developer Network (MSDN) - Belgium and Luxembourg
 
Enterprise Source and Release Management Using StratoSource
Salesforce Developers
 
Microsoft Graph developer community call-March 2020
Microsoft 365 Developer
 

What's hot (19)

PDF
Android Development with Flash Platform
Mihai Corlan
 
PDF
Web APIs & Apps - Mozilla
Robert Nyman
 
PDF
V fabric overview
Pronam Chatterjee
 
PPTX
Introduction to the new SharePoint 2013 App Model
Noorez Khamis
 
PDF
2012 12-06 ugsf - retour de la spc
Patrick Guimonet
 
PPTX
SPEC INDIA Java Case Study
SPEC INDIA
 
PPTX
Soa204 Kawasaki Final
Anush Kumar
 
PDF
webinos and Open Ecosystems Open Governance
webinos project
 
PDF
Android Services Black Magic by Aleksandar Gargenta
Marakana Inc.
 
PPTX
Webinar The App Lifecycle Platform
Service2Media
 
PPTX
SharePoint 2013 Hosted App Presentation by Roy Kim
Roy Kim
 
PDF
Mobile Cloud Demo
Mee Nam Lee
 
PDF
Sink Or Swim: Transitioning Your Software Business To SaaS
Apprenda
 
PPTX
Simplifying Enterprise Mobility - Powering Mobile Apps from The Cloud
Joe Drumgoole
 
PDF
Dev ops for cross platform mobile modeveast 12
Sanjeev Sharma
 
PDF
Hybrid Mobile Application Framework
동수 장
 
PPTX
Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015
Suzzicks
 
PDF
Cloud web applications: the new perspective of sproutcore
David Saitta
 
Android Development with Flash Platform
Mihai Corlan
 
Web APIs & Apps - Mozilla
Robert Nyman
 
V fabric overview
Pronam Chatterjee
 
Introduction to the new SharePoint 2013 App Model
Noorez Khamis
 
2012 12-06 ugsf - retour de la spc
Patrick Guimonet
 
SPEC INDIA Java Case Study
SPEC INDIA
 
Soa204 Kawasaki Final
Anush Kumar
 
webinos and Open Ecosystems Open Governance
webinos project
 
Android Services Black Magic by Aleksandar Gargenta
Marakana Inc.
 
Webinar The App Lifecycle Platform
Service2Media
 
SharePoint 2013 Hosted App Presentation by Roy Kim
Roy Kim
 
Mobile Cloud Demo
Mee Nam Lee
 
Sink Or Swim: Transitioning Your Software Business To SaaS
Apprenda
 
Simplifying Enterprise Mobility - Powering Mobile Apps from The Cloud
Joe Drumgoole
 
Dev ops for cross platform mobile modeveast 12
Sanjeev Sharma
 
Hybrid Mobile Application Framework
동수 장
 
Life After Mobilegeddon: App Deep Linking Strategies - Pubcon October 2015
Suzzicks
 
Cloud web applications: the new perspective of sproutcore
David Saitta
 
Ad

Similar to Social Enterprise Java Apps on Heroku Webinar (20)

PDF
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...
JAX London
 
PPT
Heroku for team collaboration
John Stevenson
 
PPT
Heroku for-team-collaboration
John Stevenson
 
PPTX
Heroku - developer playground
Troy Sellers
 
PDF
Salesforce Dev Day Paris - keynote
Guillaume Roques
 
PPTX
Dreamforce 2013 - Heroku 5 use cases
Vincent Spehner
 
PDF
Examples of Using Heroku With Force.com to Build Apps
Salesforce Developers
 
PPTX
Diving Into Heroku Private Spaces
Salesforce Developers
 
PDF
Building a Java Play! App on Heroku using Database.com
Salesforce Developers
 
PPTX
Brasil Roadshow
Joshua Birk
 
PDF
Intro to AT&T Toolkit for Salesforce Platform Webinar
Salesforce Developers
 
PPTX
Igor Androsov on Mobilizing Salesforce Data with 12 Factor App on Heroku
Igor Androsov
 
PDF
Dreamforce Debrief - The Salesforce.com platform - keynote by Dave Norris
Capgemini
 
PDF
Sfdc df2001-platformkeynotedavenorris
suyashawasthi
 
PDF
Introduction to HEROKU Salesforce1 Platform DevDay
Salesforce Developers
 
PDF
Enterprise Heroku for Java
Ayumu Aizawa
 
PPTX
Sao Paolo Workshop
Joshua Birk
 
PDF
Heroku + Salesforce = Partner Success
Alexander Sutherland
 
PPTX
Create a Force.com-Powered Facebook App on Heroku
Pat Patterson
 
PDF
Integrate Business Apps with Facebook, Twitter, and LinkedIn
Salesforce Developers
 
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...
JAX London
 
Heroku for team collaboration
John Stevenson
 
Heroku for-team-collaboration
John Stevenson
 
Heroku - developer playground
Troy Sellers
 
Salesforce Dev Day Paris - keynote
Guillaume Roques
 
Dreamforce 2013 - Heroku 5 use cases
Vincent Spehner
 
Examples of Using Heroku With Force.com to Build Apps
Salesforce Developers
 
Diving Into Heroku Private Spaces
Salesforce Developers
 
Building a Java Play! App on Heroku using Database.com
Salesforce Developers
 
Brasil Roadshow
Joshua Birk
 
Intro to AT&T Toolkit for Salesforce Platform Webinar
Salesforce Developers
 
Igor Androsov on Mobilizing Salesforce Data with 12 Factor App on Heroku
Igor Androsov
 
Dreamforce Debrief - The Salesforce.com platform - keynote by Dave Norris
Capgemini
 
Sfdc df2001-platformkeynotedavenorris
suyashawasthi
 
Introduction to HEROKU Salesforce1 Platform DevDay
Salesforce Developers
 
Enterprise Heroku for Java
Ayumu Aizawa
 
Sao Paolo Workshop
Joshua Birk
 
Heroku + Salesforce = Partner Success
Alexander Sutherland
 
Create a Force.com-Powered Facebook App on Heroku
Pat Patterson
 
Integrate Business Apps with Facebook, Twitter, and LinkedIn
Salesforce Developers
 
Ad

More from Salesforce Developers (20)

PDF
Sample Gallery: Reference Code and Best Practices for Salesforce Developers
Salesforce Developers
 
PDF
Maximizing Salesforce Lightning Experience and Lightning Component Performance
Salesforce Developers
 
PDF
Local development with Open Source Base Components
Salesforce Developers
 
PPTX
TrailheaDX India : Developer Highlights
Salesforce Developers
 
PDF
Why developers shouldn’t miss TrailheaDX India
Salesforce Developers
 
PPTX
CodeLive: Build Lightning Web Components faster with Local Development
Salesforce Developers
 
PPTX
CodeLive: Converting Aura Components to Lightning Web Components
Salesforce Developers
 
PPTX
Enterprise-grade UI with open source Lightning Web Components
Salesforce Developers
 
PPTX
TrailheaDX and Summer '19: Developer Highlights
Salesforce Developers
 
PDF
Live coding with LWC
Salesforce Developers
 
PDF
Lightning web components - Episode 4 : Security and Testing
Salesforce Developers
 
PDF
LWC Episode 3- Component Communication and Aura Interoperability
Salesforce Developers
 
PDF
Lightning web components episode 2- work with salesforce data
Salesforce Developers
 
PDF
Lightning web components - Episode 1 - An Introduction
Salesforce Developers
 
PDF
Migrating CPQ to Advanced Calculator and JSQCP
Salesforce Developers
 
PDF
Scale with Large Data Volumes and Big Objects in Salesforce
Salesforce Developers
 
PDF
Replicate Salesforce Data in Real Time with Change Data Capture
Salesforce Developers
 
PDF
Modern Development with Salesforce DX
Salesforce Developers
 
PDF
Get Into Lightning Flow Development
Salesforce Developers
 
PDF
Integrate CMS Content Into Lightning Communities with CMS Connect
Salesforce Developers
 
Sample Gallery: Reference Code and Best Practices for Salesforce Developers
Salesforce Developers
 
Maximizing Salesforce Lightning Experience and Lightning Component Performance
Salesforce Developers
 
Local development with Open Source Base Components
Salesforce Developers
 
TrailheaDX India : Developer Highlights
Salesforce Developers
 
Why developers shouldn’t miss TrailheaDX India
Salesforce Developers
 
CodeLive: Build Lightning Web Components faster with Local Development
Salesforce Developers
 
CodeLive: Converting Aura Components to Lightning Web Components
Salesforce Developers
 
Enterprise-grade UI with open source Lightning Web Components
Salesforce Developers
 
TrailheaDX and Summer '19: Developer Highlights
Salesforce Developers
 
Live coding with LWC
Salesforce Developers
 
Lightning web components - Episode 4 : Security and Testing
Salesforce Developers
 
LWC Episode 3- Component Communication and Aura Interoperability
Salesforce Developers
 
Lightning web components episode 2- work with salesforce data
Salesforce Developers
 
Lightning web components - Episode 1 - An Introduction
Salesforce Developers
 
Migrating CPQ to Advanced Calculator and JSQCP
Salesforce Developers
 
Scale with Large Data Volumes and Big Objects in Salesforce
Salesforce Developers
 
Replicate Salesforce Data in Real Time with Change Data Capture
Salesforce Developers
 
Modern Development with Salesforce DX
Salesforce Developers
 
Get Into Lightning Flow Development
Salesforce Developers
 
Integrate CMS Content Into Lightning Communities with CMS Connect
Salesforce Developers
 

Recently uploaded (20)

PDF
madgavkar20181017ppt McKinsey Presentation.pdf
georgschmitzdoerner
 
PDF
DevOps & Developer Experience Summer BBQ
AUGNYC
 
PDF
Enable Enterprise-Ready Security on IBM i Systems.pdf
Precisely
 
PDF
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
PDF
Cloud-Migration-Best-Practices-A-Practical-Guide-to-AWS-Azure-and-Google-Clou...
Artjoker Software Development Company
 
PDF
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
PDF
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
PPTX
C Programming Basics concept krnppt.pptx
Karan Prajapat
 
PDF
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
PDF
GYTPOL If You Give a Hacker a Host
linda296484
 
PPTX
Smart Infrastructure and Automation through IoT Sensors
Rejig Digital
 
PDF
Why Your AI & Cybersecurity Hiring Still Misses the Mark in 2025
Virtual Employee Pvt. Ltd.
 
PDF
Software Development Company | KodekX
KodekX
 
PPTX
ChatGPT's Deck on The Enduring Legacy of Fax Machines
Greg Swan
 
DOCX
Top AI API Alternatives to OpenAI: A Side-by-Side Breakdown
vilush
 
PPTX
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
PDF
Event Presentation Google Cloud Next Extended 2025
minhtrietgect
 
PDF
How Onsite IT Support Drives Business Efficiency, Security, and Growth.pdf
Captain IT
 
PDF
Building High-Performance Oracle Teams: Strategic Staffing for Database Manag...
SMACT Works
 
PDF
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
madgavkar20181017ppt McKinsey Presentation.pdf
georgschmitzdoerner
 
DevOps & Developer Experience Summer BBQ
AUGNYC
 
Enable Enterprise-Ready Security on IBM i Systems.pdf
Precisely
 
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
Cloud-Migration-Best-Practices-A-Practical-Guide-to-AWS-Azure-and-Google-Clou...
Artjoker Software Development Company
 
NewMind AI Weekly Chronicles - July'25 - Week IV
NewMind AI
 
SparkLabs Primer on Artificial Intelligence 2025
SparkLabs Group
 
C Programming Basics concept krnppt.pptx
Karan Prajapat
 
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
GYTPOL If You Give a Hacker a Host
linda296484
 
Smart Infrastructure and Automation through IoT Sensors
Rejig Digital
 
Why Your AI & Cybersecurity Hiring Still Misses the Mark in 2025
Virtual Employee Pvt. Ltd.
 
Software Development Company | KodekX
KodekX
 
ChatGPT's Deck on The Enduring Legacy of Fax Machines
Greg Swan
 
Top AI API Alternatives to OpenAI: A Side-by-Side Breakdown
vilush
 
AI and Robotics for Human Well-being.pptx
JAYMIN SUTHAR
 
Event Presentation Google Cloud Next Extended 2025
minhtrietgect
 
How Onsite IT Support Drives Business Efficiency, Security, and Growth.pdf
Captain IT
 
Building High-Performance Oracle Teams: Strategic Staffing for Database Manag...
SMACT Works
 
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 

Social Enterprise Java Apps on Heroku Webinar

  • 2. Safe Harbor Statement Safe harbor statement under the Private Securities Litigation Reform Act of 1995. This presentation may contain forward-looking statements that involve risks, uncertainties, and assumptions. If any such uncertainties materialize or if any of the assumptions proves incorrect, the results of salesforce.com, inc. could differ materially from the results expressed or implied by the forward looking-statements we make. All statements other than statements of historical fact could be deemed forward-looking, including any projections of product or service availability, subscriber growth, earnings, revenues, or other financial items and any statements regarding strategies or plans of management for future operations, statements of belief, any statements concerning new, planned, or upgraded services or technology developments and customer contracts or use of our services. The risks and uncertainties referred to above include - but are not limited to - risks associated with developing and delivering new functionality for our service, new products and services, our new business model, our past operating losses, possible fluctuations in our operating results and rate of growth, interruptions or delays in our Web hosting, breach of our security measures, the outcome of intellectual property and other litigation, risks associated with possible mergers and acquisitions, the immature market in which we operate, our relatively limited operating history, our ability to expand, retain, and motivate our employees and manage our growth, new releases of our service and successful customer deployment, our limited history reselling non- salesforce.com products, and utilization and selling to larger enterprise customers. Further information on potential factors that could affect the financial results of salesforce.com, inc. is included in our annual report on Form 10-Q for the most recent fiscal quarter ended. This documents and others containing important disclosures are available on the SEC Filings section of the Investor Information section of our Web site. Any unreleased services or features referenced in this or other presentations, press releases or public statements are not currently available and may not be delivered on time or at all. Customers who purchase our services should make the purchase decisions based upon features that are currently available. Salesforce.com, inc. assumes no obligation and does not intend to update these forward-looking statements.
  • 3. @forcedotcom , #forcewebinar, @Heroku, @anand_bn, @_JamesWard Developer Force Group facebook.com/forcedotcom facebook.com/heroku Developer Force – Force.com Community
  • 4. Anand B Narasimhan Senior Product Manager, Heroku [email protected] @anand_bn James L Ward Principal Developer Evangelist, Heroku [email protected] @_JamesWard
  • 5. - Paul Cheesbrough CIO, News International
  • 6. In this webinar…  What is a “Social Enterprise App”  Heroku – a short intro  Hands on with Java on Heroku  Building a Social Enterprise Heroku app  Coming soon to an IDE near you  Q&A
  • 7. The Social Enterprise Customer Social Network Social Profile Collaborate Market Work Service Extend Sell
  • 8. Market = Engage = Heroku 5 Years Ago Today Static, Passive Marketing Relevant, Active Marketing
  • 9. What are the building blocks of a Social Enterprise App ?
  • 11. Enterprise Apps Failover, App Server Clustering, Load Availability Admins, Network Balancers, SSL Admins Domains YOUR APP App crashes, Alerts, Logs mining Servers: Web Servers, App Servers, Database servers Visibility etc Infrastructure Ops, System Admins, App server Production support Admins, DBAs DR,Rollback, Replication Redundancy DBAs, Admins System
  • 12. Forget Run See Trust & Servers Anything Everything Manage $ heroku create worker: java –jar .. $heroku logs --tail $heroku ps
  • 13. Heroku User • Web browser Acces Architecture • API access http(s) Elastic Load Balancing Developer Control Surface APIs Code •Java •… Deploy REST •GIT Manage •Heroku CLI •Scaling •Monitoring
  • 14. Social Enterprise App Architecture Polyglot & Process Real time Addons Open Model Visibiility Social API Data API Metadata API Access Management Identity Profiles Permissions Record-Level Filtering Data Business Data Metadata Files
  • 15. Getting started with Spring MVC app on Heroku ( http://java.heroku.com )
  • 17. Building a Social Enterprise App With Heroku and Salesforce.com
  • 18. Integrating with Salesforce.com 1.Setup OAuth 2.Update dependencies 3.Switch Entity to JSON 4.Switch DAO to Force REST API 5.Switch Spring Config to Force REST + OAuth 6.Add Servlet Filter for Oauth 7.Add Oauth Keys to the environment
  • 19. Dyno 1. Build 2. Slug Compile 3. Deploy to Dyno Embedded Container WAR $ git push heroku Dependencies pom.xml $ mvn install Your code Under the
  • 21. Spring MVC app With Heroku & Salesforce.com And Chatter APIs
  • 22. What’s possible… Social Feeds, Real time/ Push Recommendations Notifications Social Enterpris e App Streaming Analytics Data
  • 24. Heroku Labs • WAR deployment (http://bit.ly/war-deploy ) • Jenkins plugin for Heroku(http://bit.ly/heroku-ci ) • Heroku.jar- Java Wrapper (http://bit.ly/heroku- jar ) • Atlassian Bamboo plugin for Heroku (Email [email protected] for more details) you can try these out now. We would love your feedback
  • 25. Coming Soon + = like
  • 26. Coming Soon All day HEROKU ENTERPRISE DEVELOPER WORKSHOP Email [email protected] if you are interested
  • 27. Resources  Getting Started -  http://java.heroku.com  http://bit.ly/heroku-java  Toolbelt (http://toolbelt.herokuapp.com )  Heroku Dev Center : http://devcenter.heroku.com  Heroku Add-ons: http://addons.heroku.com  Git: http://help.github.com/  Webinar Source code:  Spring MVC - Force.com : http://bit.ly/KZB68y  Chatter - http://bit.ly/KgMlPP  Pusher integration - http://bit.ly/KMVInx
  • 28. Upcoming Events • June 12 – Visualforce CodeTalk  http://bit.ly/codetalkheroku • June 13 – How Salesforce.com Uses Hadoop Webinar  http://bit.ly/hadoopheroku • June 26 – Mobile CodeTalk  http://bit.ly/mct-wr
  • 29. Survey: http://bit.ly/herokujavasurvey Heroku Devcenter: http://devcenter.heroku.com James Ward @_JamesWard Anand Narasimhan @anand_bn Developer Evangelist at Heroku Sr. Product Manager at Heroku [email protected] [email protected]
  • 31. 1. Setup OAuth i. Salesforce.com > Setup > Develop > Remote Access ii. Add Remote Access for Dev & Prod • Dev Callback URL: http://localhost:8080/_auth • Prod Callback URL: https://some-app-1234.herokuapp.com/_auth
  • 32. 2. Update dependencies <repositories> <repository> <id>force-rest-api</id> <name>force-rest-api repository on GitHub</name> <url> http://jesperfj.github.com/force-rest-api/repository/ </url> </repository> </repositories>
  • 33. 2. Update dependencies <dependency> <groupId>com.force.api</groupId> <artifactId>force-rest-api</artifactId> <version>0.0.15</version> </dependency> <dependency> <groupId>com.force.sdk</groupId> <artifactId>force-oauth</artifactId> <version>22.0.8-BETA</version> </dependency> <dependency> <groupId>com.force.sdk</groupId> <artifactId>force-springsecurity</artifactId> <version>22.0.8-BETA</version> </dependency>
  • 34. 3. Switch Entity to JSON @JsonIgnoreProperties(ignoreUnknown=true) public class Person { @JsonProperty(value="Id") private String id; @JsonProperty(value="FirstName") private String firstName; @JsonProperty(value="LastName") private String lastName;
  • 35. 4. Switch DAO to Force REST API private ForceApi getForceApi() { SecurityContext sc = ForceSecurityContextHolder.get(); ApiSession s = new ApiSession(); s.setAccessToken(sc.getSessionId()); s.setApiEndpoint(sc.getEndPointHost()); return new ForceApi(s); } // Add Contact getForceApi().createSObject("contact", person); // Query Contacts getForceApi().query("SELECT Id FROM contact", Person.class); // Delete Contact getForceApi().deleteSObject("contact", id);
  • 36. 5. Spring Config + OAuth <fss:oauth> <fss:oauthInfo endpoint="http://login.salesforce.com" oauth-key="#{systemEnvironment['OAUTH_CLIENT_KEY']}" oauth-secret="#{systemEnvironment['OAUTH_CLIENT_SECRET']}"/> </fss:oauth> <security:http use-expressions="true"> <security:intercept-url pattern="/people/*" access="isAuthenticated()" /> </security:http> <!-- https redirect support --> <property name="redirectHttp10Compatible" value="false" />
  • 37. 6. Add Servlet Filter for Oauth <filter> <filter-name>springSecurityFilterChain</filter-name> <filter-class> org.springframework.web.filter.DelegatingFilterProxy </filter-class> <init-param> <param-name>contextAttribute</param-name> <param-value> org.springframework.web.servlet.FrameworkServlet.CONTEXT.spring </param-value> </init-param> </filter> <filter-mapping> <filter-name>springSecurityFilterChain</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
  • 38. 7. Add Oauth Keys export OAUTH_CLIENT_KEY=CQ3gmEE53MVG99OxTyEMal8ytj1E3NF7... export OAUTH_CLIENT_SECRET=0905539091246761180 heroku config:add OAUTH_CLIENT_KEY=CQ3gmEE53MVG99OxTyEMal8yt... heroku config:add OAUTH_CLIENT_SECRET=0905539091246761180