SlideShare una empresa de Scribd logo
1 de 105
Google AppEngine
     Paul Bakker
About me
  Paul Bakker
• Trainer Info Support            Hibernat
                         EJB 3
                                  e
• NLJUG speaker          JSF
                                  Flex
• Java Magazine author   Seam
                                  Groovy
                         JavaFX
                                  Grails
                         Spring
About Info Support
•   Financieel gezond sinds oprichting 1986
•   Focus op IT vakmanschap
•   Brede en integrale dienstverlening
•   Partnerships met o.a. Microsoft, IBM, NLJUG
•   Vestigingen in Nederland en België
    - 250+ medewerkers in Nederland
    - 25 medewerkers in België
Presentation Goal

Introduction to
  Developing
    applications for

 AppEngine
Outline         AppEngine
 Cloud          Services
 offerings      Using
 Introducing    frameworks
 AppEngine      Pricing
 Developing
 and
 deploying
 Storing data
Clouds N’ stuff
Infrastructure
 as a Service
                 Platform as a
                    Service
 Software as a
    Service
Infrastructure
              as a Service
 A virtual hardware platform
  Full control of the operating system

Custom configuration of application servers
Infrastructure
                as a Service
Pros
It’s just works like your old hardware
     No development limitations
 No lock-in


                   Cons
                     You still have to manage servers
                         No automatic scaling
Platform as a
                Service
A virtual application server
   No control of the operating system
Running in a sandbox
Platform as a
                 Service
 Pros
No more server management
    Easy deployment
Automatic scaling
                   Cons
                        Limited by the sandbox
                      Can’t run existing apps
Software as a
                  Service
Run an application from the cloud
  Might extend the application using a
             proprietary API
AppEngine
  Intro
AppEngine architecture
Handling requests
Each application gets a free domain name
  http://yourappname.appspot.com
You can add your own domain name
Each request has a 30 second timeout
Streaming responses are not supported
Scaling
JVMs are started on demand
  on app startup
  after inactivity
  when upscaling
Starting a JVM causes a “loading request”
  the app is loaded during that request
Loading request
     optimization
Application startup time is now important
  the app might be started after a request
Reduce the use of libraries
Prevent heavy initialization code
  share data with multiple JVMs using
  MemCache
The sandbox
You can’t
   Write to the file system
   Open sockets
   Start threads
   Invoke most System calls
   Reflect on classes not belonging to the app
   Use JRE classes not on the white list
Supported
Java Data Objects (JDO)
Java Persistence API (JPA)
Java Server Faces (JSF)
Java Server Pages (JSP) and JSTL
Java Servlet API 2.4
JavaBeans Activation Framework (JAF)
Java Architecture for XML Binding (JAXB)
JavaMail
XML processing APIs including DOM, SAX and XSLT
Not Supported
Enterprise Java Beans (EJB)
JAX-WS and JAX-RPC
JDBC
Java EE Connector Architecture (JCA)
Java Management Extensions (JMX)
Java Message Service (JMS)
Java Naming and Directory Interface (JNDI)
Remote Method Invocation (RMI)
Creating and
uploading an application
Storing Data
DataStore
Distributed architecture
Highly scalable
Not relational
Schemaless
Properties have one or more values
Sharded architecture
          Row name   Values
             A        [...]
             B        [...]
             C        [...]


          Row name   Values
             D        [...]
             E        [...]
             F        [...]


          Row name   Values
             G        [...]
             H        [...]
             I        [...]
Entity storage
   Kind => table
   Key => primary key
   Entity Group => partition
   Typed properties => columns

Kind                       Person
Entity Group               /Person:Paul
Key                        /Person:Paul
name                       string: Paul Bakker
colleagues                 Key:/Speaker(68)   Key:/Speaker(15)
Entity Groups

Entities are hierarchical
Useful for “owned” relations
  a chapter can’t exist without a book
  /Book(24)/Chapter(2)/Paragraph(3)
Queries
Supported filters
 < less than

 <= less than or equal to

 = equal to

 > greater than

 >= greater than or equal to

 != not equal to
Indexes
Each query uses an index
One index for each combination of:
  kind
 filter property
 operator
 sort order
Index example
              JPQL queries
                 select s from Speaker s order by s.firstname, s.lastname

select s from Speaker s WHERE s.firstname LIKE :firstname order by s.firstname, s.lastname

select s from Speaker s WHERE lastname LIKE :lastname order by s.lastname, s.firstname




       Index configuration
Transactions
The DataStore is transactional
All DataStore write operations are atomic
Only a single Entity Group can be used
within a transaction
  entities in the same group live physically
  together
Transactions
Transactions
Begin transaction
Transactions
Begin transaction
Create new Speaker (/Speaker(1))
Transactions
Begin transaction
Create new Speaker (/Speaker(1))
Add Talk (/Speaker(1)/Talk(1))
Transactions
Begin transaction
Create new Speaker (/Speaker(1))
Add Talk (/Speaker(1)/Talk(1))
Add new Speaker (/Speaker(2))
Transactions
Begin transaction
Create new Speaker (/Speaker(1))
Add Talk (/Speaker(1)/Talk(1))
Add new Speaker (/Speaker(2))
Commit transaction
Transactions
Begin transaction
Create new Speaker (/Speaker(1))
Add Talk (/Speaker(1)/Talk(1))
Commit transaction
Begin transaction
Add new Speaker (/Speaker(2))
Commit transaction
Transaction Isolation
Within a transaction: Serializable
  transactions are completely isolated
Outside a transaction: Read Committed
  get() will only consist of committed data
  queries are more subtle
Understand commits
      A commit() consists of two milestones
        1 changes to entities visible
        2 changes to indexes visible




the entity is updated, but might not be
    returned by a predicate query
Understand commits
       bob.age == 18

Transaction 1
       bob.age += 1




                      select ... where age = 18
Transaction 2
Understand commits
       bob.age == 18

Transaction 1
       bob.age += 1




                      select ... where age = 18
Transaction 2
                         bob is returned
Understand commits
       bob.age == 18

Transaction 1
       bob.age += 1




                      select ... where age = 18
Transaction 2
                         bob is returned
                           bob.age == 19
The low level API

JDBC like API
Work directly with untyped entities and
properties
Query using GQL
Creating entities
Queries
GQL
SELECT [* | __key__] FROM <kind>
   [WHERE <condition> [AND <condition> ...]]
   [ORDER BY <property> [ASC | DESC] [, <property> [ASC | DESC] ...]]
   [LIMIT [<offset>,]<count>]
   [OFFSET <offset>]

<condition> := <property> {< | <= | > | >= | = | != } <value>
<condition> := <property> IN <list>
<condition> := ANCESTOR IS <entity or key>
GQL
Setting up JPA

Add JPA and DataNucleus jars
Create persistence.xml
Configure post-compilation class
enhancement
Persistence Unit
EntityManagerFactory
Creating an Entity
JPA limitations
No “Joined” inheritance
No “Single Table” inheritance
  would be technically possible
No many-to-many relationships
No join-queries
No aggregation queries
No polymorphic queries
Owned relationships

The “owned” entity only has meaning when
it’s parent exists
 Key includes parent key
/Department(24)/Employee(2)
Owned relations
Owned relations
Polymorphic relations




Throws exception!
Using JPA
Unowned relations




No referential checks!
Unowned relations

Both entities can exist without the other
  an employee and it’s colleagues
  Cannot be used within the same
  transaction
Loading collections
Many-to-many


GAE doesn’t support JPA many-to-many
Work around by mapping key collections
Unowned collections
Constraining pages

Uses Google Accounts
Require users to log-in
Require the admin role
  admin == developer on GAE
Require to
  login




 Require
admin role
Login and logout
Login




Logout
Using Google Accounts
Services                Mail
           Users
  Queus
      MemCache

                    Blob Store

                   Cron Jobs
Mail service
Receiving mail
!   Mail can be send to
  somename@appid.appspotmail.com!


                      POST!
        AppEngine!            MyServlet!
                          /_ah/mail/address!
Cron Jobs

Tasks that run automatically on specific
times or intervals
  sending a week report
  nightly cleanup
Executing a job is invoking a URL
Configuring jobs
Configure job in WEB-INF/cron.xml
Cron syntax
              every N (hours|mins|minutes)


("every"|ordinal) (days) ["of" (monthspec)] (time)


          Examples
            every 5 minutes
            every 12 hours
            2nd,third mon,wed,thu of march 17:00
            every monday 09:00
            1st monday of sep,oct,nov 17:00
            every day 00:00
Cron jobs
Task Queues
Process asynchronous, parallel background
tasks
Modeled as web hooks
 a request to a web hook is scheduled
 the request handler is just like any other
 user request
 a web hook has data and code
Task queue use cases
Send multiple confirmation emails
 each email is sent by a request to the
 same task with different data
Place order
 send confirmation email (task 1)
 send notification to admin (task 2)
Adding tasks


/notification
Configuring queues
     WEB-INF/queue.xml




