continuous enterprise development in java

256 391 0
continuous enterprise development in java

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

www.it-ebooks.info www.it-ebooks.info Andrew Lee Rubinger and Aslak Knutsen Continuous Enterprise Development in Java www.it-ebooks.info Continuous Enterprise Development in Java by Andrew Lee Rubinger and Aslak Knutsen Copyright © 2014 Andrew Lee Rubinger and Aslak Knutsen. All rights reserved. Printed in the United States of America. Published by O’Reilly Media, Inc., 1005 Gravenstein Highway North, Sebastopol, CA 95472. O’Reilly books may be purchased for educational, business, or sales promotional use. Online editions are also available for most titles (http://my.safaribooksonline.com). For more information, contact our corporate/ institutional sales department: 800-998-9938 or corporate@oreilly.com. Editors: Mike Loukides and Meghan Blanchette Production Editor: Kara Ebrahim Copyeditor: Kim Cofer Proofreader: Becca Freed Indexer: WordCo Indexing Services, Inc. Cover Designer: Randy Comer Interior Designer: David Futato Illustrator: Rebecca Demarest March 2014: First Edition Revision History for the First Edition: 2014-03-11: First release See http://oreilly.com/catalog/errata.csp?isbn=9781449328290 for release details. Nutshell Handbook, the Nutshell Handbook logo, and the O’Reilly logo are registered trademarks of O’Reilly Media, Inc. Continuous Enterprise Development in Java, the image of a Violet Turaco, and related trade dress are trademarks of O’Reilly Media, Inc. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in this book, and O’Reilly Media, Inc. was aware of a trademark claim, the designations have been printed in caps or initial caps. While every precaution has been taken in the preparation of this book, the publisher and authors assume no responsibility for errors or omissions, or for damages resulting from the use of the information contained herein. ISBN: 978-1-449-32829-0 [LSI] www.it-ebooks.info Table of Contents Foreword. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vii Preface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix 1. Continuity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 The Zen of Prevention 1 Reactive Error Handling 1 Proactive Quality Policies 2 Software Development Processes 2 Serial Models 3 Iterative Models 3 Testing Is Development 5 Levels of Testing 5 Unit 6 Integration 7 Foundation Test Frameworks 8 JUnit 10 TestNG 12 Continuous Development 13 2. Enabling Technologies. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15 Bootstrapping 15 Apache Maven 16 JBoss Forge 17 Version Control 18 Git 19 A Test Platform for Java EE 20 Arquillian 20 ShrinkWrap 22 ShrinkWrap Resolvers 27 iii www.it-ebooks.info Experimental Features 35 Runtime 37 WildFly 37 OpenShift 38 On to the Code 38 3. Scratch to Production. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 The Development Environment 39 A New Project 40 Writing Our First Integration Test with Arquillian 48 Running the Application Locally 51 Running the Arquillian Integration Test 53 Deploying to OpenShift via JBoss Developer Studio 55 4. Requirements and the Example Application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63 Introducing GeekSeek 64 Featureset 64 Conceptual Data Model 65 Logical Data Model 66 Obtaining, Building, Testing, and Running GeekSeek 68 Use Cases and Chapter Guide 73 Chapter 5: Java Persistence and Relational Data 73 Chapter 6: NoSQL: Data Grids and Graph Databases 73 Chapter 7: Business Logic and the Services Layer 73 Chapter 8: REST and Addressable Services 74 Chapter 9: Security 74 Chapter 10: UI 75 Chapter 11: Assembly and Deployment 75 5. Java Persistence and Relational Data. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 The Relational Database Model 79 The Java Persistence API 81 POJO Entities 82 Use Cases and Requirements 83 User Perspective 84 Technical Concerns 84 Implementation 85 Entity Objects 86 Repository EJBs 90 Requirement Test Scenarios 93 Test Setup 93 iv | Table of Contents www.it-ebooks.info CRUD Tests 95 6. NoSQL: Data Grids and Graph Databases. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101 RDBMS: Bad at Binary Data 102 Data Grids 103 RDBMS: Bad at Relationships 104 Graph Theory 105 Use Cases and Requirements 107 Implementation 107 Attachment 107 Relation 111 Requirement Test Scenarios 119 Attachment CRUD Tests 120 Transactional Integrity of Attachment Persistence 123 Validating Relationships 127 7. Business Logic and the Services Layer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131 Use Cases and Requirements 132 Send Email on New User Signup 133 Implementation 134 Requirement Test Scenarios 139 A Test-Only SMTP Server 140 The Test 142 8. REST and Addressable Services. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149 REST in Enterprise Java: The JAX-RS Specification 152 Use Cases and Requirements 154 Implementation 157 Repository Resources 157 The Representation Converter 161 The @ResourceModel 163 LinkableRepresentation 164 ResourceLink 167 Requirement Test Scenarios 168 A Black-Box Test 169 Validating the HTTP Contracts with Warp 171 Arquillian Warp 171 Test Harness Setup 173 The HTTP Contracts Test 174 9. Security. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 Use Cases and Requirements 178 Table of Contents | v www.it-ebooks.info Implementation 178 Supporting Software 178 Requirement Test Scenarios 186 Overview 187 Setup 187 Security Tests 188 10. The User Interface. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197 Use Cases and Requirements 197 Implementation 198 Requirement Test Scenarios 201 Pure JavaScript 201 Functional Behavior 203 11. Assembly and Deployment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 Obtaining JBoss EAP 211 Running Against JBoss EAP 213 Using the EAP Remote Container 213 Using the EAP Managed Container 215 Continuous Integration and the Authoritative Build Server 218 Configuring the GeekSeek Build on CloudBees 218 Populating CloudBees Jenkins with the EAP Repository 220 Automatic Building on Git Push Events 223 Pushing to Staging and Production 224 Setting Up the OpenShift Application 224 Removing the Default OpenShift Application 227 Pushing from the CI Build Job to OpenShift 227 12. Epilogue. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231 Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233 vi | Table of Contents www.it-ebooks.info Foreword Even ancient J2EE was never just about development. From the advent of enterprise Java there has been a strictly defined holistic role concept. Component providers, assemblers, system administrators, and server providers have clear and distinct responsibilities, but these have been rarely upheld in the real world. Because of politics and organizational structures, often the developer assumes the re‐ sponsibility of all these roles, with the possible exception of system administration and operations. The developer’s main goal is development, and the well-intentioned role separation collapses quickly. In the “real world,” a dedicated operations department takes the results of the develop‐ ment cycle and attempts to install, run, and just keep it alive. Such an artificially sepa‐ rated model works, but is far away from being optimal. Sometimes it gets even worse, and signing off documents becomes more important than software quality. If you are only interested in quick hacks, you will hate Java EE, application servers, and probably this book altogether. Packaging, deployment, monitoring, and management sounds like bloat and is bloat, if you are only focusing on development. However the “DevOps” movement also considers operations and development as a single unit. Who needs beautiful code that cannot be properly installed in a predefined environment? DevOps is nothing groundbreaking; rather, it’s a “back to the roots” movement. This book is not just compatible with the “DevOps” ideals; it pragmatically shows how to build a Java EE application from scratch and also patches holes in the Java EE spec. Automation of project and archive creation, pragmatic integration of Maven builds into the process, and testing on all levels are deeply explained with concrete code. Rather than focusing on best-case scenarios, this book shows you how to test the inconvenient, including examples with SMTP servers or Message Driven Beans. Although the tools, libraries, and frameworks introduced in this book were initiated by Red Hat employees, this book will be equally valuable for you if you are not using JBoss vii www.it-ebooks.info or WildFly at all. In fact, I used Arquillian, ShrinkWrap, and Forge to test applications on GlassFish and TomEE at the same time. Also, in my workshops I use Arquillian to test plug-ins, extensions, and sophisticated dependency injection without deploying mocks to a production archive. It was fun to read this book on the flight to JavaOne 2013 in San Francisco; I learned a lot. I wish you happy reading—enjoy the lightweight Java EE development lifecycle! —Adam Bien http://adam-bien.com viii | Foreword www.it-ebooks.info [...]... employing However, we will be issuing Git commands and explaining their use along the way You can find a very good reference on the myriad Git subroutines in Pro Git by Scott Chacon (Apress, 2009), available for free in digital editions and in print via online retailers A Test Platform for Java EE Java EE 5 introduced a POJO (Plain Old Java Object) programming model, which freed developers from having... upon a container to do the wiring for us If our metadata or configuration is incorrect, our injection points may not be filled as we’re expecting This could result in a Levels of Testing www.it-ebooks.info | 7 deployment-time exception or worse, making it imperative that we have test coverage for the interaction between components When we talk about integration testing in this book, it’s within the context... be directed to an XML file for analysis by plug-ins This can be very helpful in tracking progress of the failing and total number of tests For instance, we can use the Jenkins Continuous Integration Server shown in Figure 1-5 to track the progress graphically Foundation Test Frameworks www.it-ebooks.info | 11 Figure 1-5 Continuous integration test reporting Of course, JUnit is not the only kid on the... arsenal, in the context of Enterprise development it’s our opinion that their use should be limited The Java En‐ terprise Edition is based on a POJO (Plain Old Java Object) component model, which enables us to directly instantiate servlets, Enterprise JavaBeans (EJBs), and Context and Dependency Injection (CDI) beans; this is great for validating business logic in simple calls However, the true power of Java. .. business ob‐ jects The introduction of Contexts and Dependency Injection (CDI) in Java EE 6 further pushed the notion of simple business objects by providing typesafe injection The benefit to objects that can be easily created using the new operator is the same as their drawback: when we manually instantiate objects for use in testing, we’re not dealing with the same enterprise components we have in. .. remains: write less, and let the framework wire up the call stack 12 | Chapter 1: Continuity www.it-ebooks.info IDE integration, while not standard for Eclipse Juno, is simple enough to install and provides a GUI runner, as we see in Figure 1-6 Figure 1-6 JUnit runner in Eclipse Continuous Development Followers of Extreme Programming and Agile methodologies are likely to be familiar with Continuous Integration,... accompanying book site is located at http://continuousdev.org, and the official Twitter channel is @ContinuousDev The authors can be reached at authors@continuousdev.org Continuous Development www.it-ebooks.info | 13 All contents of the book’s repository are licensed under Creative Commons AttributionShareAlike 2.0 Generic, and we invite the community at large to contribute work, in cluding feature... easily turn into a burden Because we’ll be exploring fully functioning ex‐ amples that are intended to be reproduced in your own environment, by necessity we’ve had to make some decisions in the interest of keeping focus on the code as opposed to our development tools The following projects, when combined, work very well together but are certainly not the only solutions to the preceding bullet points One... nothing comes for free: the cost of enlisting a framework or an application server’s help is that we’ve now added another integration point And every integration point must be validated by an integration test Java has built -in support for the java. lang.Assertion error and the assert keyword, and these are fine tools when used in the right context Because assertions using assert are only analyzed in. .. Test-Driven Development — The approach of first writing automated tests, then correcting/augmenting main code until it passes In fact, XP, along with other models, has both inspired and acts as an implementation of a larger collection of iterative policies as outlined by the Manifesto for Agile Software Development 4 | Chapter 1: Continuity www.it-ebooks.info Testing Is Development Move testing from the . www.it-ebooks.info www.it-ebooks.info Andrew Lee Rubinger and Aslak Knutsen Continuous Enterprise Development in Java www.it-ebooks.info Continuous Enterprise Development in Java by Andrew Lee Rubinger. EAP 211 Running Against JBoss EAP 213 Using the EAP Remote Container 213 Using the EAP Managed Container 215 Continuous Integration and the Authoritative Build Server 218 Configuring the GeekSeek. cloud. Coders of all stripes may find appealing approaches to testing against seed data, pushing events to the client, interacting with a distributed data grid, validating the user interface, and more. Quite

Ngày đăng: 01/08/2014, 17:22

Mục lục

    Conventions Used in This Book

    How to Contact Us

    The Zen of Prevention

    A Test Platform for Java EE

    On to the Code

    Writing Our First Integration Test with Arquillian

    Running the Application Locally

    Running the Arquillian Integration Test

    Deploying to OpenShift via JBoss Developer Studio

    Chapter 4. Requirements and the Example Application

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan