Weld 3.0.2.Final - CDI Reference Implementation

Total Page:16

File Type:pdf, Size:1020Kb

Weld 3.0.2.Final - CDI Reference Implementation Weld 3.0.2.Final - CDI Reference Implementation CDI: Contexts and Dependency In- jection for the Java EE platform by Gavin King, Pete Muir, Jozef Hartinger, Martin Kouba, Dan Allen, and David Allen and thanks to Nicola Benaglia, Gladys Guerrero, Eun- Ju Ki,, Terry Chuang, Francesco Milesi, and Sean Wu A note about naming and nomenclature ............................................................................. ix I. Beans ............................................................................................................................ 1 1. Introduction ......................................................................................................... 5 1.1. What is a bean? ......................................................................................... 5 1.2. Getting our feet wet .................................................................................... 5 2. More about beans ................................................................................................ 9 2.1. The anatomy of a bean ............................................................................. 10 2.1.1. Bean types, qualifiers and dependency injection ............................... 10 2.1.2. Scope ............................................................................................ 13 2.1.3. EL name ........................................................................................ 13 2.1.4. Alternatives .................................................................................... 14 2.1.5. Interceptor binding types ................................................................. 14 2.2. What kinds of classes are beans? ............................................................. 16 2.2.1. Managed beans ............................................................................. 16 2.2.2. Session beans ............................................................................... 17 2.2.3. Producer methods .......................................................................... 18 2.2.4. Producer fields ............................................................................... 20 3. JSF web application example ............................................................................ 21 4. Dependency injection and programmatic lookup ............................................... 25 4.1. Injection points .......................................................................................... 25 4.2. What gets injected .................................................................................... 27 4.3. Qualifier annotations ................................................................................. 27 4.4. The built-in qualifiers @Default and @Any .................................................. 29 4.5. Qualifiers with members ............................................................................ 29 4.6. Multiple qualifiers ...................................................................................... 30 4.7. Alternatives ............................................................................................... 31 4.8. Fixing unsatisfied and ambiguous dependencies ......................................... 32 4.9. Client proxies ............................................................................................ 33 4.10. Obtaining a contextual instance by programmatic lookup ........................... 34 4.10.1. Enhanced version of javax.enterprise.inject.Instance ....................... 35 4.11. The InjectionPoint object ......................................................................... 37 5. Scopes and contexts ......................................................................................... 41 5.1. Scope types ............................................................................................. 41 5.2. Built-in scopes .......................................................................................... 42 5.3. The conversation scope ............................................................................ 42 5.3.1. Conversation demarcation .............................................................. 43 5.3.2. Conversation propagation ............................................................... 44 5.3.3. Conversation timeout ...................................................................... 45 5.3.4. CDI Conversation filter ................................................................... 45 5.3.5. Lazy and eager conversation context initialization ............................. 46 5.4. The singleton pseudo-scope ...................................................................... 47 5.5. The dependent pseudo-scope .................................................................... 48 II. Getting Start with Weld, the CDI Reference Implementation ........................................... 51 6. Getting started with Weld .................................................................................. 53 iii Weld 3.0.2.Final - CDI Refere... 6.1. Prerequisites ............................................................................................. 53 6.2. First try .................................................................................................... 53 6.3. Deploying to WildFly ................................................................................. 54 6.4. Deploying to GlassFish ............................................................................. 56 6.5. Deploying to Apache Tomcat ..................................................................... 56 7. Diving into the Weld examples .......................................................................... 59 7.1. The numberguess example in depth .......................................................... 59 7.1.1. The numberguess example in Apache Tomcat or Jetty ...................... 64 7.2. The numberguess example for Java SE with Swing .................................... 65 7.2.1. Creating the Eclipse project ............................................................ 65 7.2.2. Running the example from Eclipse .................................................. 66 7.2.3. Running the example from the command line ................................... 68 7.2.4. Understanding the code .................................................................. 68 7.3. The translator example in depth ................................................................. 74 III. Loose coupling with strong typing ................................................................................ 79 8. Producer methods ............................................................................................. 81 8.1. Scope of a producer method ..................................................................... 82 8.2. Injection into producer methods ................................................................. 82 8.3. Disposer methods ..................................................................................... 83 9. Interceptors ........................................................................................................ 85 9.1. Interceptor bindings ................................................................................... 85 9.2. Implementing interceptors .......................................................................... 86 9.3. Enabling interceptors ................................................................................. 87 9.4. Interceptor bindings with members ............................................................. 88 9.5. Multiple interceptor binding annotations ...................................................... 89 9.6. Interceptor binding type inheritance ............................................................ 90 9.7. Use of @Interceptors ................................................................................ 90 9.8. Enhanced version of javax.interceptor.InvocationContext ............................. 91 10. public void afterPersonalBlogUpdate(@Observes @Updated @Personal @Blog Document document) { … } ...................................................................... 105 10.1. Transactional observers ......................................................................... 105 10.2. Enhanced version of javax.enterprise.event.Event ................................... 107 11. Stereotypes .................................................................................................... 109 11.1. Default scope for a stereotype ............................................................... 109 11.2. Interceptor bindings for stereotypes ........................................................ 110 11.3. Name defaulting with stereotypes ........................................................... 110 11.4. Alternative stereotypes .......................................................................... 111 11.5. Stereotype stacking ............................................................................... 111 11.6. Built-in stereotypes ................................................................................ 112 12. Specialization, inheritance and alternatives ................................................... 113 12.1. Using alternative stereotypes ................................................................. 113 12.2. A minor problem with alternatives ........................................................... 115 12.3. Using specialization ..............................................................................
Recommended publications
  • 10 Steps to Improving Your Deployment Process to Wildfly and Jboss EAP Whitepaper
    10 steps to improving your deployment process to WildFly and JBoss EAP Whitepaper Table of contents Best practices for application deployments 3 Versioned artifacts together with application configuration 3 Versioned and templatized JBoss profile configuration 4 Best practices for deployments to IIS 4 Standard runtime control setup 4 Runtime control, insight, and deployment service 5 Automation 5 Automated application and configuration deployment 5 Automated JBoss middleware provisioning 5 Secure self-service 5 Integration 6 Consider components outside the Red Hat stack 6 Integrate with your development toolchain 6 Digital.ai | 10 steps to improving your deployment process to WildFly and JBoss EAP 2 Whitepaper At Digital.ai, we have decades of accumulated experience deploying to JBoss EAP and broader Red Hat middleware environments. Based on this Versioning knowledge, we have collected a list of practices and recommendations that can help you improve your 1. Versioned artifacts together with application deployment process to your JBoss- application configuration based middleware stack. 2. Versioned and templatized JBoss Many of the following practices, which we have profile configuration grouped into Versioning, Management, Automation, and Integration “tracks”, are applicable and valuable in other middleware environments too. Management The lightweight and flexible nature of JBoss1, the 3. Standard runtime control setup consequent wide variety of possible setups, and the relatively rapid pace of change of automation 4. Runtime control, insight, and interfaces, result in a number of JBoss-specific deployment service challenges too. Automation Versioning 5. Automated application and 1. Versioned artifacts together with application configuration deployment configuration 6. Automated JBoss middleware Real apps running on JBoss are more than just an EAR file.
    [Show full text]
  • Dialogic® Powermedia™ XMS JSR 309 Connector Software Installation
    Dialogic® PowerMedia™ XMS JSR 309 Connector Software Release 3.2 Installation and Configuration Guide with TeleStax JBoss Application Server February 2017 Rev 3.1 www.dialogic.com Copyright and Legal Notice Copyright © 2016-2017 Dialogic Corporation. All Rights Reserved. You may not reproduce this document in whole or in part without permission in writing from Dialogic Corporation at the address provided below. All contents of this document are furnished for informational use only and are subject to change without notice and do not represent a commitment on the part of Dialogic Corporation and its affiliates or subsidiaries ("Dialogic"). Reasonable effort is made to ensure the accuracy of the information contained in the document. However, Dialogic does not warrant the accuracy of this information and cannot accept responsibility for errors, inaccuracies or omissions that may be contained in this document. INFORMATION IN THIS DOCUMENT IS PROVIDED IN CONNECTION WITH DIALOGIC® PRODUCTS. NO LICENSE, EXPRESS OR IMPLIED, BY ESTOPPEL OR OTHERWISE, TO ANY INTELLECTUAL PROPERTY RIGHTS IS GRANTED BY THIS DOCUMENT. EXCEPT AS PROVIDED IN A SIGNED AGREEMENT BETWEEN YOU AND DIALOGIC, DIALOGIC ASSUMES NO LIABILITY WHATSOEVER, AND DIALOGIC DISCLAIMS ANY EXPRESS OR IMPLIED WARRANTY, RELATING TO SALE AND/OR USE OF DIALOGIC PRODUCTS INCLUDING LIABILITY OR WARRANTIES RELATING TO FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR INFRINGEMENT OF ANY INTELLECTUAL PROPERTY RIGHT OF A THIRD PARTY. Dialogic products are not intended for use in certain safety-affecting situations. Please see http://www.dialogic.com/company/terms-of-use.aspx for more details. Due to differing national regulations and approval requirements, certain Dialogic products may be suitable for use only in specific countries, and thus may not function properly in other countries.
    [Show full text]
  • Release Notes for Fedora 20
    Fedora 20 Release Notes Release Notes for Fedora 20 Edited by The Fedora Docs Team Copyright © 2013 Fedora Project Contributors. The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. The original authors of this document, and Red Hat, designate the Fedora Project as the "Attribution Party" for purposes of CC-BY-SA. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version. Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law. Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, MetaMatrix, Fedora, the Infinity Logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries. For guidelines on the permitted uses of the Fedora trademarks, refer to https:// fedoraproject.org/wiki/Legal:Trademark_guidelines. Linux® is the registered trademark of Linus Torvalds in the United States and other countries. Java® is a registered trademark of Oracle and/or its affiliates. XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries. MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries. All other trademarks are the property of their respective owners.
    [Show full text]
  • Oracle to Openjdk Migrations
    DATASHEET Make the Move from Oracle Java to Supported OpenJDK Oracle License Changes Cost of Cost of Number Number Oracle Java OpenJDK OpenLogic of Core of The new licensing requirements for Oracle Java SE Annual Annual Support Users Servers SE subscriptions have prompted many appli- Subscription Subscription cation development teams to reevaluate their 512 32 $92,160 $0 $30,880 options. 992 62 $179,280 $0 $56,080 Many teams are following analysts’ advice and adopting OpenJDK with supported and certified COST COMPARISON OF ORACLE JAVA VERSUS OPENJDK WITH OPENLOGIC SUPPORT builds from other vendors. the free OpenJDK license with OpenLogic support. Whether you have a OpenLogic can help organizations make the small or large core user base, the savings are substantial. move from Oracle Java to a supported OpenJDK The above comparison assumes the following: model with the following: • Most servers have dual, octa-core CPUs for a total • Free, certified and supported builds of of 16 cores. OpenJDK available at openlogic.com/ • The average user is in the 500 – 999 core tier priced openjdk-downloads. at $20/core/month (based on most recent Oracle Java • Enterprise support for any Java, including SE Subscription Global Price List). builds from other vendors. • The average customer has negotiated a 25% discount • Migration services to help you move seam- from Oracle. lessly from Oracle to OpenJDK. Java Support from OpenLogic Achieve Cost-Savings with Supported OpenJDK OpenLogic offers commercial support for all Java distributions, includ- ing Adopt OpenJDK, IBM, and Oracle’s Java. Based on the price of an Oracle Java SE subscription, which includes licensing and support, we’ve put Java support from OpenLogic includes security patches and bug fixes, together a conservative estimate of the annual in addition to guidance for the usage and administration of Java and the cost savings you can expect when migrating to JVM.
    [Show full text]
  • A Post-Apocalyptic Sun.Misc.Unsafe World
    A Post-Apocalyptic sun.misc.Unsafe World http://www.superbwallpapers.com/fantasy/post-apocalyptic-tower-bridge-london-26546/ Chris Engelbert Twitter: @noctarius2k Jatumba! 2014, 2015, 2016, … Disclaimer This talk is not going to be negative! Disclaimer But certain things are highly speculative and APIs or ideas might change by tomorrow! sun.misc.Scissors http://www.underwhelmedcomic.com/wp-content/uploads/2012/03/runningdude.jpg sun.misc.Unsafe - What you (don’t) know sun.misc.Unsafe - What you (don’t) know • Internal class (sun.misc Package) sun.misc.Unsafe - What you (don’t) know • Internal class (sun.misc Package) sun.misc.Unsafe - What you (don’t) know • Internal class (sun.misc Package) • Used inside the JVM / JRE sun.misc.Unsafe - What you (don’t) know • Internal class (sun.misc Package) • Used inside the JVM / JRE // Unsafe mechanics private static final sun.misc.Unsafe U; private static final long QBASE; private static final long QLOCK; private static final int ABASE; private static final int ASHIFT; static { try { U = sun.misc.Unsafe.getUnsafe(); Class<?> k = WorkQueue.class; Class<?> ak = ForkJoinTask[].class; example: QBASE = U.objectFieldOffset (k.getDeclaredField("base")); java.util.concurrent.ForkJoinPool QLOCK = U.objectFieldOffset (k.getDeclaredField("qlock")); ABASE = U.arrayBaseOffset(ak); int scale = U.arrayIndexScale(ak); if ((scale & (scale - 1)) != 0) throw new Error("data type scale not a power of two"); ASHIFT = 31 - Integer.numberOfLeadingZeros(scale); } catch (Exception e) { throw new Error(e); } } } sun.misc.Unsafe
    [Show full text]
  • 6.3 Release Notes
    JBoss Enterprise Application Platform 6.3 6.3 Notable features and fixes for this release. Released August 4, 2014. Last Updated: 2017-10-16 JBoss Enterprise Application Platform 6.3 6.3 Notable features and fixes for this release. Released August 4, 2014. Nidhi Chaudhary Lucas Costi Russell Dickenson Sande Gilda Vikram Goyal Eamon Logue Darrin Mison Scott Mumford David Ryan Nidhi Srinivas Misty Stanley-Jones Keerat Verma Tom Wells Legal Notice Copyright © 2014 Red Hat, Inc.. This document is licensed by Red Hat under the Creative Commons Attribution-ShareAlike 3.0 Unported License. If you distribute this document, or a modified version of it, you must provide attribution to Red Hat, Inc. and provide a link to the original. If the document is modified, all Red Hat trademarks must be removed. Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law. Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries. Linux ® is the registered trademark of Linus Torvalds in the United States and other countries. Java ® is a registered trademark of Oracle and/or its affiliates. XFS ® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries. MySQL ® is a registered trademark of MySQL AB in the United States, the European Union and other countries. Node.js ® is an official trademark of Joyent.
    [Show full text]
  • (Minus Sign) in Class Diagrams, 15 * (Asterisk) As Wildcard, 58 ? (Question
    Index - (minus sign) in class diagrams, 15 AOP module (Spring), 34, 37 * (asterisk) as wildcard, 58 Apache Axis web services framework, 210 ? (question mark) for positional bind Apache Maven, 280–285 variables, 187 Apache Struts framework, 23 + (plus sign) in class diagrams, 15 Apache Tiles framework, 122, 278 Apache Tomcat, 257 ■ A APF (Authentication Processing Filter), AbstractCachingViewResolver class, 60 233–243 AbstractCommandController class, 74–78 application contexts (Spring), 33 AbstractController class, 71–74 Application Controller pattern AbstractEnterpriseBean class, 158, 200 action/command handling, 52–56 AbstractHandlerMapping, 54 action handlers, using, 56–58 AbstractMessageDrivenBean class, 200 for action-view management, 50–52 AbstractProcessingFilter, 234 background, 50–51 AbstractStatelessSessionBean, 158 benefits and concerns, 68 AbstractTemplateViewResolver class, strategies with Spring framework, 52 60–61 view handlers, 59–62, 62–68 AbstractWizardFormController class, 89 application server transactions, 261 access decision manager (Spring application servers, 138 Security), 228 application service implementation class, accessDecisionManager property, 164 246–247 Application Service pattern Acegi Security, 223–224 benefits and concerns, 167 action/command handling (application to concentrate business logic in POJO controller), 52–56 classes, 162–163 action handlers strategies with Spring framework, page controllers and, 51 164–167 sequence, 54 applicationContext-security.xml, 229 using (application controller), 56–58
    [Show full text]
  • Perception and Effects of Implementing Kotlin in Existing Projects
    Bachelor thesis Undergraduate level Perception and effects of implementing Kotlin in existing projects A case study about language adoption Author: Emil Sundin Supervisor: Wei Song Examiner: Azadeh Sarkheyli Discipline: Informatics Course: IK2017 Credit: 15 credits Examination date: 2018-05-25 Dalarna University provides the opportunity for publishing the thesis through DiVA as Open Access. This means that the thesis work will become freely available to read and download through their portal. Dalarna University encourages students as well as researchers to publish their work in the Open Access format. We approve the publishing of this thesis work under the Open Access format: Yes ☒ No ☐ Dalarna University – SE-791 88 Falun – Phone +4623-77 80 00 Abstract The Kotlin programming language has seen an increase of adoption since its launch in 2011. In late 2017 Google announced first-class support for Kotlin on the Android platform which further popularized the language. With this increase in popularity we felt it was interesting to investigate how Kotlin affects the developer experience. We performed a case study to see how Java developers perceive the Kotlin language, and how it meets the requirements of these developers. To gather the developer requirements and their perception of Kotlin we performed two sets of interviews and rewrote parts of their codebase. The first set of interviews identified developer requirements and the second set of interviews showcased the Kotlin language and its potential use in their codebase. The results show that Kotlin can meet most of the developer requirements and that the perception of Kotlin is positive. Kotlin’s ability to be incrementally adopted was a prominent feature which reduced the inherent risks of technology adoption while providing them the ability to further evaluate the language.
    [Show full text]
  • Develop a Simple Web Application with Apache Wicket and Apache
    Develop a simple Web application with Apache Wicket and Apache Geronimo Combine Wicket, Geronimo, and Apache Derby to form an open source Java Web development platform Skill Level: Intermediate Robi Sen ([email protected]) Vice President Department 13 LLC 10 Jul 2007 Apache Wicket is an innovative Java™ Web application framework that was introduced a couple of years ago. It helps simplify Web application development by clearly separating the roles of developers and designers. It lets you remove logical code from the view layer, eliminating the need for JavaServer Pages (JSP), providing a simple plain old Java object (POJO)-centric mode of development, and removing much of the need for XML and other configuration file formats. In this tutorial, learn how to set up your system to develop a simple Web application with Wicket, using Apache Geronimo as your application server and Apache Derby as the embedded database. Section 1. Before you start This tutorial is designed for developers who have found Java frameworks, such as Struts, lacking in needed functionality. If you're interested in developing Web applications in a more object-oriented manner, where the view is clearly separated from logic and there's minimal configuration and mapping, then Wicket is for you! This tutorial walks you through the basics of how Wicket works, while using Apache Geronimo to set up a Java Platform, Enterprise Edition (Java EE) server, Web server, and embedded database in just minutes. Combining Wicket with Geronimo lets you develop data-driven, scalable Web applications using software that's all open source. Develop a simple Web application with Apache Wicket and Apache Geronimo © Copyright IBM Corporation 1994, 2008.
    [Show full text]
  • Towards High-Quality Android Applications Development with Kotlin Bruno Gois Mateus
    Towards high-quality Android applications development with Kotlin Bruno Gois Mateus To cite this version: Bruno Gois Mateus. Towards high-quality Android applications development with Kotlin. Mobile Computing. Université Polytechnique Hauts-de-France, 2021. English. NNT : 2021UPHF0012. tel- 03247062 HAL Id: tel-03247062 https://tel.archives-ouvertes.fr/tel-03247062 Submitted on 2 Jun 2021 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. PhD Thesis Université Polytechnique Hauts-de-France and from INSA Hauts-de-France Subject: Computer Science Presented and defended by Bruno GÓIS MATEUS On March 26, 2021, Valenciennes Doctoral School: Sciences Pour l’Ingénieur (ED SPI 072) Research team, Laboratory: Département d’Informatique Laboratory of Industrial and Human Automation control, Mechanical engineering and Computer Science (LAMIH UMR CNRS 8201) Towards high-quality Android applications development with Kotlin JURY Committee President - Káthia MARÇAL DE OLIVEIRA. Professor at Université Polytechnique Hauts-de-France. Reviewers - Guilherme HORTA TRAVASSOS. Professor at Federal University of Rio de Janeiro. - Jacques KLEIN. Professor at University of Luxembourg. Examiner - Dalila TAMZALIT. Associate Professor at Université de Nantes. Supervisor - Christophe KOLSKI. Professor at Université Polytechnique Hauts-de-France. Co-Supervisor - Matias MARTINEZ.
    [Show full text]
  • Red Hat Decision Manager 7.4 Running and Modifying the Employee Roster Starter Application for Red Hat Business Optimizer Using an IDE
    Red Hat Decision Manager 7.4 Running and modifying the employee roster starter application for Red Hat Business Optimizer using an IDE Last Updated: 2020-05-26 Red Hat Decision Manager 7.4 Running and modifying the employee roster starter application for Red Hat Business Optimizer using an IDE Red Hat Customer Content Services [email protected] Legal Notice Copyright © 2020 Red Hat, Inc. The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/ . In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version. Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law. Red Hat, Red Hat Enterprise Linux, the Shadowman logo, the Red Hat logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries. Linux ® is the registered trademark of Linus Torvalds in the United States and other countries. Java ® is a registered trademark of Oracle and/or its affiliates. XFS ® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries. MySQL ® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
    [Show full text]
  • Red Hat Jboss Enterprise Application Platform 7.1
    Red Hat JBoss Enterprise Application Platform 7.1 Introduction to JBoss EAP For Use with Red Hat JBoss Enterprise Application Platform 7.1 Last Updated: 2018-10-11 Red Hat JBoss Enterprise Application Platform 7.1 Introduction to JBoss EAP For Use with Red Hat JBoss Enterprise Application Platform 7.1 Legal Notice Copyright © 2018 Red Hat, Inc. The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/ . In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version. Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law. Red Hat, Red Hat Enterprise Linux, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries. Linux ® is the registered trademark of Linus Torvalds in the United States and other countries. Java ® is a registered trademark of Oracle and/or its affiliates. XFS ® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries. MySQL ® is a registered trademark of MySQL AB in the United States, the European Union and other countries. Node.js ® is an official trademark of Joyent.
    [Show full text]