SlideShare une entreprise Scribd logo
1  sur  55
Télécharger pour lire hors ligne
Peter Ledbrook / VMware


       Grails in the Java Enterprise



Tuesday, 1 November 11
What is Grails?

    Rapid Web Application Development Framework
          • for the JVM
          • with first-class Java integration
    Inspired by Ruby on Rails, Django and others
          • Convention over Configuration
          • Don’t Repeat Yourself (DRY)




                                                   2

Tuesday, 1 November 11
What is Grails?

                 Grails
                                                         Servlet
                          Web MVC        GSP (Views)
                                                        Container


                            GORM
                                          Database        I18n
                         (Data Access)



                            Build        Test Support   Doc Engine




                                                                     3

Tuesday, 1 November 11
What is Grails?

                         Grails




                                  4

Tuesday, 1 November 11
What is Grails?


                         Web Controllers
   The Domain Model
                         i18n bundles
   Business Logic
                         Custom View Tags
   Views & Layouts
                         Libraries (JARs)
   Build Commands
                         Additional Sources
   Tests
                         Web Resources
                                        5

Tuesday, 1 November 11
Say bye-bye to the plumbing!




                                   6

Tuesday, 1 November 11
Demo

    Demo




                         7


Tuesday, 1 November 11
Enterprise requirements
                                            Web App




                    Messaging                                    JEE



                                 Legacy
                                                      Services
                                Databases



                          Is this a problem for Grails apps?

                                                                       8

Tuesday, 1 November 11
Integration Points

    Build
    Dependencies
    Database
    Deployment
    Spring



                         9

Tuesday, 1 November 11
Integration Points

    Build
    Dependencies
    Database
    Deployment
    Spring



                         10

Tuesday, 1 November 11
Build




                         11

Tuesday, 1 November 11
Build
    Remember the Grails project structure?
          • add in build events and...

                    Can’t build natively with other build tools!




                         Ant            Maven           Gradle




                                  Grails Build System
                                                                   12

Tuesday, 1 November 11
Ant Integration

    An Ant task built in (grails.ant.GrailsTask)
    Template Ant build:
         grails integrate-with --ant
          • Uses Ivy for dependency management
          • Not compatible with Ant 1.8
    ...or use ‘java’ task to call Grails command
          • Grails manages dependencies
          • Use ‘grails’ for build

                                                   13

Tuesday, 1 November 11
Maven

    Maven Grails Plugin:
         https://github.com/grails/grails-maven
    Use Maven 2 or 3 to build Grails projects
    Declare dependencies in POM
    Works for both applications and plugins!
    Integration test framework:
       https://github.com/grails/
       grails_maven_plugin_testing_tests


                                                  14

Tuesday, 1 November 11
Getting Started

                         mvn archetype-generate ...

                                              e.g. -Xmx256m
                                 mvn initialize
                                              -XX:MaxPermSize=256m



                             Set MAVEN_OPTS



              Optional: add ‘pom true’ to dependency DSL


                                                            15

Tuesday, 1 November 11
Packaging Types

    ‘war’
          • Must configure execution section
          • Works with plugins that depend on ‘war’
    ‘grails-app’
          • Less configuration
    ‘grails-plugin’
          • For plugins!




                                                      16

Tuesday, 1 November 11
Maven & Grails Plugins


                         > grails release-plugin
                                   ==
                             > mvn deploy


                                                   17

Tuesday, 1 November 11
Maven & Grails Plugins
       Either:

              <dependency>
               <groupId>org.grails.plugins<groupId>
               <artifactId>hibernate</artifactId>
               <type>grails-plugin</type>
              </dependency>


              Use ‘mvn deploy’ or Release plugin!
              And ‘pom: false’


                                                      18

Tuesday, 1 November 11
Maven & Grails Plugins
         Or:

               grails.project.dependency.resolution = {
                 ...
                 plugins {
                     compile ":hibernate:1.3.6"
                 }
                 ...
               }




                                                          19

Tuesday, 1 November 11
Customise the Build

    Create new commands in <proj>/scripts
    Package the commands in a plugin!
    Create <proj>/scripts/_Events.groovy
          • Interact with standard build steps
          • Add test types
          • Configure embedded Tomcat




                                                 20

Tuesday, 1 November 11
What the future holds...

    Grails 3.0 will probably move to Gradle
          • More powerful and more flexible
          • Standard, well documented API
          • Ant & Maven support




                                              21

Tuesday, 1 November 11
Integration Points

    Build
    Dependencies
    Database
    Deployment
    Spring



                         22

Tuesday, 1 November 11
Dependencies are JARs

    Use any Java library you like!
    Full support for Maven-compatible repositories
    Declarative dependencies
    Plugins can be declared the same way




                                                     23

Tuesday, 1 November 11
Dependency DSL
        grails.project.dependency.resolution = {
          inherits "global"
          log "warn"
          repositories {
              grailsHome()
              mavenCentral()
              mavenRepo "http://localhost:8081/..."
          }
          ...
        }




                                                      24

Tuesday, 1 November 11
Dependency DSL
        grails.project.dependency.resolution = {
          inherits "global"
          log "warn"
          ...
          dependencies {
              compile "org.tmatesoft.svnkit:svnkit:1.3.3"
              test "org.gmock:gmock:0.8.1"
          }
          ...
        }




                                                            25

Tuesday, 1 November 11
Integration Points

    Build
    Dependencies
    Database
    Deployment
    Spring



                         26

Tuesday, 1 November 11
‘Legacy’ Databases

    Grails can create a database from your domain model...
    ...but what if you don’t own the database?
          • DBA determines structure
          • Company conventions
          • Existing ‘legacy’ database




                                                      27

Tuesday, 1 November 11
Option 1: Custom ORM mapping
     No existing domain model
     Schema not too far off the beaten track
      class Book {
         ...
         static mapping = {
             table "books"
             title type: "books"
             author column: "author_ref"
         }
      }




                                               28

Tuesday, 1 November 11
Option 2: JPA annotations
     Existing Java/JPA domain model

      <?xml version='1.0' encoding='UTF-8'?>
      <!DOCTYPE ...>
      <hibernate-configuration>
        <session-factory>
           <mapping class="org.ex.Book"/>
           <mapping class="org.ex.Author"/>
           ...
        </session-factory>
      </hibernate-configuration>
                                 grails-app/conf/hibernate/hibernate.cfg.xml


                                                                  29

Tuesday, 1 November 11
Option 3: Hibernate XML Mappings
     You have Java model + Hibernate mapping files
     Schema is way off the beaten track

      <?xml version='1.0' encoding='UTF-8'?>
      <!DOCTYPE ...>
      <hibernate-configuration>
        <session-factory>
           <mapping resource="org.ex.Book.hbm.xml"/>
           <mapping resource="org.ex.Author.hbm.xml"/>
           ...
        </session-factory>
      </hibernate-configuration>
                                grails-app/conf/hibernate/hibernate.cfg.xml

                                                                 30