rate: throttling task execution
bucket-size: “token-bucket” algorithm
Task Queues
Saving files
Store files up to 50 mb in the BlobStore
Upload by form POST
  file is uploaded to the BlogStore
  get a blob key in code
Serve file using blob key
Upload file
Serving files
Listing blobs
BlobStore
MemCache

Distributed in-memory cache
 e.g. cache frequent queries
JCache API (JSR 107)
Low level API
Using a cache
 Cache expires after 3600 miliseconds
Memcache
Frameworks
on AppEngine
Frameworks
   A lot of frameworks work “mostly”
         but you never know if/when it breaks...
JSF 1.2                  e.g. RichFaces is not!
 JSF 2                      disable threads
Grails                      using a plugin
 Weld                       multiple issues
JAX-WS
 EJB
Spring                  some modules are not
 JMS
Testing
Unit Testing

Easy out of container unit testing
In-memory DataService, MailService,
MemcacheService, TaskQueue,
AuthenticationService etc.
Setup
  local
datastore
Create
datastore
 instance
Use
datastore
   API
 directly
Using JPA
TaskQueue testing
     (setup)
TaskQueue testing
     (test)
Unit Testing
Costs
Quotas
                       Free Default Quota                     Billing Enabled Default Quota

Resource

                       Daily Limit          Maximum Rate      Daily Limit           Maximum Rate


                                            7,400 requests/   43,000,000            30,000 requests/
Requests               1,300,000 requests
                                            minute            requests              minute

Outgoing                                    56 megabytes/     1 gigabyte free;      10 gigabytes/
Bandwidth (billable,   1 gigabyte                             1,046 gigabytes
                                            minute                                  minute
includes HTTPS)                                               maximum

Incoming                                    56 megabytes/     1 gigabyte free;      10 gigabytes/
Bandwidth (billable,   1 gigabyte                             1,046 gigabytes
                                            minute                                  minute
includes HTTPS)                                               maximum

                                            15 CPU-minutes/   6.5 CPU-hours free;   72 CPU-minutes/
CPU Time (billable)    6.5 CPU-hours                          1,729 CPU-hours
                                            minute                                  minute
                                                              maximum
Pricing
Resource       Unit            Unit cost


Outgoing
               gigabytes       $0.12
Bandwidth


Incoming
               gigabytes       $0.10
Bandwidth


CPU Time       CPU hours       $0.10


               gigabytes per
Stored Data                    $0.15
               month


Recipients
               recipients      $0.0001
Emailed
Setting a budget
The verdict
Deployment can’t get any
easier
Sandbox can be a show
stopper
Apps should be
developed specifically for
AppEngine
Google AppEngine
     Paul Bakker

Más contenido relacionado

La actualidad más candente

Java EE 7 (Hamed Hatami)
Java EE 7 (Hamed Hatami)Java EE 7 (Hamed Hatami)
Java EE 7 (Hamed Hatami)
Hamed Hatami
 
A Groovy Way to Interface With Cascade Server
A Groovy Way to Interface With Cascade ServerA Groovy Way to Interface With Cascade Server
A Groovy Way to Interface With Cascade Server
hannonhill
 
Carlos Amador .Net Portfolio
Carlos Amador .Net PortfolioCarlos Amador .Net Portfolio
Carlos Amador .Net Portfolio
CMA_SlideShare
 

La actualidad más candente (20)

Wicket Introduction
Wicket IntroductionWicket Introduction
Wicket Introduction
 
IBM ConnectED 2015 - MAS103 XPages Performance and Scalability
IBM ConnectED 2015 - MAS103 XPages Performance and ScalabilityIBM ConnectED 2015 - MAS103 XPages Performance and Scalability
IBM ConnectED 2015 - MAS103 XPages Performance and Scalability
 
Linguistic Abstraction for the Web
Linguistic Abstraction for the WebLinguistic Abstraction for the Web
Linguistic Abstraction for the Web
 
JavaOne 2011: Migrating Spring Applications to Java EE 6
JavaOne 2011: Migrating Spring Applications to Java EE 6JavaOne 2011: Migrating Spring Applications to Java EE 6
JavaOne 2011: Migrating Spring Applications to Java EE 6
 
Java EE 8 Recipes
Java EE 8 RecipesJava EE 8 Recipes
Java EE 8 Recipes
 
Getting Started with jQuery
Getting Started with jQueryGetting Started with jQuery
Getting Started with jQuery
 
JavaScript
JavaScriptJavaScript
JavaScript
 
HTML5 Refresher
HTML5 RefresherHTML5 Refresher
HTML5 Refresher
 
