Neo4j in Action

Total Page:16

File Type:pdf, Size:1020Kb

Neo4j in Action Aleksa Vukotic and Nicki Watt WITH Tareq Abedrabbo Dominic Fox Jonas Partner FOREWORD BY Jim Webber AND Ian Robinson MANNING Neo4j in Action ALEKSA VUKOTIC NICKI WATT with TAREQ ABEDRABBO DOMINIC FOX JONAS PARTNER MANNING SHELTER ISLAND For online information and ordering of this and other Manning books, please visit www.manning.com. The publisher offers discounts on this book when ordered in quantity. For more information, please contact Special Sales Department Manning Publications Co. 20 Baldwin Road PO Box 761 Shelter Island, NY 11964 Email: [email protected] ©2015 by Manning Publications Co. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by means electronic, mechanical, photocopying, or otherwise, without prior written permission of the publisher. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in the book, and Manning Publications was aware of a trademark claim, the designations have been printed in initial caps or all caps. Recognizing the importance of preserving what has been written, it is Manning’s policy to have the books we publish printed on acid-free paper, and we exert our best efforts to that end. Recognizing also our responsibility to conserve the resources of our planet, Manning books are printed on paper that is at least 15 percent recycled and processed without the use of elemental chlorine. Manning Publications Co. Development editor: Karen Miller 20 Baldwin Road Technical development editor Gordon Dickens PO Box 761 Copyeditor: Andy Carroll Shelter Island, NY 11964 Proofreader: Elizabeth Martin Technical proofreader: Craig Taverner Typesetter: Dennis Dalinnik Cover designer: Marija Tudor ISBN: 9781617290763 Printed in the United States of America 12345678910–EBM–191817161514 brief contents PART 1INTRODUCTION TO NEO4J ............................................1 1 ■ A case for a Neo4j database 3 2 ■ Data modeling in Neo4j 19 3 ■ Starting development with Neo4j 32 4 ■ The power of traversals 50 5 ■ Indexing the data 64 PART 2APPLICATION DEVELOPMENT WITH NEO4J ...................79 6 ■ Cypher: Neo4j query language 81 7 ■ Transactions 110 8 ■ Traversals in depth 125 9 ■ Spring Data Neo4j 147 PART 3NEO4J IN PRODUCTION.............................................181 10 ■ Neo4j: embedded versus server mode 183 11 ■ Neo4j in production 216 iii contents foreword xi preface xiii acknowledgments xiv about this book xvi about the authors xx about the cover illustration xxii PART 1INTRODUCTION TO NEO4J.................................1 A case for a Neo4j database 3 1 1.1 Why Neo4j? 4 1.2 Graph data in a relational database 5 Querying graph data using MySQL 6 1.3 Graph data in Neo4j 8 Traversing the graph 9 1.4 SQL joins versus graph traversal on a large scale 11 1.5 Graphs around you 14 1.6 Neo4j in NoSQL space 14 Key-value stores 15 ■ Column-family stores 15 Document-oriented databases 16 ■ Graph databases 16 NoSQL categories compared 16 v vi CONTENTS 1.7 Neo4j: the ACID-compliant database 17 1.8 Summary 18 Data modeling in Neo4j 19 2 2.1 What is a data model for Neo4j? 19 Modeling with diagrams: a simple example 20 Modeling with diagrams: a complex example 22 2.2 Domain modeling 24 Entities and properties 24 2.3 Further examples 27 Underground stations example 28 ■ Band members example 29 2.4 Summary 31 Starting development with Neo4j 32 3 3.1 Modeling graph data structures 33 3.2 Using the Neo4j API 36 Creating nodes 36 ■ Creating relationships 39 Adding properties to nodes 40 ■ Node type strategies 42 Adding properties to relationships 44 3.3 Node labels 46 3.4 Summary 48 The power of traversals 50 4 4.1 Traversing using the Neo4j Core Java API 51 Finding the starting node 51 ■ Traversing direct relationships 52 ■ Traversing second-level relationships 54 Memory usage considerations 57 4.2 Traversing using the Neo4j Traversal API 58 Using Neo4j’s built-in traversal constructs 58 Implementing a custom evaluator 60 4.3 Summary 63 Indexing the data 64 5 5.1 Creating the index entry 65 5.2 Finding the user by their email 66 5.3 Dealing with more than one match 68 5.4 Dealing with changes to indexed data 69 CONTENTS vii 5.5 Automatic indexing 70 Schema indexing 70 ■ Auto-indexing 73 5.6 The cost/benefit trade-off of indexing 75 Performance benefit of indexing when querying 76 Performance overhead of indexing when updating and inserting 77 Storing the index 78 5.7 Summary 78 PART 2APPLICATION DEVELOPMENT WITH NEO4J .......79 Cypher: Neo4j query language 81 6 6.1 Introduction to Cypher 82 Cypher primer 82 ■ Executing Cypher queries 84 6.2 Cypher syntax basics 89 Pattern matching 89 ■ Finding the starting node 93 Filtering data 97 ■ Getting the results 98 6.3 Updating your graph with Cypher 101 Creating new graph entities 102 ■ Deleting data 104 Updating node and relationship properties 104 6.4 Advanced Cypher 105 Aggregation 106 ■ Functions 106 ■ Piping using the with clause 108 ■ Cypher compatibility 109 6.5 Summary 109 Transactions 110 7 7.1 Transaction basics 111 Adding in a transaction 112 ■ Finishing what you start and not trying to do too much in one go 113 7.2 Transactions in depth 114 Transaction semantics 115 ■ Reading in a transaction and explicit read locks 117 ■ Writing in a transaction and explicit write locks 118 ■ The danger of deadlocks 120 7.3 Integration with other transaction management systems 121 7.4 Transaction events 122 7.5 Summary 124 viii CONTENTS Traversals in depth 125 8 8.1 Traversal ordering 125 Depth-first 126 ■ Breadth-first 128 ■ Comparing depth-first and breadth-first ordering 130 8.2 Expanding relationships 132 StandardExpander 132 ■ Ordering relationships for expansion 135 ■ Custom expanders 136 8.3 Managing uniqueness 138 NODE_GLOBAL uniqueness 138 ■ NODE_PATH uniqueness 140 ■ Other uniqueness types 142 8.4 Bidirectional traversals 143 8.5 Summary 145 Spring Data Neo4j 147 9 9.1 Where does SDN fit in? 148 What is Spring and how is SDN related to it? 149 What is SDN good for (and not good for)? 150 Where to get SDN 150 ■ Where to get more information 151 9.2 Modeling with SDN 151 Initial POJO domain modeling 151 ■ Annotating the domain model 154 ■ Modeling node entities 155 Modeling relationship entities 158 ■ Modeling relationships between node entities 160 9.3 Accessing and persisting entities 163 Supporting Spring configuration 163 ■ Neo4jTemplate class 163 ■ Repositories 165 ■ Other options 168 9.4 Object-graph mapping options 169 Simple mapping 169 ■ Advanced mapping based on AspectJ 173 ■ Object mapping summary 175 9.5 Performing queries and traversals 176 Annotated queries 177 ■ Dynamically derived queries 178 Traversals 180 9.6 Summary 180 CONTENTS ix PART 3NEO4J IN PRODUCTION .................................181 Neo4j: embedded versus server mode 183 10 10.1 Usage modes overview 184 10.2 Embedded mode 186 Core Java integration 186 ■ Other JVM-based integration 189 10.3 Server mode 190 Neo4j server overview 191 ■ Using the fine-grained Neo4j server REST API 192 ■ Using the Cypher Neo4j server REST API endpoint 194 ■ Using a remote client library to help access the Neo4j server 196 ■ Server plugins and unmanaged extensions 197 10.4 Weighing the options 198 Architectural considerations 199 ■ Performance considerations 201 ■ Other considerations 204 10.5 Getting the most out of the server mode 205 Avoid fine-grained operations 206 ■ Using Cypher 207 Server plugins 209 ■ Unmanaged extensions 212 Streaming REST API 214 10.6 Summary 215 Neo4j in production 216 11 11.1 High-level Neo4j architecture 217 Setting the scene ... 218 ■ Disks 218 ■ Store files 220 Neo4j caches 222 ■ Transaction logs and recoverability 227 Programmatic APIs 229 11.2 Neo4j High Availability (HA) 230 Neo4j clustering overview 231 ■ Setting up a Neo4j cluster 234 Replication—reading and writing strategies 237 Cache sharding 241 ■ HA summary 243 11.3 Backups 244 Offline backups 244 ■ Online backups 246 Restoring from backup 248 11.4 Topics we couldn’t cover but that you should be aware of 248 Security 248 ■ Monitoring 249 x CONTENTS 11.5 Summary 249 11.6 Final thoughts 249 appendix A Installing Neo4j server 250 appendix B Setting up and running the sample code 255 appendix C Setting up your project to use SDN 261 appendix D Getting more help 268 index 269 foreword The database world is experiencing an enormous upheaval, with the hegemony of relational databases being challenged by a plethora of new technologies under the NoSQL banner. Among these approaches, graphs are gaining substantial credibility as a means of analyzing data across a broad range of domains. Most NoSQL databases address the perceived performance limitations of relational databases, which flounder when confronted with the exponential growth in data vol- umes that we’ve witnessed over the last few years. But data growth is only one of the challenges we face. Not only is data growing, it’s also becoming more interconnected and more variably structured. In short, it’s becoming far more networked. In addressing performance and scalability, NoSQL has generally given up on the capabilities of the relational model with regard to interconnected data. Graph data- bases, in contrast, revitalize the world of connected data, outperforming relational databases by several orders of magnitude. Many of the most interesting questions we want to ask of our data require us to understand not only that things are connected, but also the differences between those connections. Graph databases offer the most powerful and best-performing means for generating this kind of insight. Connected data poses difficulties for most NoSQL databases, which manage doc- uments, columns, or key/value pairs as disconnected aggregates. To create any semblance of connectedness using these technologies, we must find a way to both denormalize data and fudge connections onto an inherently disconnected model.
Recommended publications
  • Scripting for the Java Platform
    Scripting for the Java Platform Christopher M. Judd President/Consultant Judd Solutions, LLC Christopher M. Judd • President/Consultant of Judd Solutions • Central Ohio Java User Group (COJUG) coordinator Agenda • Java Scripting Overview •Examples –API – Script Shell – Java EE Debugging • Alternative Java Scripting Engines – Configuring –Creating • Closing Thoughts • Resources •Q&A Java is the greatest language ever invented Developer’s tools Every developer’s toolbox should contain a static typed language like Java or C# and a dynamically typed scripting language like JavaScript, Ruby or Groovy. Java Scripting • Java Scripting support added in Java SE 6 • JSR 223: Scripting for the Java Platform • Java Virtual Machine – Executes “language-neutral” bytecode – Rich class library Java JavaScript Groovy – Multi-platform JVM •Features JavaScript Groovy – API to evaluate scripts – Embedded JavaScript engine (Rhino 1.6R2) – Scripting engine discovery mechanism – Java Scripting command-line interpreter (jrunscript) Reasons for Scripting •Flexibility • Simplicity (Domain Specific Language) • Interpreted • Development productivity •Dynamic typing • Expressive syntax •FUN Scripting Uses • Configuration •Customization • Automation • Debugging • Templating •Unit Testing •Prototyping • Web Scripting • Data transport Scripting Options •JavaScript – Rhino – www.mozilla.org/rhino/ •Groovy (JSR-241) – groovy.codehaus.org •Python –Jython –www.jython.org •Ruby –JRuby–jruby.codehaus.org •TCL –Jacl–tcljava.sourceforge.net • Java (JSR-274) – BeanShell www.beanshell.org
    [Show full text]
  • Session 6 - Main Theme J2EE Component-Based Computing Environments
    Application Servers G22.3033-011 Session 6 - Main Theme J2EE Component-Based Computing Environments Dr. Jean-Claude Franchitti New York University Computer Science Department Courant Institute of Mathematical Sciences 1 Agenda Component Technologies Database Technology Review EJB Component Model J2EE Services JNDI, JMS, JTS, CMP/BMP/JDBC, JavaMail, etc. J2EE Web Architectures Security in J2EE Application Servers Structured Applications Design Tips Summary Readings Assignment #5 2 1 Summary of Previous Session COM and COM+ Introduction to .Net Component Technologies Object Management Architectures Java-Based Application Servers Windows Services Summary Readings Assignment #5 3 Additional References Intranet Architectures and Performance Report http://www.techmetrix.com/lab/benchcenter/archiperf/archiper ftoc.shtml#TopOfPage RMI FAQ http://java.sun.com/products/javaspaces/faqs/rmifaq.html CORBA beyond the firewall http://www.bejug.org/new/pages/articles/corbaevent/orbix/ Web Object Integration (vision document) http://www.objs.com/survey/web-object-integration.htm 4 2 Application Servers Architectures Application Servers for Enhanced HTML (traditional) a.k.a., Page-Based Application Servers Mostly Used to Support Standalone Web Applications New Generation Page-Based Script-Oriented App. Servers First Generation Extensions (e.g., Microsoft IIS with COM+/ASP) Servlet/JSP Environments XSP Environment Can now be used as front-end to enterprise applications Hybrid development environments Distributed Object
    [Show full text]
  • Abkürzungs-Liste ABKLEX
    Abkürzungs-Liste ABKLEX (Informatik, Telekommunikation) W. Alex 1. Juli 2021 Karlsruhe Copyright W. Alex, Karlsruhe, 1994 – 2018. Die Liste darf unentgeltlich benutzt und weitergegeben werden. The list may be used or copied free of any charge. Original Point of Distribution: http://www.abklex.de/abklex/ An authorized Czechian version is published on: http://www.sochorek.cz/archiv/slovniky/abklex.htm Author’s Email address: [email protected] 2 Kapitel 1 Abkürzungen Gehen wir von 30 Zeichen aus, aus denen Abkürzungen gebildet werden, und nehmen wir eine größte Länge von 5 Zeichen an, so lassen sich 25.137.930 verschiedene Abkür- zungen bilden (Kombinationen mit Wiederholung und Berücksichtigung der Reihenfol- ge). Es folgt eine Auswahl von rund 16000 Abkürzungen aus den Bereichen Informatik und Telekommunikation. Die Abkürzungen werden hier durchgehend groß geschrieben, Akzente, Bindestriche und dergleichen wurden weggelassen. Einige Abkürzungen sind geschützte Namen; diese sind nicht gekennzeichnet. Die Liste beschreibt nur den Ge- brauch, sie legt nicht eine Definition fest. 100GE 100 GBit/s Ethernet 16CIF 16 times Common Intermediate Format (Picture Format) 16QAM 16-state Quadrature Amplitude Modulation 1GFC 1 Gigabaud Fiber Channel (2, 4, 8, 10, 20GFC) 1GL 1st Generation Language (Maschinencode) 1TBS One True Brace Style (C) 1TR6 (ISDN-Protokoll D-Kanal, national) 247 24/7: 24 hours per day, 7 days per week 2D 2-dimensional 2FA Zwei-Faktor-Authentifizierung 2GL 2nd Generation Language (Assembler) 2L8 Too Late (Slang) 2MS Strukturierte
    [Show full text]
  • Liferay Third Party Libraries
    Third Party Software List Liferay Portal 6.2 EE SP20 There were no third party library changes in this version. Liferay Portal 6.2 EE SP19 There were no third party library changes in this version. Liferay Portal 6.2 EE SP18 There were no third party library changes in this version. Liferay Portal 6.2 EE SP17 File Name Version Project License Comments lib/portal/monte-cc.jar 0.7.7 Monte Media Library (http://www.randelshofer.ch/monte) LGPL 3.0 (https://www.gnu.org/licenses/lgpl-3.0) lib/portal/netcdf.jar 4.2 NetCDF (http://www.unidata.ucar.edu/packages/netcdf-java) Netcdf License (http://www.unidata.ucar.edu/software/netcdf/copyright.html) lib/portal/netty-all.jar 4.0.23 Netty (http://netty.io) Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0) Liferay Portal 6.2 EE SP16 File Name Version Project License Comments lib/development/postgresql.jar 9.4-1201 JDBC 4 PostgreSQL JDBC Driver (http://jdbc.postgresql.org) BSD Style License (http://en.wikipedia.org/wiki/BSD_licenses) lib/portal/commons-fileupload.jar 1.2.2 Commons FileUpload (http://commons.apache.org/fileupload) Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0) This includes a public Copyright (c) 2002-2006 The Apache Software Foundation patch for CVE-2014-0050 and CVE-2016-3092. lib/portal/fontbox.jar 1.8.12 PDFBox (http://pdfbox.apache.org) Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0) lib/portal/jempbox.jar 1.8.12 PDFBox (http://pdfbox.apache.org) Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0) lib/portal/pdfbox.jar 1.8.12 PDFBox (http://pdfbox.apache.org) Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0) lib/portal/poi-ooxml.jar 3.9 POI (http://poi.apache.org) Apache License 2.0 (http://www.apache.org/licenses/LICENSE-2.0) This includes a public Copyright (c) 2009 The Apache Software Foundation patch from bug 56164 for CVE-2014-3529 and from bug 54764 for CVE-2014-3574.
    [Show full text]
  • Programmers Guide
    JBossESB 4.6 Programmers Guide JBESB-PG-7/17/09 JBESB-PG-7/17/09 Legal Notices The information contained in this documentation is subject to change without notice. JBoss Inc. makes no warranty of any kind with regard to this material, including, but not limited to, the implied warranties of merchantability and fitness for a particular purpose. JBoss Inc. shall not be liable for errors contained herein or for incidental or consequential damages in connection with the furnishing, performance, or use of this material. Java™ and J2EE is a U.S. trademark of Sun Microsystems, Inc. Microsoft® and Windows NT® are registered trademarks of Microsoft Corporation. Oracle® is a registered U.S. trademark and Oracle9™, Oracle9 Server™ Oracle9 Enterprise Edition™ are trademarks of Oracle Corporation. Unix is used here as a generic term covering all versions of the UNIX® operating system. UNIX is a registered trademark in the United States and other countries, licensed exclusively through X/Open Company Limited. Copyright JBoss, Home of Professional Open Source Copyright 2006, JBoss Inc., and individual contributors as indicated by the @authors tag. All rights reserved. See the copyright.txt in the distribution for a full listing of individual contributors. This copyrighted material is made available to anyone wishing to use, modify, copy, or redistribute it subject to the terms and conditions of the GNU General Public License, v. 2.0. This program is distributed in the hope that it will be useful, but WITHOUT A WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
    [Show full text]
  • Accessing Application Context Listing
    19_1936_index.qxd 7/11/07 12:14 AM Page 503 INDEX A Ant BSF Support Example Accessing Application Context listing listing (7.12), 314 (10.2), 463 Ant task, Groovy, 132-133 Active File Example listing (8.20), 376 Ant Task That Compiles All Scripts Inside Active File Generator listing (8.22), 380 the Project listing (8.10), 357 active file pattern, 375 AntBuilder Example listing (7.14), 317 consequences, 375 any( ) method, Groovy, 175-177 problem, 375 any( ) Method listing (4.30), 175 sample code, 376-380 Apache Web servers, 62 solution, 375 BSF (Bean Scripting Framework), 94 Active File Template listing (8.21), 379 APIs (application programming ADD keyword, 5 interfaces), 49 addClassPath( ) method, 324 Java, 80-82 administration append( ) method, Groovy, 181-182 scripting, 328-334 append( ) Method listing (4.39), 182 scripting languages, 55-58 application scope, Web environments, 449 Administration Script Example application variable (Groovlet), 215 listing (7.17), 329 applications Advanced Ant BSF Support Example BSF (Bean Scripting Framework), 275 listing (7.13), 315 JSP (JavaServer Pages), 275-280 Advanced AntBuilder Example Xalan-J (XSLT), 280-287 listing (7.15), 320 Java, 79 Advanced Binding Example—Java web applications, 59, 61-67 Application listing (9.13), 408 ASP (Active Server Pages), 64 Advanced Groovy Programming Example games, 68-69 listing (5.22), 225 JavaScript, 65-67 AJAX (Asynchronous JavaScript And Perl, 61-62 XML), 66 PHP, 62-64 Ant build tools, 309-322 UNIX, 68 19_1936_index.qxd 7/11/07 12:14 AM Page 504 504 INDEX apply(
    [Show full text]
  • Another Tool
    Sr.N o. 3rd Party Software 3rd Party Files Provider URL License Type Reference to License License Link ANTLR – Another Tool for Copyright (c) 2005, Terence 1 Language Recognition antlr-2.7.6.jar http://www.antlr.org/ Parr, BSD License ANTLR_License.txt http://www.antlr2.org/license.html ASM - An all purpose Java bytecode manipulation and Copyright (c) 2000-2005 INRIA, 2 analysis framework asm.jar, asm-attrs.jar http://asm.ow2.org/ France Telecom BSD ASM.txt http://asm.ow2.org/license.html http://archive.apache.org/dist/avalon/avalon- 3 Apache Avalon Framework avalon-framework-cvs-20020806.jar http://avalon.apache.org/closed.html Apache License, Version 2.0 Apache2_License.txt framework/jars/LICENSE.txt 4 Apache Axis - Web Services axis.jar http://ws.apache.org/axis/ Apache License, Version 2.0 Apache2_License.txt http://www.apache.org/licenses/LICENSE-2.0.txt 5 Batik SVG Toolkit batik.jar http://xmlgraphics.apache.org/batik/faq.html Apache License, Version 2.0 Apache2_License.txt http://xmlgraphics.apache.org/batik/license.html Eclipse Public License, Version 6 bilki bliki-core-3.0.15.jar http://code.google.com/p/gwtwiki/downloads/list 1.0 EPL.txt http://www.eclipse.org/legal/epl-v10.html 7 Bean Scripting Framework (BSF) bsf.jar http://jakarta.apache.org/bsf/ Apache License, Version 2.0 Apache2_License.txt http://www.apache.org/licenses/LICENSE-2.0.txt GNU Lesser General Public 8 Bean Shell (BSH) bsh-1.2b7.jar http://www.beanshell.org/ License, Sun Public License BSH_License.txt http://www.gnu.org/licenses/lgpl-3.0.txt Apache/IBM Bean Scripting Framework (BSF) Adapter for GNU Lesser General Public 9 BeanShell bsh-bsf-2.0b4.jar http://www.beanshell.org/download.html License, Sun Public License BSH_License.txt http://www.gnu.org/licenses/lgpl-3.0.txt c3p0:JDBC Copyright (C) 2005 Machinery 10 DataSources/Resource Pools c3p0-0.9.1.2.jar http://sourceforge.net/projects/c3p0 For Change, Inc.
    [Show full text]
  • Okta Tools Third Party Licenses and Notices
    Okta Tools Third Party Licenses and Notices This document contains third party open source licenses and notices for the Okta Tools. Certain licenses and notices may appear in other parts of the product in accordance with the applicable license requirements. The Okta product that this document references does not necessarily use all the open source software packages referred to below and may also only use portions of a given package. Third Party Notices Almond Version (if any): 0.2.9 Brief Description: A minimal AMD API implementation for use after optimized builds. License: MIT or BSD 3-Clause, MIT selected Copyright (c) 2011-2014, The Dojo Foundation All Rights Reserved. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
    [Show full text]
  • Performance Testing with Jmeter Second Edition
    [ 1 ] Performance Testing with JMeter Second Edition Test web applications using Apache JMeter with practical, hands-on examples Bayo Erinle BIRMINGHAM - MUMBAI Performance Testing with JMeter Second Edition Copyright © 2015 Packt Publishing All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews. Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book. Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information. First published: July 2013 Second edition: April 2015 Production reference: 1200415 Published by Packt Publishing Ltd. Livery Place 35 Livery Street Birmingham B3 2PB, UK. ISBN 978-1-78439-481-3 www.packtpub.com Credits Author Project Coordinator Bayo Erinle Kinjal Bari Reviewers Proofreaders Vinay Madan Simran Bhogal Satyajit Rai Safis Editing Ripon Al Wasim Joanna McMahon Commissioning Editor Indexer Pramila Balan Monica Ajmera Mehta Acquisition Editor Production Coordinator Llewellyn Rozario Arvindkumar Gupta Content Development Editor Cover Work Adrian Raposo Arvindkumar Gupta Technical Editors Tanvi Bhatt Narsimha Pai Mahesh Rao Copy Editors Charlotte Carneiro Pranjali Chury Rashmi Sawant About the Author Bayo Erinle is an author and senior software engineer with over 11 years of experience in designing, developing, testing, and architecting software.
    [Show full text]
  • TIBCO Software Inc. End User License Agreement
    1 TIBCO Software Inc. End User License Agreement TIBCO Software Inc. End User License Agreement READ THIS END USER LICENSE AGREEMENT CAREFULLY. BY All proprietary notices incorporated in or affixed to any Software, DOWNLOADING OR INSTALLING THE SOFTWARE, YOU AGREE Documentation or Materials shall be duplicated by Customer on all TO BE BOUND BY THIS AGREEMENT. IF YOU DO NOT AGREE copies of the Software, Documentation, or Material, as applicable, TO THESE TERMS, DO NOT DOWNLOAD OR INSTALL THE and shall not be altered, removed or obliterated. SOFTWARE AND RETURN IT TO THE VENDOR FROM WHICH IT WAS PURCHASED. Extraordinary Corporate Event. To the extent Licensee or its successors or assigns enters into an Extraordinary Corporate Event Upon your acceptance as indicated above, the following shall after the Order Form Effective Date, this Agreement shall not apply to govern your use of the Software except to the extent all or any those additional users, divisions or entities, which were added to portion of the Software (a) is subject to a separate written Licensee's organization as a result of the Extraordinary Corporate agreement, or (b) is provided by a third party under the terms set Event until those additional users, divisions or entities are added to forth in an Addenda at the end of this Agreement, in which case the this Agreement by way of a written amendment signed by duly terms of such addenda shall control over inconsistent terms with authorized officers of Licensor and Licensee. regard to such portion(s). Beta and Evaluation Licenses. Notwithstanding the foregoing, if the License Grant.
    [Show full text]
  • Unifier Licensing Information User Manual 16 R2
    Unifier Licensing Information User Manual 16 R2 September 2017 Contents Introduction............................................................................................. 7 Licensed Products, Restricted Use Licenses, and Prerequisite Products ................... 7 Primavera Unifier Project Controls License .......................................................... 7 Primavera Unifier Facilities and Real Estate Management ........................................ 8 Primavera Unifier Portal User License ................................................................ 9 Third Party Notices and/or Licenses ............................................................... 9 Annogen ................................................................................................... 9 Antelope .................................................................................................. 9 Antlr ..................................................................................................... 10 Apache Chemistry OpenCMIS ......................................................................... 10 Apache Commons IO ................................................................................... 10 Apache Commons Lang ................................................................................ 11 Apache Commons Text ................................................................................ 11 Apache Derby........................................................................................... 11 Apache ecs .............................................................................................
    [Show full text]
  • Scripting Your Java Application with BSF 3.0
    Scripting your Java Application with BSF 3.0 Felix Meschberger ApacheCon EU 09 About • Senior Developer at Day • [email protected] • http://blog.meschberger.ch • Apache Projects: – Sling – Felix – Jackrabbit Contents • Scope • BSF 3.0 • Scripting for the JavaTM Platform • OSGi Framework • Demo Scope • Scripting for the JavaTM Platform • Using BSF 3 • Not using BSF 2 API • Example: Apache Sling Contents • Scope • BSF 3.0 • Scripting for the JavaTM Platform • OSGi Framework • Demo About BSF • Bean Scripting Framework • http://jakarta.apache.org/bsf/ • Timeline – 1999 Sanjiva Weerawarana, IBM – 2002 Subproject of Jakarta (Version 2.3) – 2006 BSF 2.4 – 2007 BSF 3.0 beta2 – 2009 BSF 3.0 beta3 (right now!) BSF 3.0 • Java Scripting API (JSR-223) • Stable • Beta due to TCK issues Contents • Scope • BSF 3.0 • Scripting for the JavaTM Platform • OSGi Framework • Demo Scripting for the JavaTM Platform • JSR-223 • Approved November 2006 • Builds on BSF 2.4 and BeanShell • Included in Java 6 • BSF 3.0 for Java 1.4 and Java 5 Three Steps for Scripting 1. Get the ScriptEngineManager ScriptEngineManager mgr = new ScriptEngineManager(); 2. Get the ScriptEngine ScriptEngine eng = mgr.getEngineByExtension(„js“); 3. Evaluate the Script Object result = eng.eval(„'Hello World'“); Demo 1 • Scripting in Three Steps – Sample0.java – Call Class from Command Line Main API • javax.script.ScriptEngineManager – Manages ScriptEngineFactory – Provides access to ScriptEngine – Manages Global Scope • javax.script.ScriptEngineFactory – Registered with ScriptEngineManager
    [Show full text]