Tuesday, 1 November 11
Constraints
     Given domain class:

             org.example.myapp.domain.Book

     Then:

             src/java/org/example/myapp/domain/BookConstraints.groovy

       constraints = {
         title blank: false, unique: true
         ...
       }


                                                                        31

Tuesday, 1 November 11
Option 4: GORM JPA Plugin

    GORM layer over JPA
    Use your own JPA provider
    Useful for cloud services that only work with JPA, not
      Hibernate




                                                         32

Tuesday, 1 November 11
Option 5: Remote service back-end
    Don’t have to use GORM
    Use only controllers and services
          • Grails services back onto remote services


                                      Web App



            SOAP, RMI, HTTP Invoker, etc.



                           Invoice          Log Service
                                                          ...


                                                                33

Tuesday, 1 November 11
Share your model!




                         34

Tuesday, 1 November 11
Database Management
                         Hibernate ‘update’
                                 +
                          Production data
                                 =

                                 ?


                                              35

Tuesday, 1 November 11
Database Migration Plugin
                   Pre-production, Hibernate ‘update’ or ‘create-drop’



                                 dbm-generate-changelog
                                   dbm-changelog-sync




                                  Change domain model




                                      dbm-gorm-diff
                                       dbm-update


                                                                         36

Tuesday, 1 November 11
Reverse Engineering Plugin



                         class Person {
                             String name
                             Integer age
                             ...
                         }




                                    37

Tuesday, 1 November 11
Database Management

           Database Migration

               http://grails.org/plugin/database-migration



           Reverse Engineering

               http://grails.org/plugin/database-migration




                                                             38

Tuesday, 1 November 11
Integration Points

    Build
    Dependencies
    Database
    Deployment
    Spring



                         39

Tuesday, 1 November 11
grails war

    Build properties:
          • grails.war.copyToWebApp
          • grails.war.dependencies
          • grails.war.resources
          • grails.project.war.file




                                      40

Tuesday, 1 November 11
Control of JARs
        grails.project.dependency.resolution = {
          defaultDependenciesProvided true
          inherits "global"
          log "warn"
          ...
        }
              grails war --nojars => WEB-INF/lib/<empty>
                     => No Grails JARs in WEB-INF/lib




                                                           41

Tuesday, 1 November 11
Data Source
      JNDI:

          dataSource {
            jndiName = "java:comp/env/myDataSource"
          }


     System property:

         dataSource {
           url = System.getProperty("JDBC_STRING")
         }


                                                      42

Tuesday, 1 November 11
Data Source
    Config.groovy:

          grails.config.locations = [
            "file:./${appName}-config.groovy",
            "classpath:${appName}-config.groovy" ]


    For run-app:         ./<app>-config.groovy


    For Tomcat:          tomcat/lib/<app>-config.groovy



                                                          43

Tuesday, 1 November 11
Integration Points

    Build
    Dependencies
    Database
    Deployment
    Spring



                         44

Tuesday, 1 November 11
Grails is Spring

    Spring MVC under the hood
    Grails provides many useful beans
          • e.g. grailsApplication
    Define your own beans!
          • resources.xml/groovy
          • In a plugin




                                        45

Tuesday, 1 November 11
Example
    import ...
    beans = {
      credentialMatcher(Sha1CredentialsMatcher) {
         storedCredentialsHexEncoded = true
      }

        sessionFactory(ConfigurableLocalSessionFactoryBean) {
          dataSource = ref("dataSource")
          hibernateProperties = [
               "hibernate.hbm2ddl.auto": "create-drop",
               "hibernate.show_sql": true ]
        }
    }




                                                                46

Tuesday, 1 November 11
Enterprise Integration

    Spring opens up a world of possibilities
          • Spring Integration/Camel
          • Messaging (JMS/AMQP)
          • ESB
          • RMI, HttpInvoker, etc.
    Web services & REST




                                               47

Tuesday, 1 November 11
Grails Plugins

    Routing
    JMS, RabbitMQ
    CXF, Spring-WS, WS-Client
    REST




                                48

Tuesday, 1 November 11
JMS Plugin Example
   Add any required dependencies (BuildConfig.groovy)
    dependencies {
      compile 'org.apache.activemq:activemq-core:5.3.0'
    }



   Configure JMS factory (resources.groovy)
    jmsConnectionFactory(org.apache.activemq.ActiveMQConnectionFactory) {
      brokerURL = 'vm://localhost'
    }




                                                                    49

Tuesday, 1 November 11
JMS Plugin Example
     Send messages
      import javax.jms.Message

      class SomeController {
         def jmsService

          def someAction = {
            jmsService.send(service: 'initial', 1) { Message msg ->
               msg.JMSReplyTo = createDestination(service: 'reply')
               msg
            }
          }
      }




                                                                      50

Tuesday, 1 November 11
JMS Plugin Example
     Listen for messages
      class ListeningService {
         static expose = ['jms']

          def onMessage(message) {
            assert message == 1
          }
      }




                                     51

Tuesday, 1 November 11
Demo

    Demo




                         52


Tuesday, 1 November 11
Summary
     Various options for integrating Grails with:
          • Development/build
          • Deployment processes
     Works with many external systems
          • Solid support for non-Grailsy DB schemas
          • Flexible messaging & web service support




                                                       53

Tuesday, 1 November 11
More info

    w: http://grails.org/
    f: http://grails.org/Mailing+Lists


    e: pledbrook@vmware.com
    t: pledbrook
    b: http://blog.springsource.com/author/peter-ledbrook/




                                                        54

Tuesday, 1 November 11
Q&A

    Q&A




                         55


Tuesday, 1 November 11

Contenu connexe

Tendances

Cloudstack at Spotify
Cloudstack at SpotifyCloudstack at Spotify
Cloudstack at SpotifyNoa Resare
 
Java EE Servlet JSP Tutorial- Cookbook 1
Java EE Servlet JSP Tutorial- Cookbook 1Java EE Servlet JSP Tutorial- Cookbook 1
Java EE Servlet JSP Tutorial- Cookbook 1billdigman
 
Performance of Microservice frameworks on different JVMs
Performance of Microservice frameworks on different JVMsPerformance of Microservice frameworks on different JVMs
Performance of Microservice frameworks on different JVMsMaarten Smeets
 
Optimizing Docker Images
Optimizing Docker ImagesOptimizing Docker Images
Optimizing Docker ImagesBrian DeHamer
 
Australian OpenStack User Group August 2012: Chef for OpenStack
Australian OpenStack User Group August 2012: Chef for OpenStackAustralian OpenStack User Group August 2012: Chef for OpenStack
Australian OpenStack User Group August 2012: Chef for OpenStackMatt Ray
 
Threads Needles Stacks Heaps - Java edition
Threads Needles Stacks Heaps - Java editionThreads Needles Stacks Heaps - Java edition
Threads Needles Stacks Heaps - Java editionOvidiu Dimulescu
 
