This document discusses Java EE architecture and patterns. It provides an overview of the latest Java EE technologies, including the Entity, Control, and Boundary (ECB) pattern. It also covers concepts like convention over configuration, annotations, dependency injection, bean validation, and interceptors/aspect-oriented programming in Java EE. The document includes examples and labs/exercises for attendees to implement these techniques in Java EE applications.
The Proxy Wars - MySQL Router, ProxySQL, MariaDB MaxScaleColin Charles
Â
As proxies (and database routers) go, the first one I ever used was the now deprecated MySQL Proxy. Since then, I've managed to use MariaDB MaxScale quite a bit (including its fork AirBnB MaxScale), played around with ProxySQL in recent time, and also started taking a look at MySQL Router. In this quick 20-minute overview, we'll discuss why these three exist, a feature comparison, and reasons when to use the right tool for the job.
The monolith to cloud-native, microservices evolution has driven a shift from monitoring to observability. OpenTelemetry, a merger of the OpenTracing and OpenCensus projects, is enabling Observability 2.0. This talk covers the fundamental concepts of observability and then demonstrates how to instrument your applications using the OpenTelemetry libraries.
Over the last year there has been a lot of buzz about Clean Architecture in the Android community, but what is Clean Architecture? How does it work? And should I be using it? Recently at Badoo we decided to rewrite our messenger component.ââ
Over the years this core piece of functionality in our app has become large and unwieldy.ââWe wanted to take a fresh approach to try and prevent this from happening again.ââWe choose to use Clean Architecture to achieve our goal.ââ This talk intends to share our journey from theory to implementation in an application with over 100 million downloads.ââBy the end, you should not only understand what Clean Architecture is, but how to implement it, and whether you should.
Odoo Online platform: architecture and challengesOdoo
Â
A short introduction to the technical architecture of the Odoo Online platform, including the advanced integrated features (instant DNS, email gateways, etc.), and the technical aspect of the SLA.
By Olivier Dony - Lead Developer & Community Manager, OpenERP
Using Processes and Timers for Long-Running Asynchronous TasksOutSystems
Â
What do you do when a task can take more than five minutes and then times out? How do you run it asynchronously and present the status to the user? Come and see how processes and timers can be used together.
The Proxy Wars - MySQL Router, ProxySQL, MariaDB MaxScaleColin Charles
Â
As proxies (and database routers) go, the first one I ever used was the now deprecated MySQL Proxy. Since then, I've managed to use MariaDB MaxScale quite a bit (including its fork AirBnB MaxScale), played around with ProxySQL in recent time, and also started taking a look at MySQL Router. In this quick 20-minute overview, we'll discuss why these three exist, a feature comparison, and reasons when to use the right tool for the job.
The monolith to cloud-native, microservices evolution has driven a shift from monitoring to observability. OpenTelemetry, a merger of the OpenTracing and OpenCensus projects, is enabling Observability 2.0. This talk covers the fundamental concepts of observability and then demonstrates how to instrument your applications using the OpenTelemetry libraries.
Over the last year there has been a lot of buzz about Clean Architecture in the Android community, but what is Clean Architecture? How does it work? And should I be using it? Recently at Badoo we decided to rewrite our messenger component.ââ
Over the years this core piece of functionality in our app has become large and unwieldy.ââWe wanted to take a fresh approach to try and prevent this from happening again.ââWe choose to use Clean Architecture to achieve our goal.ââ This talk intends to share our journey from theory to implementation in an application with over 100 million downloads.ââBy the end, you should not only understand what Clean Architecture is, but how to implement it, and whether you should.
Odoo Online platform: architecture and challengesOdoo
Â
A short introduction to the technical architecture of the Odoo Online platform, including the advanced integrated features (instant DNS, email gateways, etc.), and the technical aspect of the SLA.
By Olivier Dony - Lead Developer & Community Manager, OpenERP
Using Processes and Timers for Long-Running Asynchronous TasksOutSystems
Â
What do you do when a task can take more than five minutes and then times out? How do you run it asynchronously and present the status to the user? Come and see how processes and timers can be used together.
My Laws of Test Driven Development (2023)Dennis Doomen
Â
About 15 years ago, I got inspired by a series of posts on Test Driven Development written by the Jeremy D. Miller. Now, with many years of great and not-so-great experiences practicing Test Driven Development, I thought it is the time to capture my own âlawsâ. The term "law" is obviously an exaggeration and "principles or heuristics" cover my intend much better. Either way, I want to talk about the scope of testing, using the observable behavior, naming conventions, state-based vs interaction-based testing, the impact of DRY, patterns to build useful test objects and some of the libraries and tools I use. In short, everything I try to follow every day I write, review or maintain code.
Jane Uyvova
Senior Solutions Architect, MongoDB
March 21, 2017
MongoDB Evenings San Francisco
Learn how easy it is to set up, operate, and scale your MongoDB deployments in the cloud with MongoDB Atlas.
How Kafka Powers the World's Most Popular Vector Database System with Charles...HostedbyConfluent
Â
We use Kafka as the data backbone to build Milvus, an open-source vector database system that has been adopted by thousands of organizations worldwide for vector similarity search. In this presentation, we will share how Milvus uses Kafka to enable both real-time processing and batch processing on vector data at scale. We will walk through the challenges of unified streaming and batching in vector data processing, as well as the design choices and the Kafka-based data architecture.
Snowflake: The most cost-effective agile and scalable data warehouse ever!Visual_BI
Â
In this webinar, the presenter will take you through the most revolutionary data warehouse, Snowflake with a live demo and technical and functional discussions with a customer. Ryan Goltz from Chesapeake Energy and Tristan Handy, creator of DBT Cloud and owner of Fishtown Analytics will also be joining the webinar.
Embracing DevOps through database migrations with FlywayRed Gate Software
Â
"Evolutionary Database Design" is the best phrase to describe database migrations. But what do we know about database migrations using PostgreSQL containers?
This session will provide you with answers and guidelines to get you started with Database DevOps practices for your organization. You will learn the aspects, methods, and strategies to build and manage your database deployments through CI/CD pipelines with open source tools like Flyway, Jenkins, and Kubernetes.
You will be able to build your first database migration through a CI/CD pipeline at the end of this session.
The Modern Data Team for the Modern Data Stack: dbt and the Role of the Analy...Databricks
Â
A traditional data team has roles including data engineer, data scientist, and data analyst. However, many organizations are finding success by integrating a new role â the analytics engineer. The analytics engineer develops a code-based data infrastructure that can serve both analytics and data science teams. He or she develops re-usable data models using the software engineering practices of version control and unit testing, and provides the critical domain expertise that ensures that data products are relevant and insightful. In this talk weâll talk about the role and skill set of the analytics engineer, and discuss how dbt, an open source programming environment, empowers anyone with a SQL skillset to fulfill this new role on the data team. Weâll demonstrate how to use dbt to build version-controlled data models on top of Delta Lake, test both the code and our assumptions about the underlying data, and orchestrate complete data pipelines on Apache Sparkâ˘.
Building an Asynchronous Application Framework with Python and Pulsar - Pulsa...StreamNative
Â
This talk describes Klaviyoâs internal messaging system, an asynchronous application framework built around Pulsar that provides a set of high-quality tools for building business-critical asynchronous data flows in unreliable environments. This framework includes: a pulsar ORM and schema migrator for topic configuration; a retry/replay system; a versioned schema registry; a consumer framework oriented around preventing message loss and in hostile environments while maximizing observability; an experimental âonline schema changeâ for topics; and more. Development of this system was informed by lessons learned during heavy use of datastores like RabbitMQ and Kafka, and frameworks like Celery, Spark, and Flink. In addition to the capabilities of this system, this talk will also cover (sometimes painful) lessons learned about the process of converting a heterogenous async-computing environment onto Pulsar and a unified model.
PostgreSQL 10 had added built-in logical replication which tackles some of the limitations of physical replication and opens up the possibility of promising new areas of replication. In this webinar, we will introduce the concept of logical replication and demonstrate how one can configure a logical replication in no time.
Highlights include:
- Basic architecture, including the publisher and subscriber model
- Configuration, administration, and monitoring
- Limitations and future plans
In-memory OLTP storage with persistence and transaction supportAlexander Korotkov
Â
Nowadays it becomes evident that single storage engine can't be "one size fits all". PostgreSQL community starts its movement towards pluggable storages. Significant restriction which is imposed in the current approach is compatibility. We consider pluggable storages to be compatible with (at least some) existing index access methods. That means we've long way to go, because we have to extend our index AMs before we can add corresponding features in the pluggable storages themselves.
In this talk we would like look this problem from another angle, and see what can we achieve if we try to make storage completely from scratch (using FDW interface for prototyping). Thus, we would show you a prototype of in-memory OLTP storage with transaction support and snapshot isolation. Internally it's implemented as index-organized table (B-tree) with undo log and optional persistence. That means it's quite different from what we have in PostgreSQL now.
The proved by benchmarks advantages of this in-memory storage are: better multicore scalability (thanks to no buffer manager), reduced bloat (thanks to undo log) and optimized IO (thank to logical WAL logging).
Top 50 java ee 7 best practices [con5669]Ryan Cuprak
Â
JavaOne 2016
This session provides 50 best practices for Java EE 7, with examples. The best practices covered focus primarily on JPA, CDI, JAX-WS, and JAX-RS. In addition, topics involving testing and deployment are covered. This presentation points out where best practices have changed, common misconceptions, and antipatterns that should be avoided. This is a fast-paced presentation with many code samples.
My Laws of Test Driven Development (2023)Dennis Doomen
Â
About 15 years ago, I got inspired by a series of posts on Test Driven Development written by the Jeremy D. Miller. Now, with many years of great and not-so-great experiences practicing Test Driven Development, I thought it is the time to capture my own âlawsâ. The term "law" is obviously an exaggeration and "principles or heuristics" cover my intend much better. Either way, I want to talk about the scope of testing, using the observable behavior, naming conventions, state-based vs interaction-based testing, the impact of DRY, patterns to build useful test objects and some of the libraries and tools I use. In short, everything I try to follow every day I write, review or maintain code.
Jane Uyvova
Senior Solutions Architect, MongoDB
March 21, 2017
MongoDB Evenings San Francisco
Learn how easy it is to set up, operate, and scale your MongoDB deployments in the cloud with MongoDB Atlas.
How Kafka Powers the World's Most Popular Vector Database System with Charles...HostedbyConfluent
Â
We use Kafka as the data backbone to build Milvus, an open-source vector database system that has been adopted by thousands of organizations worldwide for vector similarity search. In this presentation, we will share how Milvus uses Kafka to enable both real-time processing and batch processing on vector data at scale. We will walk through the challenges of unified streaming and batching in vector data processing, as well as the design choices and the Kafka-based data architecture.
Snowflake: The most cost-effective agile and scalable data warehouse ever!Visual_BI
Â
In this webinar, the presenter will take you through the most revolutionary data warehouse, Snowflake with a live demo and technical and functional discussions with a customer. Ryan Goltz from Chesapeake Energy and Tristan Handy, creator of DBT Cloud and owner of Fishtown Analytics will also be joining the webinar.
Embracing DevOps through database migrations with FlywayRed Gate Software
Â
"Evolutionary Database Design" is the best phrase to describe database migrations. But what do we know about database migrations using PostgreSQL containers?
This session will provide you with answers and guidelines to get you started with Database DevOps practices for your organization. You will learn the aspects, methods, and strategies to build and manage your database deployments through CI/CD pipelines with open source tools like Flyway, Jenkins, and Kubernetes.
You will be able to build your first database migration through a CI/CD pipeline at the end of this session.
The Modern Data Team for the Modern Data Stack: dbt and the Role of the Analy...Databricks
Â
A traditional data team has roles including data engineer, data scientist, and data analyst. However, many organizations are finding success by integrating a new role â the analytics engineer. The analytics engineer develops a code-based data infrastructure that can serve both analytics and data science teams. He or she develops re-usable data models using the software engineering practices of version control and unit testing, and provides the critical domain expertise that ensures that data products are relevant and insightful. In this talk weâll talk about the role and skill set of the analytics engineer, and discuss how dbt, an open source programming environment, empowers anyone with a SQL skillset to fulfill this new role on the data team. Weâll demonstrate how to use dbt to build version-controlled data models on top of Delta Lake, test both the code and our assumptions about the underlying data, and orchestrate complete data pipelines on Apache Sparkâ˘.
Building an Asynchronous Application Framework with Python and Pulsar - Pulsa...StreamNative
Â
This talk describes Klaviyoâs internal messaging system, an asynchronous application framework built around Pulsar that provides a set of high-quality tools for building business-critical asynchronous data flows in unreliable environments. This framework includes: a pulsar ORM and schema migrator for topic configuration; a retry/replay system; a versioned schema registry; a consumer framework oriented around preventing message loss and in hostile environments while maximizing observability; an experimental âonline schema changeâ for topics; and more. Development of this system was informed by lessons learned during heavy use of datastores like RabbitMQ and Kafka, and frameworks like Celery, Spark, and Flink. In addition to the capabilities of this system, this talk will also cover (sometimes painful) lessons learned about the process of converting a heterogenous async-computing environment onto Pulsar and a unified model.
PostgreSQL 10 had added built-in logical replication which tackles some of the limitations of physical replication and opens up the possibility of promising new areas of replication. In this webinar, we will introduce the concept of logical replication and demonstrate how one can configure a logical replication in no time.
Highlights include:
- Basic architecture, including the publisher and subscriber model
- Configuration, administration, and monitoring
- Limitations and future plans
In-memory OLTP storage with persistence and transaction supportAlexander Korotkov
Â
Nowadays it becomes evident that single storage engine can't be "one size fits all". PostgreSQL community starts its movement towards pluggable storages. Significant restriction which is imposed in the current approach is compatibility. We consider pluggable storages to be compatible with (at least some) existing index access methods. That means we've long way to go, because we have to extend our index AMs before we can add corresponding features in the pluggable storages themselves.
In this talk we would like look this problem from another angle, and see what can we achieve if we try to make storage completely from scratch (using FDW interface for prototyping). Thus, we would show you a prototype of in-memory OLTP storage with transaction support and snapshot isolation. Internally it's implemented as index-organized table (B-tree) with undo log and optional persistence. That means it's quite different from what we have in PostgreSQL now.
The proved by benchmarks advantages of this in-memory storage are: better multicore scalability (thanks to no buffer manager), reduced bloat (thanks to undo log) and optimized IO (thank to logical WAL logging).
Top 50 java ee 7 best practices [con5669]Ryan Cuprak
Â
JavaOne 2016
This session provides 50 best practices for Java EE 7, with examples. The best practices covered focus primarily on JPA, CDI, JAX-WS, and JAX-RS. In addition, topics involving testing and deployment are covered. This presentation points out where best practices have changed, common misconceptions, and antipatterns that should be avoided. This is a fast-paced presentation with many code samples.
50 EJB 3 Best Practices in 50 Minutes - JavaOne 2014Ryan Cuprak
Â
This session provides 50 best practices for EJB 3 in 50 minutes with examples. These best practices involve not only EJB 3.2 but also its integration with other Java EE 7 technologies, not only coding best practices but also testing and production practices. The presentation targets Java EE 7 and also points out where best practices have changed, what patterns you should embrace, and antipatterns to avoid. This is a fast-paced presentation with many code samples. Categories covered include configuration, JPA, concurrency, testing, performance tuning, exception handling, CDI integration, JMS queue patterns, pattern changes, and many more.
Reactive Java EE - Let Me Count the Ways!Reza Rahman
Â
As our industry matures there are pockets of increased demand for high-throughput, low-latency systems heavily utilizing event-driven programming and asynchronous processing. This trend is gradually converging on the somewhat well established but so-far not well understood term "Reactive".
This session explores how vanilla Java SE and Java EE aligns with this movement via features and APIs like JMS, MDB, EJB @Asynchronous, JAX-RS/Servlet/WebSocket async, CDI events, Java EE concurrency utilities and so on. We will also see how these robust facilities can be made digestible even in the most complex cases for mere mortal developers through Java SE 8 Lambdas and Completable Futures.
Reactive programming met Java 8 en Java EE 7 - Martijn BlankestijnNLJUG
Â
Java SE 8 is een grote stap in de evolutie van het Java Platform. Java 8 introduceerde lambda's, een nieuwe Date-Time API en nog veel meer. Completable Futures is een nieuwe Java 8 feature die vaak over het hoofd wordt gezien. Completable Futures (a.k.a. promises) borduren verder op de bestaande Future API en maakt een asynchroon, non-blocking event-driven programmeermodel mogelijk. Deze sessie geeft een inkijk in de Completable Future API en plaatst deze in de context van het toenemend gebruik en interesse voor asynchroniciteit en 'reactive programming'. De live-demo's demonstreren hoe een traditionele service met 'vanilla' Java EE 7 API's zoals JAX-RS en JSON wordt omgevormd tot een 'pipeline' van (parallel uitgevoerde) operaties.
10.000 ft. overview about the options of storing values of 250.000 sensors from a paint shop in automotive sector; presentation for the management of one of our customers.
TYPO3 v8 is one of the most important LTS version releases in the TYPO3 History. You may call it the #NextGenerationCMS (Content Management System). It gives TYPO3 the long-awaited major boost in functionality and features. In this blog, you will find detail about the new improvements & features. We hope, this will help #Developers, #Integrators, #Editors & #Administrators to understand #TYPO3 8 in depth, Checkout AtoZ details at http://www.nitsan.in/blog/post/atoz-about-typo3-v8-cms/
Designing, Implementing, and Using Reactive APIsVMware Tanzu
Â
SpringOne Platform 2017
Paul Harris, Pivotal; Ben Hale, Pivotal
The Java community is on the cusp of a major change in programming model. As the industry moves towards high-performance micro-service architectures, the need for a reactive programming model becomes clear. In this session, the lead developers of the Cloud Foundry Java Client will talk about what led them to choose a reactive API. Using that project as a lens, they'll explore how they designed and implemented this API using Project Reactor and what users will expect when using a reactive API. If you are a developer looking to provide reactive APIs, this is your chance to gain the experience of team building a large, production-ready reactive library.
Impact2014: Introduction to the IBM Java ToolsChris Bailey
Â
IBM provides a number of free tools to assist in monitoring and diagnosing issues when running any Java application - from Hello World to IBM or third-party, middleware-based applications. This session introduces attendees to those tools, highlights how they have been extended with IBM middleware product knowledge, how they have been integrated into IBMs development tools, and how to use them to investigate and resolve real-world problem scenarios.
Abstract from StarEast:
Fuzzing and Fault Modeling for Product Evaluation
Test environments are often maintained under favorable conditions, providing a stable, reliable configuration for testing. However, once the product is released to production, it is subject to the stresses of low resources, noisyâeven maliciousâdata, unusual users, and much more. Will real-world use destroy the reliability of your software and embarrass your organization? Shmuel Gershon describes fuzzing and fault modeling, techniques used to simulate worst-case run-time scenarios in his testing. Fuzzing explores the limits of a system interface with high volumes of random input data. Fault models examine and highlight system resource usage, pointing out potential problems. These techniques help raise important questions about product qualityâeven for conditions that arenât explicit in requirements. Shmuel shares practical principles for getting started with fuzzing and fault modeling, and demonstrates catastrophic failures on real-world applications. Come and learn how, using free tools, you can push the limits of your software.
IBM Rational Host Access Transformation Services (HATS) can dynamically transform your terminal-based applications into rich web pages. It is highly customizable and built on Java EE technology. We'll discuss some lessons learned from a very (very) complex HATS engagement. We'll discuss proper development strategies, and how to distribute workload across team members. We'll introduce a novel approach to unit testing advanced customizations using JUnit, and will also talk about how to address functional testing.
WebSphere Technical University: Introduction to the Java Diagnostic ToolsChris Bailey
Â
IBM provides a number of free tools to assist in monitoring and diagnosing issues when running
any Java application - from Hello World to IBM or third-party, middleware-based applications. This
session introduces attendees to those tools, highlights how they have been extended with IBM
middleware product knowledge, how they have been integrated into IBMâs development tools,
and how to use them to investigate and resolve real-world problem scenarios
Presented at the WebSphere Technical University 2014, Dusseldorf
RESTHeart - Modern runtime for microservices with instant Data API on MongoDB.SoftInstigate
Â
RESTHeart is an Open Source runtime highly suited for back end microservices. It leverages MongoDB to provide the data API out-of-the-box. Get the 80% common requirements out-of-the-box and easily extend the API for the 20%.
- Instant Data API with MongoDB
- Built-in Authentication and Authorization
- Elegant Java and Kotlin Framework to extend the API
RESTHeart is tailored for JVM, Docker and Kubernetes, crafted from the best of breed Java libraries and standards, designed to radically simplify server-side development and deployment.
- Ready-to-run stateless Microservice
- Available as binary and Docker container
- Deploy both on Cloud and on-premises
Running Java Applications on Cloud FoundryVMware Tanzu
Â
SpringOne Platform 2017
Ben Hale, Pivotal
From a developer's perspective, running a Java application on Cloud Foundry appears to consist of pushing a compiled artifact and getting a running process. From the platform's perspective though, there's a whole lot more going on. In this talk, the lead developer of the Java Buildpack will walk you through what goes on during application staging and what the buildpack can do for you. It will cover everything from dependency resolution to memory calculation and will even discuss how to integrate with marketplace services with no application configuration.
DevOps is a methodology capturing the practices adopted from the very start by the web giants who had a unique opportunity as well as a strong requirement to invent new ways of working due to the very nature of their business: the need to evolve their systems at an unprecedented pace as well as extend them and their business sometimes on a daily basis.
While DevOps makes obviously a critical sense for startups, I believe that the big corporations with large and old-fashioned IT departments are actually the ones that can benefit the most from adopting these principles and practices.
I am Joe B. I am a Computer Network Security Assignment Expert at computernetworkassignmenthelp.com. I hold a Master's in Computer Science from, Texas Tech University. I have been helping students with their assignments for the past 7 years. I solve assignments related to the Computer Network.
Visit computernetworkassignmenthelp.com or email support@computernetworkassignmenthelp.com.
You can also call on +1 678 648 4277 for any assistance with the Computer Network Assignment.
Practical, team-focused operability techniques for distributed systems - DevO...Matthew Skelton
Â
In this talk, we explore five practical, tried-and-tested, real world techniques for improving operability with many kinds of software systems, including cloud, Serverless, Microservices, on-premise, and IoT. Based on our work in many industry sectors, we will share our experience of helping teams to improve the operability of their software systems through these straightforward, team-friendly techniques.
From a talk given at DevOpsCon Munich 2017 https://devopsconference.de/microservices/practical-team-focused-operability-techniques-for-distributed-systems/
Innovating Inference - Remote Triggering of Large Language Models on HPC Clus...Globus
Â
Large Language Models (LLMs) are currently the center of attention in the tech world, particularly for their potential to advance research. In this presentation, we'll explore a straightforward and effective method for quickly initiating inference runs on supercomputers using the vLLM tool with Globus Compute, specifically on the Polaris system at ALCF. We'll begin by briefly discussing the popularity and applications of LLMs in various fields. Following this, we will introduce the vLLM tool, and explain how it integrates with Globus Compute to efficiently manage LLM operations on Polaris. Attendees will learn the practical aspects of setting up and remotely triggering LLMs from local machines, focusing on ease of use and efficiency. This talk is ideal for researchers and practitioners looking to leverage the power of LLMs in their work, offering a clear guide to harnessing supercomputing resources for quick and effective LLM inference.
Unleash Unlimited Potential with One-Time Purchase
BoxLang is more than just a language; it's a community. By choosing a Visionary License, you're not just investing in your success, you're actively contributing to the ongoing development and support of BoxLang.
Understanding Globus Data Transfers with NetSageGlobus
Â
NetSage is an open privacy-aware network measurement, analysis, and visualization service designed to help end-users visualize and reason about large data transfers. NetSage traditionally has used a combination of passive measurements, including SNMP and flow data, as well as active measurements, mainly perfSONAR, to provide longitudinal network performance data visualization. It has been deployed by dozens of networks world wide, and is supported domestically by the Engagement and Performance Operations Center (EPOC), NSF #2328479. We have recently expanded the NetSage data sources to include logs for Globus data transfers, following the same privacy-preserving approach as for Flow data. Using the logs for the Texas Advanced Computing Center (TACC) as an example, this talk will walk through several different example use cases that NetSage can answer, including: Who is using Globus to share data with my institution, and what kind of performance are they able to achieve? How many transfers has Globus supported for us? Which sites are we sharing the most data with, and how is that changing over time? How is my site using Globus to move data internally, and what kind of performance do we see for those transfers? What percentage of data transfers at my institution used Globus, and how did the overall data transfer performance compare to the Globus users?
Quarkus Hidden and Forbidden ExtensionsMax Andersen
Â
Quarkus has a vast extension ecosystem and is known for its subsonic and subatomic feature set. Some of these features are not as well known, and some extensions are less talked about, but that does not make them less interesting - quite the opposite.
Come join this talk to see some tips and tricks for using Quarkus and some of the lesser known features, extensions and development techniques.
Gamify Your Mind; The Secret Sauce to Delivering Success, Continuously Improv...Shahin Sheidaei
Â
Games are powerful teaching tools, fostering hands-on engagement and fun. But they require careful consideration to succeed. Join me to explore factors in running and selecting games, ensuring they serve as effective teaching tools. Learn to maintain focus on learning objectives while playing, and how to measure the ROI of gaming in education. Discover strategies for pitching gaming to leadership. This session offers insights, tips, and examples for coaches, team leads, and enterprise leaders seeking to teach from simple to complex concepts.
First Steps with Globus Compute Multi-User EndpointsGlobus
Â
In this presentation we will share our experiences around getting started with the Globus Compute multi-user endpoint. Working with the Pharmacology group at the University of Auckland, we have previously written an application using Globus Compute that can offload computationally expensive steps in the researcher's workflows, which they wish to manage from their familiar Windows environments, onto the NeSI (New Zealand eScience Infrastructure) cluster. Some of the challenges we have encountered were that each researcher had to set up and manage their own single-user globus compute endpoint and that the workloads had varying resource requirements (CPUs, memory and wall time) between different runs. We hope that the multi-user endpoint will help to address these challenges and share an update on our progress here.
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppGoogle
Â
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
đđ Click Here To Get More Info đđ
https://sumonreview.com/ai-fusion-buddy-review
AI Fusion Buddy Review: Key Features
â Create Stunning AI App Suite Fully Powered By Google's Latest AI technology, Gemini
â Use Gemini to Build high-converting Converting Sales Video Scripts, ad copies, Trending Articles, blogs, etc.100% unique!
â Create Ultra-HD graphics with a single keyword or phrase that commands 10x eyeballs!
â Fully automated AI articles bulk generation!
â Auto-post or schedule stunning AI content across all your accounts at onceâWordPress, Facebook, LinkedIn, Blogger, and more.
â With one keyword or URL, generate complete websites, landing pages, and moreâŚ
â Automatically create & sell AI content, graphics, websites, landing pages, & all that gets you paid non-stop 24*7.
â Pre-built High-Converting 100+ website Templates and 2000+ graphic templates logos, banners, and thumbnail images in Trending Niches.
â Say goodbye to wasting time logging into multiple Chat GPT & AI Apps once & for all!
â Save over $5000 per year and kick out dependency on third parties completely!
â Brand New App: Not available anywhere else!
â Beginner-friendly!
â ZERO upfront cost or any extra expenses
â Risk-Free: 30-Day Money-Back Guarantee!
â Commercial License included!
See My Other Reviews Article:
(1) AI Genie Review: https://sumonreview.com/ai-genie-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
#AIFusionBuddyReview,
#AIFusionBuddyFeatures,
#AIFusionBuddyPricing,
#AIFusionBuddyProsandCons,
#AIFusionBuddyTutorial,
#AIFusionBuddyUserExperience
#AIFusionBuddyforBeginners,
#AIFusionBuddyBenefits,
#AIFusionBuddyComparison,
#AIFusionBuddyInstallation,
#AIFusionBuddyRefundPolicy,
#AIFusionBuddyDemo,
#AIFusionBuddyMaintenanceFees,
#AIFusionBuddyNewbieFriendly,
#WhatIsAIFusionBuddy?,
#HowDoesAIFusionBuddyWorks
Climate Science Flows: Enabling Petabyte-Scale Climate Analysis with the Eart...Globus
Â
The Earth System Grid Federation (ESGF) is a global network of data servers that archives and distributes the planetâs largest collection of Earth system model output for thousands of climate and environmental scientists worldwide. Many of these petabyte-scale data archives are located in proximity to large high-performance computing (HPC) or cloud computing resources, but the primary workflow for data users consists of transferring data, and applying computations on a different system. As a part of the ESGF 2.0 US project (funded by the United States Department of Energy Office of Science), we developed pre-defined data workflows, which can be run on-demand, capable of applying many data reduction and data analysis to the large ESGF data archives, transferring only the resultant analysis (ex. visualizations, smaller data files). In this talk, we will showcase a few of these workflows, highlighting how Globus Flows can be used for petabyte-scale climate analysis.
Navigating the Metaverse: A Journey into Virtual Evolution"Donna Lenk
Â
Join us for an exploration of the Metaverse's evolution, where innovation meets imagination. Discover new dimensions of virtual events, engage with thought-provoking discussions, and witness the transformative power of digital realms."
GraphSummit Paris - The art of the possible with Graph TechnologyNeo4j
Â
Sudhir Hasbe, Chief Product Officer, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges â from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Crescat
Â
Crescat is industry-trusted event management software, built by event professionals for event professionals. Founded in 2017, we have three key products tailored for the live event industry.
Crescat Event for concert promoters and event agencies. Crescat Venue for music venues, conference centers, wedding venues, concert halls and more. And Crescat Festival for festivals, conferences and complex events.
With a wide range of popular features such as event scheduling, shift management, volunteer and crew coordination, artist booking and much more, Crescat is designed for customisation and ease-of-use.
Over 125,000 events have been planned in Crescat and with hundreds of customers of all shapes and sizes, from boutique event agencies through to international concert promoters, Crescat is rigged for success. What's more, we highly value feedback from our users and we are constantly improving our software with updates, new features and improvements.
If you plan events, run a venue or produce festivals and you're looking for ways to make your life easier, then we have a solution for you. Try our software for free or schedule a no-obligation demo with one of our product specialists today at crescat.io
Enhancing Research Orchestration Capabilities at ORNL.pdfGlobus
Â
Cross-facility research orchestration comes with ever-changing constraints regarding the availability and suitability of various compute and data resources. In short, a flexible data and processing fabric is needed to enable the dynamic redirection of data and compute tasks throughout the lifecycle of an experiment. In this talk, we illustrate how we easily leveraged Globus services to instrument the ACE research testbed at the Oak Ridge Leadership Computing Facility with flexible data and task orchestration capabilities.
AI Pilot Review: The Worldâs First Virtual Assistant Marketing SuiteGoogle
Â
AI Pilot Review: The Worldâs First Virtual Assistant Marketing Suite
đđ Click Here To Get More Info đđ
https://sumonreview.com/ai-pilot-review/
AI Pilot Review: Key Features
â Deploy AI expert bots in Any Niche With Just A Click
â With one keyword, generate complete funnels, websites, landing pages, and more.
â More than 85 AI features are included in the AI pilot.
â No setup or configuration; use your voice (like Siri) to do whatever you want.
â You Can Use AI Pilot To Create your version of AI Pilot And Charge People For ItâŚ
â ZERO Manual Work With AI Pilot. Never write, Design, Or Code Again.
â ZERO Limits On Features Or Usages
â Use Our AI-powered Traffic To Get Hundreds Of Customers
â No Complicated Setup: Get Up And Running In 2 Minutes
â 99.99% Up-Time Guaranteed
â 30 Days Money-Back Guarantee
â ZERO Upfront Cost
See My Other Reviews Article:
(1) TubeTrivia AI Review: https://sumonreview.com/tubetrivia-ai-review
(2) SocioWave Review: https://sumonreview.com/sociowave-review
(3) AI Partner & Profit Review: https://sumonreview.com/ai-partner-profit-review
(4) AI Ebook Suite Review: https://sumonreview.com/ai-ebook-suite-review
Graspan: A Big Data System for Big Code AnalysisAftab Hussain
Â
We built a disk-based parallel graph system, Graspan, that uses a novel edge-pair centric computation model to compute dynamic transitive closures on very large program graphs.
We implement context-sensitive pointer/alias and dataflow analyses on Graspan. An evaluation of these analyses on large codebases such as Linux shows that their Graspan implementations scale to millions of lines of code and are much simpler than their original implementations.
These analyses were used to augment the existing checkers; these augmented checkers found 132 new NULL pointer bugs and 1308 unnecessary NULL tests in Linux 4.4.0-rc5, PostgreSQL 8.3.9, and Apache httpd 2.2.18.
- Accepted in ASPLOS â17, Xiâan, China.
- Featured in the tutorial, Systemized Program Analyses: A Big Data Perspective on Static Analysis Scalability, ASPLOS â17.
- Invited for presentation at SoCal PLS â16.
- Invited for poster presentation at PLDI SRC â16.
Code reviews are vital for ensuring good code quality. They serve as one of our last lines of defense against bugs and subpar code reaching production.
Yet, they often turn into annoying tasks riddled with frustration, hostility, unclear feedback and lack of standards. How can we improve this crucial process?
In this session we will cover:
- The Art of Effective Code Reviews
- Streamlining the Review Process
- Elevating Reviews with Automated Tools
By the end of this presentation, you'll have the knowledge on how to organize and improve your code review proces
Globus Connect Server Deep Dive - GlobusWorld 2024Globus
Â
We explore the Globus Connect Server (GCS) architecture and experiment with advanced configuration options and use cases. This content is targeted at system administrators who are familiar with GCS and currently operateâor are planning to operateâbroader deployments at their institution.
How Recreation Management Software Can Streamline Your Operations.pptxwottaspaceseo
Â
Recreation management software streamlines operations by automating key tasks such as scheduling, registration, and payment processing, reducing manual workload and errors. It provides centralized management of facilities, classes, and events, ensuring efficient resource allocation and facility usage. The software offers user-friendly online portals for easy access to bookings and program information, enhancing customer experience. Real-time reporting and data analytics deliver insights into attendance and preferences, aiding in strategic decision-making. Additionally, effective communication tools keep participants and staff informed with timely updates. Overall, recreation management software enhances efficiency, improves service delivery, and boosts customer satisfaction.
How Recreation Management Software Can Streamline Your Operations.pptx
Â
Java EE Pattern: Entity Control Boundary Pattern and Java EE
1. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
1
Session: Pragmatic Architecture
Java EE, latest brew
Entity, Control and Boundary
2. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
2
Objectives
Learn about:
â Get an overview about the latest Java EE technologies used at the
backend
â A warming up for the architectural aspects
â Get an idea about the ECB pattern as a general principle
3. 3
Where are we right now?
Existing
architectures
Architecture
Patterns
Customer &
Business
needs
Further
requirements
Reference
Architecture
mining
proven concepts vision
analysis
evolution triggering
4. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
4
Some orientation
Consumer
Consumer
Layer
Integration
Layer
Business Process
Layer
Services
Layer
Component
Layer
OS
Layer
5. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
5
Module
Java EE, latest brew
6. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
6
The rise of Spring and Hibernate
Spring
â Application framework
â Dependency Injection
â AOP support
â Non-invasiveness as a basic principle
â O/R persistence support for various frameworks
Hibernate
â POJO based O/R persistence
Spring and Hibernate became
a popular alternative to
J2EE development.
7. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
7
Don't look back
Until V5.0 Enterprise Java really had a bad reputation:
â Too complex, especially when it comes to EJBs
(Home Interface, Local Interface, Remote Interface, Bean class,
Deployment Descriptor)
â Too inflexible, especially when it comes to CMP (heavy-weighted
objects, Session Facades and Value Objects)
â Outdated, especially when it comes to AOP
and DI
â Too expensive, especially when it comes
to app-servers
â Too ...
But things change!
8. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
8
Right now
Java EE V5.0 (and higher) has a lot to provide:
â Context and Dependency Injection (CDI)
â Validators
â JPA 2.x
â Convention over Configuration
â And âŚits a standard supported
by various vendors
9. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
9
Convention over Configuration
â A principle borrowed from the Ruby on Rails tribe
â Decreases the number of decisions to be made and configurations
to be done by default configurations
â Annotations replace XDoclet's JavaDoc tags:
ď§ Compiler checks
ď§ Type safety (instead if just strings)
â All information previously stored in the
deployment descriptor file (the meta-data hell)
now moved into annotations
(but DD file still optional and
overwrites Annotation)
10. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
10
XDoclet & Annotations
â XDoclet:
â Annotation:
/**
* @ejb.bean name = âUserMgmtServiceâ view-type = âremoteâ
*/
public class UserMgmtService implements SessionBean
{
âŚ
}
@Stateless
@Remote(UsrMgmt.class)
public class UserMgmtService implements UsrMgmt
{
âŚ
}
11. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
11
Annotations
@Stateless:
â Marks the class as a Stateless Session Bean, no need to implement
an interface or to extend a class
â Provides a default transaction handling (every method will be
executed in a single transaction)
@LocalBean
â All public methods will be exposed to local clients, no need to
implement a dedicated interface
â Local clients - like Servlets or other EJBs â might obtain a
reference by means of dependecy injection.
12. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
12
Lab
Implement Stateless Session Bean
(not more than 15 min.)
13. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
13
Dependency injection
â Providing an external dependency (any ressource
like another EJB, a DataSource, a JMS destination âŚ)
to a software component.
â Previously (within a client bean)
public void init()
{
try
{
ctx = new InitialContext();
facade = (UserManagementService)
ctx.lookup("ejb/facade/UserManagementService");
}
catch (NamingException e)
{
e.printStackTrace();
}
}
14. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
14
Dependency Injection
In our days:
â No Exception handling, no casting issues, no misspelling, no
deployment descriptors, no ...
@Stateless
@Remote(Client.class)
public class ClientBean implements Client
{
@EJB
private UserMgmtLocal userMgmt;
...
}
15. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
15
Lab
Implement Dependency Injection
(not more than 15 min.)
16. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
16
Bean Validation
JSR 303: Bean Validation
â you can use it anywhere you like:
ď§ front-end,
ď§ back-end,
ď§ even DTO (if you follow this pattern)
â reference implementation is
Hibernate Validator v4.x
â validation on two different levels: attribute or entire bean
â i18n ready and message are parameterized
â extensible with your own validators
â configurable with annotations or XML
17. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
17
Several build-in Validators
â Quite a few Validators are already implemented within the
javax.validator package, some examples:
@AssertFalse / @AssertTrue The value of the field or property
must be false / true
@Max / @Min The value of the field or property
must be an integer value lower /
higher than or equal to the
number in the value element.
@NotNull The value of the field must not be
null
@Past / @Future The date has to be in the past /
future
... @see link below
18. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
18
Example
â Considering a user, we might want to
ensure the following:
public class User implements Serializable
{
@NotNull
private long id;
@NotNull
@Size(min = 4, max = 8)
private String user;
@NotNull
@Size(min = 8, max = 15)
private String password;
19. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
19
Example: evaluating
â If not done by the container (which is the usual case), we can
evaluate 'manually'
public void testValidation()
{
Set<ConstraintViolation<User>> violations = validator.validate(user);
System.out.println("Number of violations: " + violations.size());
for (ConstraintViolation<User> constraintViolation : violations)
{
System.out.println(constraintViolation.getPropertyPath() + " "
+ constraintViolation.getMessage());
}
}
@BeforeClass
public static void init()
{
user = new User();
user.setPassword("abcdef");
factory = Validation.buildDefaultValidatorFactory();
validator = factory.getValidator();
}
20. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
20
Writing your own validator
â ⌠not covered if this training!
â Though the JSR defines a whole bunch of
standard constraint annotations such as
@NotNull, @Size, @Min or @AssertTrue,
there will always be validation requirements,
for which these standard annotations won't
suffice.
â Being aware of that problem, the specification
authors laid out the API in an expansible manner,
that allows users to define their custom constraint annotations.
â A nice tutorial can be found here:
http://musingsofaprogrammingaddict.blogspot.de/2009/02/getting-started-with-
jsr-303-bean.html
21. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
21
Lab
Implement Validator
(not more than 15 min.)
22. 22
AOP / Interceptors
Aspect-oriented programming
â A paradigm more than a pattern.
â Certain software properties cannot be isolated in single functional
unit, instead they crosscut multiple components
â Such cross-cutting concerns result in tangled code that is hard to
develop and maintain, e.g.:
ď§ Logging
ď§ Authentication
24. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
24
Interceptors
â Introduced with EJB 3.0
â Are one of the Java EE pendant to Aspects (the other is a Servlet
Filter).
â Are pretty easy to implement
25. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
25
Interceptors
â Provided EJBs with a rudimentary
Aspect Oriented Programming system.
â Enable a clean distinction of business logic
and meta or support code.
â Are classes (distinct form the beans themself).
â Interpose themselves on methods calls
or life cycle events.
â Have access to information about the business method that triggered it,
including method names an parameters.
â Can halt processing of the business method.
â Can be used on session and message-driven beans.
â A bean can have any number of Interceptors.
â Common uses for interceptors are security checking,
logging or auditing functions.
separation
of
concerns
26. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
26
An Interceptor
public class PerformanceInterceptor
{
private Logger log = Logger.getLogger(this.getClass().getName());
@AroundInvoke
public Object onMethodCall(InvocationContext ctx) throws Exception
{
log.info(">>> Entering interceptor");
long start = System.currentTimeMillis();
log.info("Invocation of: " + ctx.getMethod().getName());
try
{
// go ahead using the invocation context
return ctx.proceed();
}
finally
{
long end = System.currentTimeMillis();
long duration = end - start;
log.info("Duration of invocation: " + duration);
}
}
}
27. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
27
Intercepting
@Stateless(mappedName = "ejb/facade/UserManagementService")
@Remote(UserManagementService.class)
// alternatively you can use the interceptor here as well
public class UserManagementServiceBean implements UserManagementService
{
// use interceptor (comment if using ejb-jar.xml)
@Interceptors(PerformanceInterceptor.class)
public User findUserByCredentials(String user, String pwd)
{
User u = new User("peterp", "neverland");
return u;
}
public User createUser(User u)
{
return u;
}
}
â Annotate method(s) or class
28. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
28
Configuration by XML
â The recommened way as we can change without recompilation
<?xml version="1.0" encoding="UTF-8"?>
<ejb-jar version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/ejb-jar_3_0.xsd">
<assembly-descriptor>
<interceptor-binding>
<ejb-name>UserManagementServiceBean</ejb-name>
<interceptor-class>
de.brockhaus.userMgmt.backend.util.PerformanceInterceptor
</interceptor-class>
<method>
<method-name>findUserByCredentials</method-name>
<method-params>
<method-param>java.lang.String</method-param>
<method-param>java.lang.String</method-param>
</method-params>
</method>
</interceptor-binding>
</assembly-descriptor>
29. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
29
Lab
Implement Interceptor
(not more than 15 min.)
30. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
30
Persistent Entities / JPA 2.x
â JPA defines a way to map regular, plain old Java objects (POJOs)
to a database.
â These plain Java objects are called persistent entities (and no
longer EntityBeans):
ď§ they can be used in regular Java applications outside of an
application server and can even be used to transfer data
between a client and a server.
ď§ In EJB 2.1 specification, entity beans were âheavyweightâ:
â˘
dependent on the application server.
â˘
dependent on the entire Java EE runtime
environment.
â˘
cause high memory consumption.
31. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
31
Parts of JPA
The JPA Specification consists of three parts:
â Entities
ď§ business objects.
ď§ persisted in the database.
â Persistence unit
ď§ A group of a finite set of Entity bean classes.
ď§ Associated to a particular database so that the persistence provider
knows where, how, and with what kind of database it is interacting.
ď§ Are defined in an xml deployment descriptor named persistence.xml.
â EntityManager
ď§ The EntityManager provides an API to maintain the Entities.
ď§ provides the persistence context for a particular persistence unit.
32. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
32
Basic Mappings
The entity: @Entity
â Defines the class as persistent Entity
The Table: @Table
â By default tablename == classname
â You can change this (veeeery needful in case of reserved word like
USER) by @Table(name=âTABLENAMEâ)
â You can define
unique constraints:
The primary key: @Id
â ⌠you need to have one but can leave generation to
the provider, we'll see later
@Table(
uniqueConstraints=@UniqueConstraint(
columnNames={"FIRSTNAME", "LASTNAME"})
)
33. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
33
Basic Mappings
The attributes/fields: @Column
â Defines a lot of switches like:
ď§ name=âTABLE_NAMEâ if the field identifier is not appropriate or
whatsoever.
ď§ unique=true (default is false),
ď§ insertable/updateable=false (default is true)
ď§ table=âOTHER_TABLEâ, default is ââ (same table)
ď§ length=8 (default is 255)
ď§ precision=2, column decimal precision (default is 0)
ď§ scale=1, column decimal scale if useful (default is 0)
34. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
34
Example
@Entity
public class User implements Serializable
{
private static final long serialVersionUID = 4616273573516105734L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
@NotNull
@Size(min = 4, max = 8)
@Column(unique = true)
private String user;
@NotNull
@Size(min = 8)
private String password;
@ManyToOne(cascade={CascadeType.ALL})
private Person person;
public User()
{ }
public Person getPerson()
{ return person; }
35. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
35
The EntityManager
â A service provided by JPA, all access to an entity goes through
this service.
â Provides a query API and life cycle methods for the entity.
â To interact with entity beans, just plain Java is needed.
â Entity beans and EntityManager do not require an application
server to be used.
ď§ You can use Java persistence in unit tests and standalone Java
applications like any Java library.
â Two options for clients to use the EntityManager:
ď§ container managed, container runtime is responsible for
providing and determining the EntityManager for
applications.
ď§ application managed, the application is responsible for
the EntityManager itself.
36. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
36
Application-managed EntityManager
In Java SE applications you must use an EntityManagerFactory.
â How to get the EntityManagerFactory in Java SE:
EntityManagerFactory factory;
factory = Persistence.createEntityManagerFactory(âpersistence-unit-nameâ);
EntityManager manager = factory.createEntityManager();
...
// do some work with the EntityManager
...
// close factory and releasing any resources that it holds
factory.close();
37. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
37
Container-managed EntityManager
â Only available within an application server.
â The container injects the EntityManager, once Annotation
@PersistenceContext is used.
ď§ unitName is the name of the persistence-unit which will be used.
ď§ (optional) type can set to EXTENDED in stateful SessionBeans, default is
TRANSACTION-SCOPED.
â Alternatively the JNDI lookup can be used.
//use the field injection
@PersistenceContext(unitName=âpersistence-unit-nameâ)
private EntityManager objEntityManager;
//alternatively the injection can be used on the setter
@PersistenceContext(unitName=âpersistence-unit-nameâ)
public void setFactory(EntityManager f){
this.objEntityManager = f;
}
// or use SessionContext lookup method
EntityManager objEntityManager =
(EntityManager)ctx.lookup(âjava:comp/env/persistence-unit-nameâ)
38. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
38
In search for definitions
Persistence Unit
â A persistence unit defines a set of all entity
classes that are managed by EntityManager
instances in an application.
â This set of entity classes represents the
data contained within a single data store.
â Persistence units are defined by the
persistence.xml configuration file.
The JAR file or directory whose META-INF
directory contains persistence.xml is called the root of the
persistence unit. The scope of the persistence unit is determined
by the persistence unitâs root.
â Each persistence unit must be identified with a name that is unique
to the persistence unitâs scope.
39. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
39
In search for definitions
PersistenceContext
â A persistence context is a set of managed
entity instances that exist in a particular
data store.
â The EntityManager interface defines the
methods that are used to interact with
the persistence context.
40. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
40
Deployment Descriptor
Condensed and simple:
â The JPA specification requires a simple XML deployment
descriptor.
â The deployment descriptor is called persistence.xml
and is placed in the META-INF directory.
(which has to be on the classpath in case of JavaSE)
â the persistence.xml configures basic things like:
ď§ name of the persistence unit service.
ď§ the used datasource / database
ď§ defines where to look for entity beans.
mandatory
42. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
42
The EntityManager Class
Three kinds of operations:
â Entity live cycle management
ď§ persist() a new instance is managed and persistent.
ď§ remove() destroy entities data in the database.
ď§ merge() merge the state of the given entity into the current
persistence context.
â Database synchronisation operations
ď§ flush() synchronize the persistence context.
ď§ refresh() refreshes the instance from database.
43. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
43
The EntityManager Class
Three kinds of operations:
â Entity lookup and queries
ď§ find() find by primary key and initialize the state based on
the lazy-loading policies of each property.
ď§ getReference() get an instance, whose state may be lazily
fetched.
ď§ createQuery() locate persistence object by using JP-QL.
44. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
44
Example of using the Entity Manager
@Stateless(mappedName = "ejb/facade/UserManagementService")
@Remote(UserManagementService.class)
public class UserManagementServiceBean implements UserManagementService
{
private EntityManager em;
public UserManagementServiceBean()
{ this.em = EntityManagerHelper.getEntityManager(); }
public User createUser(User u)
{
EntityTransaction tx = em.getTransaction();
try
{
tx.begin();
em.persist(u);
tx.commit();
}
catch(Exception e)
{
e.printStackTrace();
tx.rollback();
}
return u;
}
45. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
45
Queries and JPQL
â Language to define queries for finder and select methods.
ď§ compiled to the target language.
ď§ is similar to SQL
â The query references the abstract schema name of a bean as its
model, defined as the classname of the entitiy (default mapping)
or overwritten with the @table annotation on class level.
â Used to define the query methods.
ď§ Finder methods
ď§ Select Methods
â In the JP-QL has four clauses:
- Select clause
ď§ Optional From clause
ď§ Optional Where clause
ď§ Optional Order By clause
46. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
46
Named Queries
â Are a type of static queries.
â Define in the code or overwritten with deployment descriptor
(can be changed by administrator or deployer then)
@Entity
@NamedQueries({
@NamedQuery(name = "User.findByCredentials",
query = " FROM User AS u WHERE u.user = :user AND password = :pwd" )
}
)
public class User implements Serializable
{
private static final long serialVersionUID = 4616273573516105734L;
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
47. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
47
Invocation
â Implements at respective service
â Make use of TypedQuery<X> (EJB 3.1 only)
public User findUserByCredentials(String user, String pwd)
{
TypedQuery<User> tQuery =
em.createNamedQuery("User.findUserByCredentials", User.class);
tQuery.setParameter("user", user);
tQuery.setParameter("pwd", pwd);
return tQuery.getSingleResult();
}
48. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
48
Lab
Implement JPA
(not more than 15 min.)
49. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
49
Module
Entity, Control
and Boundary
50. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
50
The dozens of technologies
â ⌠but no concise guideline to structure these
â To provide an (functional) example:
ď§ The ISA 95 international standard for developing an automated interface
between enterprise and control systems.
ď§ This standard has been developed for
global manufacturers. It was developed
to be applied in all industries, and in
all sorts of processes, like batch
processes, continuous and repetitive
processes.
51. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
51
ISA 95
The activity model of ISA 95
â How to apply the technologies?
â Guess you can easily find similar in your domain
Detailed
Scheduling
Resource
Management
Tracking
Dispatching
Definition
Management
Data Collection
Execution
Analysis
52. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
52
Cohesion
From wikipedia
â The measure how strongly related and focused the the various
responsibilities of a software module are.
â Modules with high cohesion tend to be preferrable as high cohesion
is associated with various benefits like robustness, reliability and
reusability.
In Java EE
â Main responsibility of a business component is the exposure of it's
specifications or contract and hiding it's realization
53. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
53
ECB Pattern (get the things sorted)
Entity Control Boundary
â Based upon Robustness Diagrams
(http://www.agilemodeling.com/artifacts/robustnessDiagram.htm)
ď§ Boundary: user interface
ď§ Control: actual process or activity
ď§ Entity: a concept from an enterprise context.
â Elements are generic enough to be mapped either to service-
oriented or object-oriented architectures.
Boundary Control Entity
Adam Bien
54. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
54
ECB Pattern in JavaEE
Boundary:
â Service Façade or Gateway, exposes functionality
of a component by means of several protocols and
technologies
Control:
â reusable, fine-grained service behind a
boundary
â might be optional or generic in simple use cases such as CRUD or
MDM (master data management)
Entity:
â object-oriented or procedural domain objects.
â In most cases mapped to a single JPA entity
55. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
55
Mapping ECB to Java
Business components
â Can be mapped directly to Java packages,
e.g. de.brockhaus.userMgmt
â Boundary, control and entity can be mapped
to subpackages within the business component
package:
ď§ de.brockhaus.userMgmt.boundary
ď§ de.brockhaus.userMgmt.control
ď§ de.brockhaus.userMgmt.entity
â The whole business component might be realized as an
individual jar
â Interfaces and âexchangeâ objects might be put into a
dedicated services archive
(although we don't do during this training)
56. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
56
Common
Interfaces, Business Objects, Exceptions
Architectural blueprint
Boundary
Control
Entity
57. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
57
ECB as a general guideline
â Fits nicely into the reference
architecture as we can model
every activity within the activity
model as ECB component
â Still there are a lot of Design Patterns
which might be applied to improve the
design.
58. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
58
Boundary Control Entity
DAO &
Domain
Store
Generic
DAO
Singleton
Service
Starter
Dual View
SOA Facade
Lightweight
asynchronous
Facade
Multichannel
Facade
TO
&
DTO
Paginator
Bean
Locator
Multichannel
Facade
Resource
Binder
Payload
Extractor
Aynchronous
Resource
Integrator
Infrastructure
Patterns related to ECB Pattern
59. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
59
Lab
Implement ECB Pattern
(not more than 15 min.)
60. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
60
Review
Session Review:
â What is the ECB pattern good for?
61. Copyright by Brockhaus GmbH, alle Rechte reserviert, unautorisierte Vervielfältigung untersagt
61
Recommeded reading
â http://java.sun.com/blueprints/corej2eepatterns/
â http://www.corej2eepatterns.com/Patterns2ndEd/
â Adam Bien, J2EE Patterns,
Addison Wesley 2002,
ISBN: 3-8273-1903-X
â Floyd Marinescu, Ed Roman:
Ejb Design Patterns: Advanced Patterns,
Processes, and Idioms; Wiley & Sons,
ISBN-10: 0471208310
â And other ...
Photo: Bundesarchiv
Intercepting all methods of a certain EJB
&lt;assembly-descriptor&gt;
&lt;interceptor-binding&gt;
&lt;ejb-name&gt;UserManagementServiceBean&lt;/ejb-name&gt;
&lt;interceptor-class&gt;
de.brockhaus.userMgmt.backend.util.PerformanceInterceptor
&lt;/interceptor-class&gt;
&lt;!-- uncomment and only this method will be intercepted
&lt;method&gt;
&lt;method-name&gt;findUserByCredentials&lt;/method-name&gt;
&lt;method-params&gt;
&lt;method-param&gt;java.lang.String&lt;/method-param&gt;
&lt;method-param&gt;java.lang.String&lt;/method-param&gt;
&lt;/method-params&gt;
&lt;/method&gt;
--&gt;
&lt;/interceptor-binding&gt;
&lt;/assembly-descriptor&gt;
Intercepting all EJBs (Default Interceptor):
&lt;assembly-descriptor&gt;
&lt;interceptor-binding&gt;
&lt;ejb-name&gt;*&lt;/ejb-name&gt;
&lt;interceptor-class&gt;
de.brockhaus.userMgmt.backend.util.PerformanceInterceptor
&lt;/interceptor-class&gt;
&lt;/interceptor-binding&gt;
&lt;/assembly-descriptor&gt;
How do you exclude the DefaultInterceptor ?
If you have defined a default interceptor for all your EJB in a jar file, you can use the following annotation to exclude it and instead execute the Interceptor in the class: @ExcludeDefaultInterceptors
Order of Interception
The default interceptor is invoked at first. Then Bean level interceptors are invoked and, at last, method level interceptors. If you declare a list of interceptors in your xml/annotations the interceptors are invoked in the order in which they are declared in the annotation.
Generally, an entity EJB class represents a table in a database, and each instance of the entity EJB represents a single row in the table. It is possible to define an entity EJB that represents multiple rows from tables related by a join in the data model schema. In most cases this is not done.
Entity beans are more complex than session beans. There lifecycle management is a bit more involved, and the container has more work to do to ensure that the beanâs state is always synchronized with the data in the row in the table.
Generally, an entity EJB class represents a table in a database, and each instance of the entity EJB represents a single row in the table. It is possible to define an entity EJB that represents multiple rows from tables related by a join in the data model schema. In most cases this is not done.
The persistence units group a set of Entities together and bind them to a database. So the persistence units define where, how and with what kind of database this entities are interact.
The EntityManager in JEE applications are managed by the container and can be get with dependency injection. He is responsible for the life-cycle management of the beans.
The persistence.xml file is one of the only deployment descriptors which are mandatory in EJB 3.0. Most of the other DD&apos;s which was known in EJB 2.1 are know optional.
The persistence.xml file defines the databases which should be used with the entity beans. It defines the persistence units, which are in difference to the two other parts of JPA are not Java classes. Each entity must be assigned to one persistence unit, so that the container know where and how to map this entities to the database. The contents of the persistence.xml file are discussed on the next slides.
Persist, merge and remove operations may or may not happen immediately, the reason for this is to batch work and then execute it thus saving on the number of database calls which increases performance. By default the database flush mode is set to AUTO, this means that the EntityManager performs a flush operation when needed, this normally occurs at the end of a transaction or when the persistence context is closed for application managed or extended-scope EntityManagers.
You can set the EntityManager flush mode to COMMIT, thus the persistence provider will only synchronize with the database when the transaction commits, however it will be your responsibility to synchronize entity state with the database before executing a query, if you don&apos;t do this you could end up with an inconsistent application. You can also explicitly flush the EntityManager by using the flush method.
for more details see:
http://java.sun.com/javaee/5/docs/api/javax/persistence/EntityManager.html
for more details see:
http://java.sun.com/javaee/5/docs/api/javax/persistence/EntityManager.html
Regrading getReference: @see: http://stackoverflow.com/questions/1607532/when-to-use-entitymanager-find-vs-entitymanager-getreference
The EntityManagerHelper:
public class EntityManagerHelper
{
// create EntityManagerFactory using clazz Persistence
private static final EntityManagerFactory emf = Persistence.createEntityManagerFactory(&quot;user_pu&quot;);
// create EntityManager using the EntityManagerFactory
private static final EntityManager em = emf.createEntityManager();
public static EntityManager getEntityManager()
{
return em;
}
}
The EJB QL query specification language is used to specify data selection statements to support finder and select statements defined within an entity bean. Unlike SQL, it only supports the extraction of data. It cannot be used to perform insertions or updates of data. Insertions and updates are performed implicitly as the result of operations on the bean (data value changes) and its home (creation and removal). The container is responsible for generating the code necessary to support these types of operations.
JP-QL statements are specified in the deployment descriptor for each query method for the enterprise bean. At deployment time the deployment tool will read the JP-QL and generate the database specific commands necessary to perform the requested database operations. In the Deployment Descriptor each CMP Entity bean has an abstract schema name. This way the persistent view and the component view of the Entity is separated.
You can see that there is no tight coupling between the classes. Both can be changed independently without affecting each other. Of course, if there is any change in the public methods of Class Callee, Class Caller needs to change as well. But how Object &quot;c&quot; is created and managed is not decided in the implementation of Object &quot;a&quot;. Instead, the IoC framework uses the setB() method in Object &quot;a&quot; to inject Object &quot;c&quot;.