An introduction to DOM , JAVASCRIPT , JQUERY, AJAX and JSON
An introduction to DOM , JAVASCRIPT , JQUERY, AJAX and JSONAn introduction to DOM , JAVASCRIPT , JQUERY, AJAX and JSON
An introduction to DOM , JAVASCRIPT , JQUERY, AJAX and JSON
 
Java EE 7 (Hamed Hatami)
Java EE 7 (Hamed Hatami)Java EE 7 (Hamed Hatami)
Java EE 7 (Hamed Hatami)
 
HTML5: the new frontier of the web
HTML5: the new frontier of the webHTML5: the new frontier of the web
HTML5: the new frontier of the web
 
Domain Driven Design using Laravel
Domain Driven Design using LaravelDomain Driven Design using Laravel
Domain Driven Design using Laravel
 
Amis conference soa deployment. the dirty tricks using bamboo, nexus and xl ...
Amis conference soa deployment. the dirty tricks using  bamboo, nexus and xl ...Amis conference soa deployment. the dirty tricks using  bamboo, nexus and xl ...
Amis conference soa deployment. the dirty tricks using bamboo, nexus and xl ...
 
FREE Sql Server syllabus
FREE Sql Server syllabusFREE Sql Server syllabus
FREE Sql Server syllabus
 
Utilizing JSF Front Ends with Microservices
Utilizing JSF Front Ends with MicroservicesUtilizing JSF Front Ends with Microservices
Utilizing JSF Front Ends with Microservices
 
Hybernat and structs, spring classes in mumbai
Hybernat and structs, spring classes in mumbaiHybernat and structs, spring classes in mumbai
Hybernat and structs, spring classes in mumbai
 
A Groovy Way to Interface With Cascade Server
A Groovy Way to Interface With Cascade ServerA Groovy Way to Interface With Cascade Server
A Groovy Way to Interface With Cascade Server
 
Modern development paradigms
Modern development paradigmsModern development paradigms
Modern development paradigms
 
7 Tips For Better JDeveloper Experience
7 Tips For Better JDeveloper Experience7 Tips For Better JDeveloper Experience
7 Tips For Better JDeveloper Experience
 
Carlos Amador .Net Portfolio
Carlos Amador .Net PortfolioCarlos Amador .Net Portfolio
Carlos Amador .Net Portfolio
 

Destacado (7)

Spring 2.5
Spring 2.5Spring 2.5
Spring 2.5
 
Els DéUs óLíMpics En L’Art.
Els DéUs óLíMpics En L’Art.Els DéUs óLíMpics En L’Art.
Els DéUs óLíMpics En L’Art.
 
Web Applications of the future: Combining JEE6 & JavaFX
Web Applications of the future: Combining JEE6 & JavaFXWeb Applications of the future: Combining JEE6 & JavaFX
Web Applications of the future: Combining JEE6 & JavaFX
 
Rich Enterprise Applications with JavaFX
Rich Enterprise Applications with JavaFXRich Enterprise Applications with JavaFX
Rich Enterprise Applications with JavaFX
 
JavaFX - Sketch Board to Production
JavaFX - Sketch Board to ProductionJavaFX - Sketch Board to Production
JavaFX - Sketch Board to Production
 
JavaFX 2 Rich Desktop Platform
JavaFX 2 Rich Desktop PlatformJavaFX 2 Rich Desktop Platform
JavaFX 2 Rich Desktop Platform
 
Building RIA Applications with JavaFX
Building RIA Applications with JavaFXBuilding RIA Applications with JavaFX
Building RIA Applications with JavaFX
 

Similar a Appengine Nljug

540slidesofnodejsbackendhopeitworkforu.pdf
540slidesofnodejsbackendhopeitworkforu.pdf540slidesofnodejsbackendhopeitworkforu.pdf
540slidesofnodejsbackendhopeitworkforu.pdf
hamzadamani7
 
Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan Msdn Tech Days Oc Day2Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan
 

Similar a Appengine Nljug (20)

540slidesofnodejsbackendhopeitworkforu.pdf
540slidesofnodejsbackendhopeitworkforu.pdf540slidesofnodejsbackendhopeitworkforu.pdf
540slidesofnodejsbackendhopeitworkforu.pdf
 
How to generate customized java 8 code from your database
How to generate customized java 8 code from your databaseHow to generate customized java 8 code from your database
How to generate customized java 8 code from your database
 
Apex Enterprise Patterns: Building Strong Foundations
Apex Enterprise Patterns: Building Strong FoundationsApex Enterprise Patterns: Building Strong Foundations
Apex Enterprise Patterns: Building Strong Foundations
 