Puppet at DemonWare - Ruaidhri Power - Puppetcamp Dublin '12
Puppet at DemonWare - Ruaidhri Power - Puppetcamp Dublin '12Puppet at DemonWare - Ruaidhri Power - Puppetcamp Dublin '12
Puppet at DemonWare - Ruaidhri Power - Puppetcamp Dublin '12Puppet
 
Using Puppet - Real World Configuration Management
Using Puppet - Real World Configuration ManagementUsing Puppet - Real World Configuration Management
Using Puppet - Real World Configuration ManagementJames Turnbull
 
Performance of Microservice Frameworks on different JVMs
Performance of Microservice Frameworks on different JVMsPerformance of Microservice Frameworks on different JVMs
Performance of Microservice Frameworks on different JVMsMaarten Smeets
 
iPaas with Fuse Fabric Technology
iPaas with Fuse Fabric TechnologyiPaas with Fuse Fabric Technology
iPaas with Fuse Fabric TechnologyCharles Moulliard
 
Nuts and Bolts of WebSocket Devoxx 2014
Nuts and Bolts of WebSocket Devoxx 2014Nuts and Bolts of WebSocket Devoxx 2014
Nuts and Bolts of WebSocket Devoxx 2014Arun Gupta
 
Java & containers: What I wish I knew before I used it | DevNation Tech Talk
Java & containers: What I wish I knew before I used it | DevNation Tech TalkJava & containers: What I wish I knew before I used it | DevNation Tech Talk
Java & containers: What I wish I knew before I used it | DevNation Tech TalkRed Hat Developers
 
Node.js, toy or power tool?
Node.js, toy or power tool?Node.js, toy or power tool?
Node.js, toy or power tool?Ovidiu Dimulescu
 
Integrated Cache on Netscaler
Integrated Cache on NetscalerIntegrated Cache on Netscaler
Integrated Cache on NetscalerMark Hillick
 
제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-Ranchers
제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-Ranchers제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-Ranchers
제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-RanchersTommy Lee
 
Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009Arun Gupta
 
Cannibalising The Google App Engine
Cannibalising The  Google  App  EngineCannibalising The  Google  App  Engine
Cannibalising The Google App Enginecatherinewall
 
Maven: from Scratch to Production (.pdf)
Maven: from Scratch to Production (.pdf)Maven: from Scratch to Production (.pdf)
Maven: from Scratch to Production (.pdf)Johan Mynhardt
 
London devops logging
London devops loggingLondon devops logging
London devops loggingTomas Doran
 

Tendances (20)

Cloudstack at Spotify
Cloudstack at SpotifyCloudstack at Spotify
Cloudstack at Spotify
 
Java EE Servlet JSP Tutorial- Cookbook 1
Java EE Servlet JSP Tutorial- Cookbook 1Java EE Servlet JSP Tutorial- Cookbook 1
Java EE Servlet JSP Tutorial- Cookbook 1
 
Performance of Microservice frameworks on different JVMs
Performance of Microservice frameworks on different JVMsPerformance of Microservice frameworks on different JVMs
Performance of Microservice frameworks on different JVMs
 
Docker
DockerDocker
Docker
 
Optimizing Docker Images
Optimizing Docker ImagesOptimizing Docker Images
Optimizing Docker Images
 
Australian OpenStack User Group August 2012: Chef for OpenStack
Australian OpenStack User Group August 2012: Chef for OpenStackAustralian OpenStack User Group August 2012: Chef for OpenStack
Australian OpenStack User Group August 2012: Chef for OpenStack
 
Threads Needles Stacks Heaps - Java edition
Threads Needles Stacks Heaps - Java editionThreads Needles Stacks Heaps - Java edition
Threads Needles Stacks Heaps - Java edition
 
Puppet at DemonWare - Ruaidhri Power - Puppetcamp Dublin '12
Puppet at DemonWare - Ruaidhri Power - Puppetcamp Dublin '12Puppet at DemonWare - Ruaidhri Power - Puppetcamp Dublin '12
Puppet at DemonWare - Ruaidhri Power - Puppetcamp Dublin '12
 
Using Puppet - Real World Configuration Management
Using Puppet - Real World Configuration ManagementUsing Puppet - Real World Configuration Management
Using Puppet - Real World Configuration Management
 
Performance of Microservice Frameworks on different JVMs
Performance of Microservice Frameworks on different JVMsPerformance of Microservice Frameworks on different JVMs
Performance of Microservice Frameworks on different JVMs
 
iPaas with Fuse Fabric Technology
iPaas with Fuse Fabric TechnologyiPaas with Fuse Fabric Technology
iPaas with Fuse Fabric Technology
 
Nuts and Bolts of WebSocket Devoxx 2014
Nuts and Bolts of WebSocket Devoxx 2014Nuts and Bolts of WebSocket Devoxx 2014
Nuts and Bolts of WebSocket Devoxx 2014
 
Java & containers: What I wish I knew before I used it | DevNation Tech Talk
Java & containers: What I wish I knew before I used it | DevNation Tech TalkJava & containers: What I wish I knew before I used it | DevNation Tech Talk
Java & containers: What I wish I knew before I used it | DevNation Tech Talk
 
Node.js, toy or power tool?
Node.js, toy or power tool?Node.js, toy or power tool?
Node.js, toy or power tool?
 
Integrated Cache on Netscaler
Integrated Cache on NetscalerIntegrated Cache on Netscaler
Integrated Cache on Netscaler
 
제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-Ranchers
제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-Ranchers제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-Ranchers
제4회 한국IBM과 함께하는 난공불락 오픈소스 인프라 세미나-Ranchers
 
Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009Dynamic Languages Web Frameworks Indicthreads 2009
Dynamic Languages Web Frameworks Indicthreads 2009
 
Cannibalising The Google App Engine
Cannibalising The  Google  App  EngineCannibalising The  Google  App  Engine
Cannibalising The Google App Engine
 
Maven: from Scratch to Production (.pdf)
Maven: from Scratch to Production (.pdf)Maven: from Scratch to Production (.pdf)
Maven: from Scratch to Production (.pdf)
 
London devops logging
London devops loggingLondon devops logging
London devops logging
 

En vedette

Hum2220 sp2015 syllabus
Hum2220 sp2015 syllabusHum2220 sp2015 syllabus
Hum2220 sp2015 syllabusProfWillAdams
 
Redis the better NoSQL
Redis the better NoSQLRedis the better NoSQL
Redis the better NoSQLOpenFest team
 
Hum2220 1330 art of the stone age
Hum2220 1330 art of the stone ageHum2220 1330 art of the stone age
Hum2220 1330 art of the stone ageProfWillAdams
 
Aperitive festive
Aperitive festiveAperitive festive
Aperitive festiveRalu Toia
 
Hum2220 1030 pompeii roman time capsule
Hum2220 1030 pompeii   roman time capsuleHum2220 1030 pompeii   roman time capsule
Hum2220 1030 pompeii roman time capsuleProfWillAdams
 
Hum2220 1330 egyptian mummification
Hum2220 1330 egyptian mummificationHum2220 1330 egyptian mummification
Hum2220 1330 egyptian mummificationProfWillAdams
 
National FORUM of Multicultural Issues Journal, 8(2) 2011
National FORUM of Multicultural Issues Journal, 8(2) 2011National FORUM of Multicultural Issues Journal, 8(2) 2011
National FORUM of Multicultural Issues Journal, 8(2) 2011drcollins1
 
Hum2220 0915 syllabus
Hum2220 0915 syllabusHum2220 0915 syllabus
Hum2220 0915 syllabusProfWillAdams
 
2011 Pmo Symposium Enhancing The Pmo Partership Final
2011 Pmo Symposium Enhancing The Pmo Partership Final2011 Pmo Symposium Enhancing The Pmo Partership Final
2011 Pmo Symposium Enhancing The Pmo Partership Finalsremingt
 
Finl syll tec 2032 fall_2011
Finl syll tec 2032 fall_2011Finl syll tec 2032 fall_2011
Finl syll tec 2032 fall_2011pkirk63
 
Електронни пари: Пътят до BitCoin и поглед напред
Електронни пари: Пътят до BitCoin и поглед напредЕлектронни пари: Пътят до BitCoin и поглед напред
Електронни пари: Пътят до BitCoin и поглед напредOpenFest team
 
Artikel Wirausaha
Artikel WirausahaArtikel Wirausaha
Artikel Wirausaha21 Memento
 
2011 State of the Safety Net Report
2011 State of the Safety Net Report2011 State of the Safety Net Report
2011 State of the Safety Net ReportDirect Relief
 
гарчиггүй 1
гарчиггүй 1гарчиггүй 1
гарчиггүй 1mongoo_8301
 
Arh2050 sp2015 syllabus
Arh2050 sp2015 syllabusArh2050 sp2015 syllabus
Arh2050 sp2015 syllabusProfWillAdams
 
Tsunami response six months later
Tsunami response six months laterTsunami response six months later
Tsunami response six months laterDirect Relief
 

En vedette (20)

аветов презентация 3.0
аветов презентация 3.0аветов презентация 3.0
аветов презентация 3.0
 
Hum2220 sp2015 syllabus
Hum2220 sp2015 syllabusHum2220 sp2015 syllabus
Hum2220 sp2015 syllabus
 
Redis the better NoSQL
Redis the better NoSQLRedis the better NoSQL
Redis the better NoSQL
 
Hum2220 1330 art of the stone age
Hum2220 1330 art of the stone ageHum2220 1330 art of the stone age
Hum2220 1330 art of the stone age
 
Aperitive festive
Aperitive festiveAperitive festive
Aperitive festive
 
Hum2220 1030 pompeii roman time capsule
Hum2220 1030 pompeii   roman time capsuleHum2220 1030 pompeii   roman time capsule
Hum2220 1030 pompeii roman time capsule
 
Hum2220 1330 egyptian mummification
Hum2220 1330 egyptian mummificationHum2220 1330 egyptian mummification
Hum2220 1330 egyptian mummification
 
National FORUM of Multicultural Issues Journal, 8(2) 2011
National FORUM of Multicultural Issues Journal, 8(2) 2011National FORUM of Multicultural Issues Journal, 8(2) 2011
National FORUM of Multicultural Issues Journal, 8(2) 2011
 
Kemungkinan
KemungkinanKemungkinan
Kemungkinan
 
Hum2220 0915 syllabus
Hum2220 0915 syllabusHum2220 0915 syllabus
Hum2220 0915 syllabus
 
2011 Pmo Symposium Enhancing The Pmo Partership Final
2011 Pmo Symposium Enhancing The Pmo Partership Final2011 Pmo Symposium Enhancing The Pmo Partership Final
2011 Pmo Symposium Enhancing The Pmo Partership Final
 
Mob home
Mob homeMob home
Mob home
 
Finl syll tec 2032 fall_2011
Finl syll tec 2032 fall_2011Finl syll tec 2032 fall_2011
Finl syll tec 2032 fall_2011
 
Електронни пари: Пътят до BitCoin и поглед напред
Електронни пари: Пътят до BitCoin и поглед напредЕлектронни пари: Пътят до BitCoin и поглед напред
Електронни пари: Пътят до BitCoin и поглед напред
 
Artikel Wirausaha
Artikel WirausahaArtikel Wirausaha
Artikel Wirausaha
 
2011 State of the Safety Net Report
2011 State of the Safety Net Report2011 State of the Safety Net Report
2011 State of the Safety Net Report
 
гарчиггүй 1
гарчиггүй 1гарчиггүй 1
гарчиггүй 1
 
Arh2050 sp2015 syllabus
Arh2050 sp2015 syllabusArh2050 sp2015 syllabus
Arh2050 sp2015 syllabus
 
MorenoMassip_Avi
MorenoMassip_AviMorenoMassip_Avi
MorenoMassip_Avi
 
Tsunami response six months later
Tsunami response six months laterTsunami response six months later
Tsunami response six months later
 

Similaire à Java Tech & Tools | Grails in the Java Enterprise | Peter Ledbrook

GR8Conf 2011: Adopting Grails
GR8Conf 2011: Adopting GrailsGR8Conf 2011: Adopting Grails
GR8Conf 2011: Adopting GrailsGR8Conf
 
Adopting Grails - GR8Conf Europe
Adopting Grails - GR8Conf EuropeAdopting Grails - GR8Conf Europe
Adopting Grails - GR8Conf EuropeKlausBaumecker
 
GR8Conf 2011: Grails Enterprise Integration by Peter Ledbrook
GR8Conf 2011: Grails Enterprise Integration by Peter LedbrookGR8Conf 2011: Grails Enterprise Integration by Peter Ledbrook
GR8Conf 2011: Grails Enterprise Integration by Peter LedbrookGR8Conf
 
CloudFoundry and MongoDb, a marriage made in heaven
CloudFoundry and MongoDb, a marriage made in heavenCloudFoundry and MongoDb, a marriage made in heaven
CloudFoundry and MongoDb, a marriage made in heavenPatrick Chanezon
 
Running your Java EE applications in the Cloud
Running your Java EE applications in the CloudRunning your Java EE applications in the Cloud
Running your Java EE applications in the CloudArun Gupta
 
Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012
Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012
Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012kennethaliu
 
Get Ready for JIRA 5 - AtlasCamp 2011
Get Ready for JIRA 5 - AtlasCamp 2011Get Ready for JIRA 5 - AtlasCamp 2011
Get Ready for JIRA 5 - AtlasCamp 2011Atlassian
 
Cloudfoundry Overview
Cloudfoundry OverviewCloudfoundry Overview
Cloudfoundry Overviewrajdeep
 
Faster Java EE Builds with Gradle
Faster Java EE Builds with GradleFaster Java EE Builds with Gradle
Faster Java EE Builds with GradleRyan Cuprak
 