RavenDB overview
RavenDB overviewRavenDB overview
RavenDB overview
 
Play framework : A Walkthrough
Play framework : A WalkthroughPlay framework : A Walkthrough
Play framework : A Walkthrough
 
Intro to Application Express
Intro to Application ExpressIntro to Application Express
Intro to Application Express
 
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
How to JavaOne 2016 - Generate Customized Java 8 Code from Your Database [TUT...
 
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
JavaOne2016 - How to Generate Customized Java 8 Code from Your Database [TUT4...
 
SPUnite17 Timer Jobs Event Handlers
SPUnite17 Timer Jobs Event HandlersSPUnite17 Timer Jobs Event Handlers
SPUnite17 Timer Jobs Event Handlers
 
Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan Msdn Tech Days Oc Day2Daniel Egan Msdn Tech Days Oc Day2
Daniel Egan Msdn Tech Days Oc Day2
 
O365Con19 - Developing Timerjob and Eventhandler Equivalents - Adis Jugo
O365Con19 - Developing Timerjob and Eventhandler Equivalents - Adis JugoO365Con19 - Developing Timerjob and Eventhandler Equivalents - Adis Jugo
O365Con19 - Developing Timerjob and Eventhandler Equivalents - Adis Jugo
 
The Magic Of Application Lifecycle Management In Vs Public
The Magic Of Application Lifecycle Management In Vs PublicThe Magic Of Application Lifecycle Management In Vs Public
The Magic Of Application Lifecycle Management In Vs Public
 
Getting Started with Serverless Architectures
Getting Started with Serverless ArchitecturesGetting Started with Serverless Architectures
Getting Started with Serverless Architectures
 
ArcReady - Architecting For The Cloud
ArcReady - Architecting For The CloudArcReady - Architecting For The Cloud
ArcReady - Architecting For The Cloud
 
The "Holy Grail" of Dev/Ops
The "Holy Grail" of Dev/OpsThe "Holy Grail" of Dev/Ops
The "Holy Grail" of Dev/Ops
 
Intro To Spring Python
Intro To Spring PythonIntro To Spring Python
Intro To Spring Python
 
Five Ways Automation Has Increased Application Deployment and Changed Culture
Five Ways Automation Has Increased Application Deployment and Changed CultureFive Ways Automation Has Increased Application Deployment and Changed Culture
Five Ways Automation Has Increased Application Deployment and Changed Culture
 
North east user group tour
North east user group tourNorth east user group tour
North east user group tour
 
Workflow Management with Espresso Workflow
Workflow Management with Espresso WorkflowWorkflow Management with Espresso Workflow
Workflow Management with Espresso Workflow
 
FLossEd-BK Tequila Framework3.2.1
FLossEd-BK Tequila Framework3.2.1FLossEd-BK Tequila Framework3.2.1
FLossEd-BK Tequila Framework3.2.1
 

Último

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 

Último (20)

Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 

Appengine Nljug

Notas del editor

  1. -Maak een nieuwe appengine applicatie -Run de applicatie lokaal -Pas het application id aan in de settings -Upload de applicatie -Bekijk in de browser -Doe een aanpassing -Bekijk opnieuw in de browser
  2. Demo 1: DataStoreServlet /datastoredemo Een speaker heeft talks /Speaker(1)/Talk(1) Een speaker en talk kan in dezelfde transactie worden opgeslagen Twee verschillende speakers kunnen niet in dezelfde transactie worden opgeslagen.
  3. Demo 1: DataStoreServlet /datastoredemo Een speaker heeft talks /Speaker(1)/Talk(1) Een speaker en talk kan in dezelfde transactie worden opgeslagen Twee verschillende speakers kunnen niet in dezelfde transactie worden opgeslagen.
  4. Demo 1: DataStoreServlet /datastoredemo Een speaker heeft talks /Speaker(1)/Talk(1) Een speaker en talk kan in dezelfde transactie worden opgeslagen Twee verschillende speakers kunnen niet in dezelfde transactie worden opgeslagen. Een speaker heeft ook collega&amp;#x2019;s. Collega&amp;#x2019;s zijn niet &amp;#x201C;owned&amp;#x201D; en daarom kan alleen de key worden opgeslagen ipv de entity zelf. Kijk naar speaker.addColleague en speaker.getCollegues
  5. web.xml /secure
  6. cron.xml demo.cron.ReportServlet
  7. http://groups.google.com/group/google-appengine-java/web/will-it-play-in-app-engine
  8. Creating and uploading an application