Faster Java EE Builds with Gradle
Faster Java EE Builds with GradleFaster Java EE Builds with Gradle
Faster Java EE Builds with GradleRyan Cuprak
 
Groovy & Grails for Spring/Java developers
Groovy & Grails for Spring/Java developersGroovy & Grails for Spring/Java developers
Groovy & Grails for Spring/Java developersPeter Ledbrook
 
Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]Ryan Cuprak
 
Cloud Foundry, the Open Platform as a Service - Oscon - July 2012
Cloud Foundry, the Open Platform as a Service - Oscon - July 2012Cloud Foundry, the Open Platform as a Service - Oscon - July 2012
Cloud Foundry, the Open Platform as a Service - Oscon - July 2012Patrick Chanezon
 
Building a Large Java Codebase with Bazel - Natan Silnitsky
Building a Large Java Codebase with Bazel - Natan Silnitsky Building a Large Java Codebase with Bazel - Natan Silnitsky
Building a Large Java Codebase with Bazel - Natan Silnitsky Wix Engineering
 
Cloudcamp Athens 2011 Presenting Heroku
Cloudcamp Athens 2011 Presenting HerokuCloudcamp Athens 2011 Presenting Heroku
Cloudcamp Athens 2011 Presenting HerokuSavvas Georgiou
 
Continuous Delivery with Grails and CloudBees
Continuous Delivery with Grails and CloudBeesContinuous Delivery with Grails and CloudBees
Continuous Delivery with Grails and CloudBeesMarco Vermeulen
 
How to successfully migrate to Bazel from Maven or Gradle - JeeConf
How to successfully migrate to Bazel from Maven or Gradle - JeeConfHow to successfully migrate to Bazel from Maven or Gradle - JeeConf
How to successfully migrate to Bazel from Maven or Gradle - JeeConfNatan Silnitsky
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfAlina Yurenko
 

Similaire à Java Tech & Tools | Grails in the Java Enterprise | Peter Ledbrook (20)

GR8Conf 2011: Adopting Grails
GR8Conf 2011: Adopting GrailsGR8Conf 2011: Adopting Grails
GR8Conf 2011: Adopting Grails
 
Adopting Grails - GR8Conf Europe
Adopting Grails - GR8Conf EuropeAdopting Grails - GR8Conf Europe
Adopting Grails - GR8Conf Europe
 
GR8Conf 2011: Grails Enterprise Integration by Peter Ledbrook
GR8Conf 2011: Grails Enterprise Integration by Peter LedbrookGR8Conf 2011: Grails Enterprise Integration by Peter Ledbrook
GR8Conf 2011: Grails Enterprise Integration by Peter Ledbrook
 
CloudFoundry and MongoDb, a marriage made in heaven
CloudFoundry and MongoDb, a marriage made in heavenCloudFoundry and MongoDb, a marriage made in heaven
CloudFoundry and MongoDb, a marriage made in heaven
 
Running your Java EE applications in the Cloud
Running your Java EE applications in the CloudRunning your Java EE applications in the Cloud
Running your Java EE applications in the Cloud
 
Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012
Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012
Modularizing your Grails Application with Private Plugins - SpringOne 2GX 2012
 
Get Ready for JIRA 5 - AtlasCamp 2011
Get Ready for JIRA 5 - AtlasCamp 2011Get Ready for JIRA 5 - AtlasCamp 2011
Get Ready for JIRA 5 - AtlasCamp 2011
 
Cloudfoundry Overview
Cloudfoundry OverviewCloudfoundry Overview
Cloudfoundry Overview
 
Faster Java EE Builds with Gradle
Faster Java EE Builds with GradleFaster Java EE Builds with Gradle
Faster Java EE Builds with Gradle
 
Faster Java EE Builds with Gradle
Faster Java EE Builds with GradleFaster Java EE Builds with Gradle
Faster Java EE Builds with Gradle
 
Groovy & Grails for Spring/Java developers
Groovy & Grails for Spring/Java developersGroovy & Grails for Spring/Java developers
Groovy & Grails for Spring/Java developers
 
Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]Faster java ee builds with gradle [con4921]
Faster java ee builds with gradle [con4921]
 
HTML5 and Sencha Touch
HTML5 and Sencha TouchHTML5 and Sencha Touch
HTML5 and Sencha Touch
 
Cloud foundry and openstackcloud
Cloud foundry and openstackcloudCloud foundry and openstackcloud
Cloud foundry and openstackcloud
 
Cloud Foundry, the Open Platform as a Service - Oscon - July 2012
Cloud Foundry, the Open Platform as a Service - Oscon - July 2012Cloud Foundry, the Open Platform as a Service - Oscon - July 2012
Cloud Foundry, the Open Platform as a Service - Oscon - July 2012
 
Building a Large Java Codebase with Bazel - Natan Silnitsky
Building a Large Java Codebase with Bazel - Natan Silnitsky Building a Large Java Codebase with Bazel - Natan Silnitsky
Building a Large Java Codebase with Bazel - Natan Silnitsky
 
Cloudcamp Athens 2011 Presenting Heroku
Cloudcamp Athens 2011 Presenting HerokuCloudcamp Athens 2011 Presenting Heroku
Cloudcamp Athens 2011 Presenting Heroku
 
Continuous Delivery with Grails and CloudBees
Continuous Delivery with Grails and CloudBeesContinuous Delivery with Grails and CloudBees
Continuous Delivery with Grails and CloudBees
 
How to successfully migrate to Bazel from Maven or Gradle - JeeConf
How to successfully migrate to Bazel from Maven or Gradle - JeeConfHow to successfully migrate to Bazel from Maven or Gradle - JeeConf
How to successfully migrate to Bazel from Maven or Gradle - JeeConf
 
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdfGOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
GOING AOT WITH GRAALVM – DEVOXX GREECE.pdf
 

Plus de JAX London

Java Tech & Tools | Continuous Delivery - the Writing is on the Wall | John S...
Java Tech & Tools | Continuous Delivery - the Writing is on the Wall | John S...Java Tech & Tools | Continuous Delivery - the Writing is on the Wall | John S...
Java Tech & Tools | Continuous Delivery - the Writing is on the Wall | John S...JAX London
 
Java Tech & Tools | Mapping, GIS and Geolocating Data in Java | Joachim Van d...
Java Tech & Tools | Mapping, GIS and Geolocating Data in Java | Joachim Van d...Java Tech & Tools | Mapping, GIS and Geolocating Data in Java | Joachim Van d...
Java Tech & Tools | Mapping, GIS and Geolocating Data in Java | Joachim Van d...JAX London
 
Keynote | Middleware Everywhere - Ready for Mobile and Cloud | Dr. Mark Little
Keynote | Middleware Everywhere - Ready for Mobile and Cloud | Dr. Mark LittleKeynote | Middleware Everywhere - Ready for Mobile and Cloud | Dr. Mark Little
Keynote | Middleware Everywhere - Ready for Mobile and Cloud | Dr. Mark LittleJAX London
 
Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...
Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...
Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...JAX London
 
Spring Day | Behind the Scenes at Spring Batch | Dave Syer
Spring Day | Behind the Scenes at Spring Batch | Dave SyerSpring Day | Behind the Scenes at Spring Batch | Dave Syer
Spring Day | Behind the Scenes at Spring Batch | Dave SyerJAX London
 
Spring Day | Spring 3.1 in a Nutshell | Sam Brannen
Spring Day | Spring 3.1 in a Nutshell | Sam BrannenSpring Day | Spring 3.1 in a Nutshell | Sam Brannen
Spring Day | Spring 3.1 in a Nutshell | Sam BrannenJAX London
 
Spring Day | Identity Management with Spring Security | Dave Syer
Spring Day | Identity Management with Spring Security | Dave SyerSpring Day | Identity Management with Spring Security | Dave Syer
Spring Day | Identity Management with Spring Security | Dave SyerJAX London
 
Spring Day | Spring and Scala | Eberhard Wolff
Spring Day | Spring and Scala | Eberhard WolffSpring Day | Spring and Scala | Eberhard Wolff
Spring Day | Spring and Scala | Eberhard WolffJAX London
 
Spring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver Gierke
Spring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver GierkeSpring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver Gierke
Spring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver GierkeJAX London
 
Keynote | The Rise and Fall and Rise of Java | James Governor
Keynote | The Rise and Fall and Rise of Java | James GovernorKeynote | The Rise and Fall and Rise of Java | James Governor
Keynote | The Rise and Fall and Rise of Java | James GovernorJAX London
 
Java Tech & Tools | OSGi Best Practices | Emily Jiang
Java Tech & Tools | OSGi Best Practices | Emily JiangJava Tech & Tools | OSGi Best Practices | Emily Jiang
Java Tech & Tools | OSGi Best Practices | Emily JiangJAX London
 
Java Tech & Tools | Beyond the Data Grid: Coherence, Normalisation, Joins and...
Java Tech & Tools | Beyond the Data Grid: Coherence, Normalisation, Joins and...Java Tech & Tools | Beyond the Data Grid: Coherence, Normalisation, Joins and...
Java Tech & Tools | Beyond the Data Grid: Coherence, Normalisation, Joins and...JAX London
 
Java Tech & Tools | Social Media in Programming in Java | Khanderao Kand
Java Tech & Tools | Social Media in Programming in Java | Khanderao KandJava Tech & Tools | Social Media in Programming in Java | Khanderao Kand
Java Tech & Tools | Social Media in Programming in Java | Khanderao KandJAX London
 
Java Tech & Tools | Just Keep Passing the Message | Russel Winder
Java Tech & Tools | Just Keep Passing the Message | Russel WinderJava Tech & Tools | Just Keep Passing the Message | Russel Winder
Java Tech & Tools | Just Keep Passing the Message | Russel WinderJAX London
 
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...JAX London
 
Java EE | Modular EJBs for Enterprise OSGi | Tim Ward
Java EE | Modular EJBs for Enterprise OSGi | Tim WardJava EE | Modular EJBs for Enterprise OSGi | Tim Ward
Java EE | Modular EJBs for Enterprise OSGi | Tim WardJAX London
 
Java EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan Gallimore
Java EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan GallimoreJava EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan Gallimore
Java EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan GallimoreJAX London
 
Java Core | Understanding the Disruptor: a Beginner's Guide to Hardcore Concu...
Java Core | Understanding the Disruptor: a Beginner's Guide to Hardcore Concu...Java Core | Understanding the Disruptor: a Beginner's Guide to Hardcore Concu...
Java Core | Understanding the Disruptor: a Beginner's Guide to Hardcore Concu...JAX London
 
Java Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil Bartlett
Java Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil BartlettJava Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil Bartlett
Java Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil BartlettJAX London
 
Java Core | JavaFX 2.0: Great User Interfaces in Java | Simon Ritter
Java Core | JavaFX 2.0: Great User Interfaces in Java | Simon RitterJava Core | JavaFX 2.0: Great User Interfaces in Java | Simon Ritter
Java Core | JavaFX 2.0: Great User Interfaces in Java | Simon RitterJAX London
 

Plus de JAX London (20)

Java Tech & Tools | Continuous Delivery - the Writing is on the Wall | John S...
Java Tech & Tools | Continuous Delivery - the Writing is on the Wall | John S...Java Tech & Tools | Continuous Delivery - the Writing is on the Wall | John S...
Java Tech & Tools | Continuous Delivery - the Writing is on the Wall | John S...
 
Java Tech & Tools | Mapping, GIS and Geolocating Data in Java | Joachim Van d...
Java Tech & Tools | Mapping, GIS and Geolocating Data in Java | Joachim Van d...Java Tech & Tools | Mapping, GIS and Geolocating Data in Java | Joachim Van d...
Java Tech & Tools | Mapping, GIS and Geolocating Data in Java | Joachim Van d...
 
Keynote | Middleware Everywhere - Ready for Mobile and Cloud | Dr. Mark Little
Keynote | Middleware Everywhere - Ready for Mobile and Cloud | Dr. Mark LittleKeynote | Middleware Everywhere - Ready for Mobile and Cloud | Dr. Mark Little
Keynote | Middleware Everywhere - Ready for Mobile and Cloud | Dr. Mark Little
 
Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...
Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...
Spring Day | WaveMaker - Spring Roo - SpringSource Tool Suite: Choosing the R...
 
Spring Day | Behind the Scenes at Spring Batch | Dave Syer
Spring Day | Behind the Scenes at Spring Batch | Dave SyerSpring Day | Behind the Scenes at Spring Batch | Dave Syer
Spring Day | Behind the Scenes at Spring Batch | Dave Syer
 
Spring Day | Spring 3.1 in a Nutshell | Sam Brannen
Spring Day | Spring 3.1 in a Nutshell | Sam BrannenSpring Day | Spring 3.1 in a Nutshell | Sam Brannen
Spring Day | Spring 3.1 in a Nutshell | Sam Brannen
 
Spring Day | Identity Management with Spring Security | Dave Syer
Spring Day | Identity Management with Spring Security | Dave SyerSpring Day | Identity Management with Spring Security | Dave Syer
Spring Day | Identity Management with Spring Security | Dave Syer
 
Spring Day | Spring and Scala | Eberhard Wolff
Spring Day | Spring and Scala | Eberhard WolffSpring Day | Spring and Scala | Eberhard Wolff
Spring Day | Spring and Scala | Eberhard Wolff
 
Spring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver Gierke
Spring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver GierkeSpring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver Gierke
Spring Day | Data Access 2.0? Please Welcome Spring Data! | Oliver Gierke
 
Keynote | The Rise and Fall and Rise of Java | James Governor
Keynote | The Rise and Fall and Rise of Java | James GovernorKeynote | The Rise and Fall and Rise of Java | James Governor
Keynote | The Rise and Fall and Rise of Java | James Governor
 
Java Tech & Tools | OSGi Best Practices | Emily Jiang
Java Tech & Tools | OSGi Best Practices | Emily JiangJava Tech & Tools | OSGi Best Practices | Emily Jiang
Java Tech & Tools | OSGi Best Practices | Emily Jiang
 
Java Tech & Tools | Beyond the Data Grid: Coherence, Normalisation, Joins and...
Java Tech & Tools | Beyond the Data Grid: Coherence, Normalisation, Joins and...Java Tech & Tools | Beyond the Data Grid: Coherence, Normalisation, Joins and...
Java Tech & Tools | Beyond the Data Grid: Coherence, Normalisation, Joins and...
 
Java Tech & Tools | Social Media in Programming in Java | Khanderao Kand
Java Tech & Tools | Social Media in Programming in Java | Khanderao KandJava Tech & Tools | Social Media in Programming in Java | Khanderao Kand
Java Tech & Tools | Social Media in Programming in Java | Khanderao Kand
 
Java Tech & Tools | Just Keep Passing the Message | Russel Winder
Java Tech & Tools | Just Keep Passing the Message | Russel WinderJava Tech & Tools | Just Keep Passing the Message | Russel Winder
Java Tech & Tools | Just Keep Passing the Message | Russel Winder
 
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...
Java Tech & Tools | Deploying Java & Play Framework Apps to the Cloud | Sande...
 
Java EE | Modular EJBs for Enterprise OSGi | Tim Ward
Java EE | Modular EJBs for Enterprise OSGi | Tim WardJava EE | Modular EJBs for Enterprise OSGi | Tim Ward
Java EE | Modular EJBs for Enterprise OSGi | Tim Ward
 
Java EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan Gallimore
Java EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan GallimoreJava EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan Gallimore
Java EE | Apache TomEE - Java EE Web Profile on Tomcat | Jonathan Gallimore
 
Java Core | Understanding the Disruptor: a Beginner's Guide to Hardcore Concu...
Java Core | Understanding the Disruptor: a Beginner's Guide to Hardcore Concu...Java Core | Understanding the Disruptor: a Beginner's Guide to Hardcore Concu...
Java Core | Understanding the Disruptor: a Beginner's Guide to Hardcore Concu...
 
Java Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil Bartlett
Java Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil BartlettJava Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil Bartlett
Java Core | Java 8 and OSGi Modularisation | Tim Ellison & Neil Bartlett
 
Java Core | JavaFX 2.0: Great User Interfaces in Java | Simon Ritter
Java Core | JavaFX 2.0: Great User Interfaces in Java | Simon RitterJava Core | JavaFX 2.0: Great User Interfaces in Java | Simon Ritter
Java Core | JavaFX 2.0: Great User Interfaces in Java | Simon Ritter
 

Dernier

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
 
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
 
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
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
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
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
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
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
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
 
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
 
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
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
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
 
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
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 

Dernier (20)

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
 
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
 
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
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
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
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
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
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
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
 
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
 
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
 
Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
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
 
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
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 

Java Tech & Tools | Grails in the Java Enterprise | Peter Ledbrook

  • 1. Peter Ledbrook / VMware Grails in the Java Enterprise Tuesday, 1 November 11
  • 2. What is Grails? Rapid Web Application Development Framework • for the JVM • with first-class Java integration Inspired by Ruby on Rails, Django and others • Convention over Configuration • Don’t Repeat Yourself (DRY) 2 Tuesday, 1 November 11
  • 3. What is Grails? Grails Servlet Web MVC GSP (Views) Container GORM Database I18n (Data Access) Build Test Support Doc Engine 3 Tuesday, 1 November 11
  • 4. What is Grails? Grails 4 Tuesday, 1 November 11
  • 5. What is Grails? Web Controllers The Domain Model i18n bundles Business Logic Custom View Tags Views & Layouts Libraries (JARs) Build Commands Additional Sources Tests Web Resources 5 Tuesday, 1 November 11
  • 6. Say bye-bye to the plumbing! 6 Tuesday, 1 November 11
  • 7. Demo Demo 7 Tuesday, 1 November 11
  • 8. Enterprise requirements Web App Messaging JEE Legacy Services Databases Is this a problem for Grails apps? 8 Tuesday, 1 November 11
  • 9. Integration Points Build Dependencies Database Deployment Spring 9 Tuesday, 1 November 11
  • 10. Integration Points Build Dependencies Database Deployment Spring 10 Tuesday, 1 November 11
  • 11. Build 11 Tuesday, 1 November 11
  • 12. Build Remember the Grails project structure? • add in build events and... Can’t build natively with other build tools! Ant Maven Gradle Grails Build System 12 Tuesday, 1 November 11
  • 13. Ant Integration An Ant task built in (grails.ant.GrailsTask) Template Ant build: grails integrate-with --ant • Uses Ivy for dependency management • Not compatible with Ant 1.8 ...or use ‘java’ task to call Grails command • Grails manages dependencies • Use ‘grails’ for build 13 Tuesday, 1 November 11
  • 14. Maven Maven Grails Plugin: https://github.com/grails/grails-maven Use Maven 2 or 3 to build Grails projects Declare dependencies in POM Works for both applications and plugins! Integration test framework: https://github.com/grails/ grails_maven_plugin_testing_tests 14 Tuesday, 1 November 11
  • 15. Getting Started mvn archetype-generate ... e.g. -Xmx256m mvn initialize -XX:MaxPermSize=256m Set MAVEN_OPTS Optional: add ‘pom true’ to dependency DSL 15 Tuesday, 1 November 11
  • 16. Packaging Types ‘war’ • Must configure execution section • Works with plugins that depend on ‘war’ ‘grails-app’ • Less configuration ‘grails-plugin’ • For plugins! 16 Tuesday, 1 November 11
  • 17. Maven & Grails Plugins > grails release-plugin == > mvn deploy 17 Tuesday, 1 November 11
  • 18. Maven & Grails Plugins Either: <dependency> <groupId>org.grails.plugins<groupId> <artifactId>hibernate</artifactId> <type>grails-plugin</type> </dependency> Use ‘mvn deploy’ or Release plugin! And ‘pom: false’ 18 Tuesday, 1 November 11
  • 19. Maven & Grails Plugins Or: grails.project.dependency.resolution = { ... plugins { compile ":hibernate:1.3.6" } ... } 19 Tuesday, 1 November 11
  • 20. Customise the Build Create new commands in <proj>/scripts Package the commands in a plugin! Create <proj>/scripts/_Events.groovy • Interact with standard build steps • Add test types • Configure embedded Tomcat 20 Tuesday, 1 November 11
  • 21. What the future holds... Grails 3.0 will probably move to Gradle • More powerful and more flexible • Standard, well documented API • Ant & Maven support 21 Tuesday, 1 November 11
  • 22. Integration Points Build Dependencies Database Deployment Spring 22 Tuesday, 1 November 11
  • 23. Dependencies are JARs Use any Java library you like! Full support for Maven-compatible repositories Declarative dependencies Plugins can be declared the same way 23 Tuesday, 1 November 11
  • 24. Dependency DSL grails.project.dependency.resolution = { inherits "global" log "warn" repositories { grailsHome() mavenCentral() mavenRepo "http://localhost:8081/..." } ... } 24 Tuesday, 1 November 11
  • 25. Dependency DSL grails.project.dependency.resolution = { inherits "global" log "warn" ... dependencies { compile "org.tmatesoft.svnkit:svnkit:1.3.3" test "org.gmock:gmock:0.8.1" } ... } 25 Tuesday, 1 November 11
  • 26. Integration Points Build Dependencies Database Deployment Spring 26 Tuesday, 1 November 11
  • 27. ‘Legacy’ Databases Grails can create a database from your domain model... ...but what if you don’t own the database? • DBA determines structure • Company conventions • Existing ‘legacy’ database 27 Tuesday, 1 November 11
  • 28. Option 1: Custom ORM mapping No existing domain model Schema not too far off the beaten track class Book { ... static mapping = { table "books" title type: "books" author column: "author_ref" } } 28 Tuesday, 1 November 11
  • 29. Option 2: JPA annotations Existing Java/JPA domain model <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE ...> <hibernate-configuration> <session-factory> <mapping class="org.ex.Book"/> <mapping class="org.ex.Author"/> ... </session-factory> </hibernate-configuration> grails-app/conf/hibernate/hibernate.cfg.xml 29 Tuesday, 1 November 11
  • 30. Option 3: Hibernate XML Mappings You have Java model + Hibernate mapping files Schema is way off the beaten track <?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE ...> <hibernate-configuration> <session-factory> <mapping resource="org.ex.Book.hbm.xml"/> <mapping resource="org.ex.Author.hbm.xml"/> ... </session-factory> </hibernate-configuration> grails-app/conf/hibernate/hibernate.cfg.xml 30 Tuesday, 1 November 11
  • 31. Constraints Given domain class: org.example.myapp.domain.Book Then: src/java/org/example/myapp/domain/BookConstraints.groovy constraints = { title blank: false, unique: true ... } 31 Tuesday, 1 November 11
  • 32. Option 4: GORM JPA Plugin GORM layer over JPA Use your own JPA provider Useful for cloud services that only work with JPA, not Hibernate 32 Tuesday, 1 November 11
  • 33. Option 5: Remote service back-end Don’t have to use GORM Use only controllers and services • Grails services back onto remote services Web App SOAP, RMI, HTTP Invoker, etc. Invoice Log Service ... 33 Tuesday, 1 November 11
  • 34. Share your model! 34 Tuesday, 1 November 11
  • 35. Database Management Hibernate ‘update’ + Production data = ? 35 Tuesday, 1 November 11
  • 36. Database Migration Plugin Pre-production, Hibernate ‘update’ or ‘create-drop’ dbm-generate-changelog dbm-changelog-sync Change domain model dbm-gorm-diff dbm-update 36 Tuesday, 1 November 11
  • 37. Reverse Engineering Plugin class Person { String name Integer age ... } 37 Tuesday, 1 November 11
  • 38. Database Management Database Migration http://grails.org/plugin/database-migration Reverse Engineering http://grails.org/plugin/database-migration 38 Tuesday, 1 November 11
  • 39. Integration Points Build Dependencies Database Deployment Spring 39 Tuesday, 1 November 11
  • 40. grails war Build properties: • grails.war.copyToWebApp • grails.war.dependencies • grails.war.resources • grails.project.war.file 40 Tuesday, 1 November 11
  • 41. Control of JARs grails.project.dependency.resolution = { defaultDependenciesProvided true inherits "global" log "warn" ... } grails war --nojars => WEB-INF/lib/<empty> => No Grails JARs in WEB-INF/lib 41 Tuesday, 1 November 11
  • 42. Data Source JNDI: dataSource { jndiName = "java:comp/env/myDataSource" } System property: dataSource { url = System.getProperty("JDBC_STRING") } 42 Tuesday, 1 November 11
  • 43. Data Source Config.groovy: grails.config.locations = [ "file:./${appName}-config.groovy", "classpath:${appName}-config.groovy" ] For run-app: ./<app>-config.groovy For Tomcat: tomcat/lib/<app>-config.groovy 43 Tuesday, 1 November 11
  • 44. Integration Points Build Dependencies Database Deployment Spring 44 Tuesday, 1 November 11
  • 45. Grails is Spring Spring MVC under the hood Grails provides many useful beans • e.g. grailsApplication Define your own beans! • resources.xml/groovy • In a plugin 45 Tuesday, 1 November 11
  • 46. Example import ... beans = { credentialMatcher(Sha1CredentialsMatcher) { storedCredentialsHexEncoded = true } sessionFactory(ConfigurableLocalSessionFactoryBean) { dataSource = ref("dataSource") hibernateProperties = [ "hibernate.hbm2ddl.auto": "create-drop", "hibernate.show_sql": true ] } } 46 Tuesday, 1 November 11
  • 47. Enterprise Integration Spring opens up a world of possibilities • Spring Integration/Camel • Messaging (JMS/AMQP) • ESB • RMI, HttpInvoker, etc. Web services & REST 47 Tuesday, 1 November 11
  • 48. Grails Plugins Routing JMS, RabbitMQ CXF, Spring-WS, WS-Client REST 48 Tuesday, 1 November 11
  • 49. JMS Plugin Example Add any required dependencies (BuildConfig.groovy) dependencies { compile 'org.apache.activemq:activemq-core:5.3.0' } Configure JMS factory (resources.groovy) jmsConnectionFactory(org.apache.activemq.ActiveMQConnectionFactory) { brokerURL = 'vm://localhost' } 49 Tuesday, 1 November 11
  • 50. JMS Plugin Example Send messages import javax.jms.Message class SomeController { def jmsService def someAction = { jmsService.send(service: 'initial', 1) { Message msg -> msg.JMSReplyTo = createDestination(service: 'reply') msg } } } 50 Tuesday, 1 November 11
  • 51. JMS Plugin Example Listen for messages class ListeningService { static expose = ['jms'] def onMessage(message) { assert message == 1 } } 51 Tuesday, 1 November 11
  • 52. Demo Demo 52 Tuesday, 1 November 11
  • 53. Summary Various options for integrating Grails with: • Development/build • Deployment processes Works with many external systems • Solid support for non-Grailsy DB schemas • Flexible messaging & web service support 53 Tuesday, 1 November 11
  • 54. More info w: http://grails.org/ f: http://grails.org/Mailing+Lists e: pledbrook@vmware.com t: pledbrook b: http://blog.springsource.com/author/peter-ledbrook/ 54 Tuesday, 1 November 11
  • 55. Q&A Q&A 55 Tuesday, 1 November 11