Jennifer Hickey of SpringSource's Case Study of the results from Hyperic's recent migration from EJB to Spring. From the 2010 SpringOne 2GX conference.
Microservice With Spring Boot and Spring CloudEberhard Wolff
Spring Boot and Spring Cloud are an ideal foundation for creating Microservices based on Java. This presentation explains basic concepts of these libraries.
Microservices with Java, Spring Boot and Spring CloudEberhard Wolff
Spring Boot makes creating small Java application easy - and also facilitates operations and deployment. But for Microservices need more: Because Microservices are a distributed systems issues like Service Discovery or Load Balancing must be solved. Spring Cloud adds those capabilities to Spring Boot using e.g. the Netflix stack. This talks covers Spring Boot and Spring Cloud and shows how these technologies can be used to create a complete Microservices environment.
Microservice With Spring Boot and Spring CloudEberhard Wolff
Spring Boot and Spring Cloud are an ideal foundation for creating Microservices based on Java. This presentation explains basic concepts of these libraries.
Microservices with Java, Spring Boot and Spring CloudEberhard Wolff
Spring Boot makes creating small Java application easy - and also facilitates operations and deployment. But for Microservices need more: Because Microservices are a distributed systems issues like Service Discovery or Load Balancing must be solved. Spring Cloud adds those capabilities to Spring Boot using e.g. the Netflix stack. This talks covers Spring Boot and Spring Cloud and shows how these technologies can be used to create a complete Microservices environment.
Kubernetes Concepts And Architecture Powerpoint Presentation SlidesSlideTeam
Get these visually appealing Kubernetes Concepts And Architecture PowerPoint Presentation Slides to discuss the process of operating containerized applications. You can display the need for containers by the company with the help of an open-source architecture PPT slideshow. The architecture of containers can be demonstrated with the help of a visually appealing PPT slideshow. The reasons for opting for Kubernetes by an organization can be explained to your teammates with the help of containers PowerPoint infographics. Highlight the roadmap for installing Kubernetes in the organization by using content-ready PPT slides. Take the assistance of visually appealing PPT templates to depict the major advantages of Kubernetes such as improving productivity, the stability of application run, and many more. After that, display 30 60 90 days plan to implement Kubernetes in the organization. Display the key components of Kubernetes with the help of a diagram using this professionally designed cluster architecture PPT layouts. Describe the functionality of each components of Kubernetes. Hence, download Kubernetes architecture PPT slides to easily and efficiently manage the clusters. https://bit.ly/34DWa7x
AWS January 2016 Webinar Series - Introduction to Docker on AWSAmazon Web Services
Using Docker on your local development machine is simple, but running Docker applications at scale in production can be difficult.
In this webinar, we will discuss the difficulties of running Docker in production and how Amazon EC2 Container Service (ECS) can be used to reduce the operational burdens, and we will give an overview of the architecture powering Amazon ECS. We will also demo how to define multi-container applications with Docker Compose and deploy and scale them seamlessly to a cluster with Amazon ECS.
Learning Objectives:
Understand the benefits and architecture of Amazon ECS
Learn how to deploy and scale Docker containers on Amazon ECS
Who Should Attend:
Developers
My cloud native security talk I gave at Innotech Austin 2018. I cover container and Kubernetes security topics, security features in Kubernetes, including opensource projects you will want to consider while building and maintaining cloud native applications.
Presentation explain about
Spring Boot vs Spring vs Spring MVC,
Advantages,
Where to start and how does Spring boot work ?,
Dependency Management,
Logging,
Exception Handling,
Database Handling.
in Spring boot.
Reactive Microservices with Spring 5: WebFlux Trayan Iliev
On November 27 Trayan Iliev from IPT presented “Reactive microservices with Spring 5: WebFlux” @Dev.bg in Betahaus Sofia. IPT – Intellectual Products & Technologies has been organizing Java & JavaScript trainings since 2003.
Spring 5 introduces a new model for end-to-end functional and reactive web service programming with Spring 5 WebFlow, Spring Data & Spring Boot. The main topics include:
– Introduction to reactive programming, Reactive Streams specification, and project Reactor (as WebFlux infrastructure)
– REST services with WebFlux – comparison between annotation-based and functional reactive programming approaches for building.
– Router, handler and filter functions
– Using reactive repositories and reactive database access with Spring Data. Building end-to-end non-blocking reactive web services using Netty-based web runtime
– Reactive WebClients and integration testing. Reactive WebSocket support
– Realtime event streaming to WebClients using JSON Streams, and to JS client using SSE.
Learn All Aspects Of Maven step by step, Enhance your skills & Launch Your Career, On-Demand Course affordable price & classes on virtually every topic.Try Before You Buy
Walking Through Spring Cloud Data FlowVMware Tanzu
SpringOne 2020
Walking Through Spring Cloud Data Flow
Glenn Renfro, Software Developer at VMware
Ilayaperumal Gopinathan, Staff Software Engineer at VMware
[Konveyor] migrate and modernize your application portfolio to kubernetes wit...Konveyor Community
Meetup recording: https://youtu.be/S8ISWz87rlk
Bringing legacy applications to Kubernetes can have a significant boost on software delivery performance – even without a complete rearchitecture and rewrite of your applications.
The bigger question is, “How can an organization succeed in the daunting task of moving their legacy application portfolio to Kubernetes?”
In this session, you’ll learn about Tackle, the Open Source toolkit designed to help organizations safely migrate and modernize their application portfolio to leverage Kubernetes.
We will be discussing the benefits of bringing applications to Kubernetes, a common approach for migrating and modernizing them, and how Tackle can streamline the adoption process. We will also have a live demo for the first release of the tool!
Presenter: Ramon Roman Nissen, Product Manager - Red Hat
The slides for my session about Dapr the Distributed Application Runtime in the Code.Digest("Microservices"); meetup.
https://www.meetup.com/Code-Digest/events/271747418/
Spring boot is a great and relatively a new project from Spring.io. The presentation discusses about basics of spring boot to advance topics. Sample demo apps are available here : https://github.com/bhagwat/spring-boot-samples
Maven is a project management and comprehension tool. Maven provides developers a complete build lifecycle framework. Development team can automate the project's build infrastructure in almost no time as Maven uses a standard directory layout and a default build lifecycle.
In case of multiple development teams environment, Maven can set-up the way to work as per standards in a very short time. As most of the project setups are simple and reusable, Maven makes life of developer easy while creating reports, checks, build and testing automation setups.
Learn all about microservices from Product Marketing Manager Dan Giordano. We'll cover how to get started, the benefits, potential challenges, and how SmartBear can help.
As part of this presentation we covered basics of Terraform which is Infrastructure as code. It will helps to Devops teams to start with Terraform.
This document will be helpful for the development who wants to understand infrastructure as code concepts and if they want to understand the usability of terrform
The world is moving from a model where data sits at rest, waiting for people to make requests of it, to where data is constantly moving and streams of data flow to and from devices with or without human interaction. Decisions need to be made based on these streams of data in real-time, models need to be updated, and intelligence needs to be gathered. In this context, our old-fashioned approach of CRUD REST APIs serving CRUD database calls just doesn't cut it. It's time we moved to a stream-centric view of the world.
https://jonthebeach.com/speakers/71/Markus+Eisele
Kubernetes Concepts And Architecture Powerpoint Presentation SlidesSlideTeam
Get these visually appealing Kubernetes Concepts And Architecture PowerPoint Presentation Slides to discuss the process of operating containerized applications. You can display the need for containers by the company with the help of an open-source architecture PPT slideshow. The architecture of containers can be demonstrated with the help of a visually appealing PPT slideshow. The reasons for opting for Kubernetes by an organization can be explained to your teammates with the help of containers PowerPoint infographics. Highlight the roadmap for installing Kubernetes in the organization by using content-ready PPT slides. Take the assistance of visually appealing PPT templates to depict the major advantages of Kubernetes such as improving productivity, the stability of application run, and many more. After that, display 30 60 90 days plan to implement Kubernetes in the organization. Display the key components of Kubernetes with the help of a diagram using this professionally designed cluster architecture PPT layouts. Describe the functionality of each components of Kubernetes. Hence, download Kubernetes architecture PPT slides to easily and efficiently manage the clusters. https://bit.ly/34DWa7x
AWS January 2016 Webinar Series - Introduction to Docker on AWSAmazon Web Services
Using Docker on your local development machine is simple, but running Docker applications at scale in production can be difficult.
In this webinar, we will discuss the difficulties of running Docker in production and how Amazon EC2 Container Service (ECS) can be used to reduce the operational burdens, and we will give an overview of the architecture powering Amazon ECS. We will also demo how to define multi-container applications with Docker Compose and deploy and scale them seamlessly to a cluster with Amazon ECS.
Learning Objectives:
Understand the benefits and architecture of Amazon ECS
Learn how to deploy and scale Docker containers on Amazon ECS
Who Should Attend:
Developers
My cloud native security talk I gave at Innotech Austin 2018. I cover container and Kubernetes security topics, security features in Kubernetes, including opensource projects you will want to consider while building and maintaining cloud native applications.
Presentation explain about
Spring Boot vs Spring vs Spring MVC,
Advantages,
Where to start and how does Spring boot work ?,
Dependency Management,
Logging,
Exception Handling,
Database Handling.
in Spring boot.
Reactive Microservices with Spring 5: WebFlux Trayan Iliev
On November 27 Trayan Iliev from IPT presented “Reactive microservices with Spring 5: WebFlux” @Dev.bg in Betahaus Sofia. IPT – Intellectual Products & Technologies has been organizing Java & JavaScript trainings since 2003.
Spring 5 introduces a new model for end-to-end functional and reactive web service programming with Spring 5 WebFlow, Spring Data & Spring Boot. The main topics include:
– Introduction to reactive programming, Reactive Streams specification, and project Reactor (as WebFlux infrastructure)
– REST services with WebFlux – comparison between annotation-based and functional reactive programming approaches for building.
– Router, handler and filter functions
– Using reactive repositories and reactive database access with Spring Data. Building end-to-end non-blocking reactive web services using Netty-based web runtime
– Reactive WebClients and integration testing. Reactive WebSocket support
– Realtime event streaming to WebClients using JSON Streams, and to JS client using SSE.
Learn All Aspects Of Maven step by step, Enhance your skills & Launch Your Career, On-Demand Course affordable price & classes on virtually every topic.Try Before You Buy
Walking Through Spring Cloud Data FlowVMware Tanzu
SpringOne 2020
Walking Through Spring Cloud Data Flow
Glenn Renfro, Software Developer at VMware
Ilayaperumal Gopinathan, Staff Software Engineer at VMware
[Konveyor] migrate and modernize your application portfolio to kubernetes wit...Konveyor Community
Meetup recording: https://youtu.be/S8ISWz87rlk
Bringing legacy applications to Kubernetes can have a significant boost on software delivery performance – even without a complete rearchitecture and rewrite of your applications.
The bigger question is, “How can an organization succeed in the daunting task of moving their legacy application portfolio to Kubernetes?”
In this session, you’ll learn about Tackle, the Open Source toolkit designed to help organizations safely migrate and modernize their application portfolio to leverage Kubernetes.
We will be discussing the benefits of bringing applications to Kubernetes, a common approach for migrating and modernizing them, and how Tackle can streamline the adoption process. We will also have a live demo for the first release of the tool!
Presenter: Ramon Roman Nissen, Product Manager - Red Hat
The slides for my session about Dapr the Distributed Application Runtime in the Code.Digest("Microservices"); meetup.
https://www.meetup.com/Code-Digest/events/271747418/
Spring boot is a great and relatively a new project from Spring.io. The presentation discusses about basics of spring boot to advance topics. Sample demo apps are available here : https://github.com/bhagwat/spring-boot-samples
Maven is a project management and comprehension tool. Maven provides developers a complete build lifecycle framework. Development team can automate the project's build infrastructure in almost no time as Maven uses a standard directory layout and a default build lifecycle.
In case of multiple development teams environment, Maven can set-up the way to work as per standards in a very short time. As most of the project setups are simple and reusable, Maven makes life of developer easy while creating reports, checks, build and testing automation setups.
Learn all about microservices from Product Marketing Manager Dan Giordano. We'll cover how to get started, the benefits, potential challenges, and how SmartBear can help.
As part of this presentation we covered basics of Terraform which is Infrastructure as code. It will helps to Devops teams to start with Terraform.
This document will be helpful for the development who wants to understand infrastructure as code concepts and if they want to understand the usability of terrform
The world is moving from a model where data sits at rest, waiting for people to make requests of it, to where data is constantly moving and streams of data flow to and from devices with or without human interaction. Decisions need to be made based on these streams of data in real-time, models need to be updated, and intelligence needs to be gathered. In this context, our old-fashioned approach of CRUD REST APIs serving CRUD database calls just doesn't cut it. It's time we moved to a stream-centric view of the world.
https://jonthebeach.com/speakers/71/Markus+Eisele
The world is moving from a model where data sits at rest, waiting for people to make requests of it, to where data is constantly moving, streams of data flow to and from devices with or without human interaction. Decisions need to be made based on these streams of data in real time, models need to be updated, intelligence needs to be learned. And our old-fashioned approach of CRUD REST APIs serving CRUD database calls just doesn't cut it, it's trying to fit a square peg into a round hole. It's time we moved to a stream-centric view of the world.
This talk will look at how Reactive Streams is shaping the future of Jakarta EE. I'll talk about some Reactive Streams based specifications that we're currently working on in the JDK, MicroProfile and Jakarta EE communities, as well as some potential big ideas to transform the way developers write their applications, such as event sourcing and CQRS, that Jakarta EE will likely adopt in future. We'll take a look at a hypothetical future Jakarta EE, at what a typical service will look like when streaming is embraced, and get a glimpse of how Jakarta EE can lead the world in standards for Reactive systems.
The world is moving from a model where data sits at rest, waiting for people to make requests of it, to where data is constantly moving and streams of data flow to and from devices with or without human interaction. Decisions need to be made based on these streams of data in real-time, models need to be updated, and intelligence needs to be gathered. In this context, our old-fashioned approach of CRUD REST APIs serving CRUD database calls just doesn't cut it. It's time we moved to a stream-centric view of the world.
Why test automation is getting more difficult, and what can be done about it. This slides are from a presentation by Group Director, Product Management at TestPlant, Gordon McKeown, which was presented at the Northern Lights conference in Manchester in April 2016.
Navigating SAP’s Integration Options (Mastering SAP Technologies 2013)Sascha Wenninger
Provides an overview of popular integration approaches, maps them to SAP's integration tools and concludes with some lessons learnt in their application.
Node.js BFFs: our way to better/micro frontendsEugene Fidelin
About 2 years ago Marktplaats.nl started to build a new platform. We migrated from huge Java-based frontends towards smaller Node.js BFFs (backend-for-frontends). We are close to the next step and adapt a micro-frontends approach.
Here I would like to share the outcomes of this quest: what architecture solutions are made, how does Marktplaats.nl run and scale so many BFFs in production, how we grew as a team, educated frontend-developers to write backend code and what were our biggest challenges.
The Good, the Bad and the Ugly of Migrating Hundreds of Legacy Applications ...Josef Adersberger
Running applications on Kubernetes can provide a lot of benefits: more dev speed, lower ops costs, and a higher elasticity & resiliency in production. Kubernetes is the place to be for cloud native apps. But what to do if you’ve no shiny new cloud native apps but a whole bunch of JEE legacy systems? No chance to leverage the advantages of Kubernetes? Yes you can!
We’re facing the challenge of migrating hundreds of JEE legacy applications of a major German insurance company onto a Kubernetes cluster within one year. We're now close to the finish line and it worked pretty well so far.
The talk will be about the lessons we've learned - the best practices and pitfalls we've discovered along our way. We'll provide our answers to life, the universe and a cloud native journey like:
- What technical constraints of Kubernetes can be obstacles for applications and how to tackle these?
- How to architect a landscape of hundreds of containerized applications with their surrounding infrastructure like DBs MQs and IAM and heavy requirements on security?
- How to industrialize and govern the migration process?
- How to leverage the possibilities of a cloud native platform like Kubernetes without challenging the tight timeline?
Migrating Hundreds of Legacy Applications to Kubernetes - The Good, the Bad, ...QAware GmbH
CloudNativeCon North America 2017, Austin (Texas, USA): Talk by Josef Adersberger (@adersberger, CTO at QAware)
Abstract:
Running applications on Kubernetes can provide a lot of benefits: more dev speed, lower ops costs, and a higher elasticity & resiliency in production. Kubernetes is the place to be for cloud native apps. But what to do if you’ve no shiny new cloud native apps but a whole bunch of JEE legacy systems? No chance to leverage the advantages of Kubernetes? Yes you can!
We’re facing the challenge of migrating hundreds of JEE legacy applications of a major German insurance company onto a Kubernetes cluster within one year. We're now close to the finish line and it worked pretty well so far.
The talk will be about the lessons we've learned - the best practices and pitfalls we've discovered along our way. We'll provide our answers to life, the universe and a cloud native journey like:
- What technical constraints of Kubernetes can be obstacles for applications and how to tackle these?
- How to architect a landscape of hundreds of containerized applications with their surrounding infrastructure like DBs MQs and IAM and heavy requirements on security?
- How to industrialize and govern the migration process?
- How to leverage the possibilities of a cloud native platform like Kubernetes without challenging the tight timeline?
A tale of scale & speed: How the US Navy is enabling software delivery from l...sonjaschweigert1
Rapid and secure feature delivery is a goal across every application team and every branch of the DoD. The Navy’s DevSecOps platform, Party Barge, has achieved:
- Reduction in onboarding time from 5 weeks to 1 day
- Improved developer experience and productivity through actionable findings and reduction of false positives
- Maintenance of superior security standards and inherent policy enforcement with Authorization to Operate (ATO)
Development teams can ship efficiently and ensure applications are cyber ready for Navy Authorizing Officials (AOs). In this webinar, Sigma Defense and Anchore will give attendees a look behind the scenes and demo secure pipeline automation and security artifacts that speed up application ATO and time to production.
We will cover:
- How to remove silos in DevSecOps
- How to build efficient development pipeline roles and component templates
- How to deliver security artifacts that matter for ATO’s (SBOMs, vulnerability reports, and policy evidence)
- How to streamline operations with automated policy checks on container images
Generative AI Deep Dive: Advancing from Proof of Concept to ProductionAggregage
Join Maher Hanafi, VP of Engineering at Betterworks, in this new session where he'll share a practical framework to transform Gen AI prototypes into impactful products! He'll delve into the complexities of data collection and management, model selection and optimization, and ensuring security, scalability, and responsible use.
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
GraphSummit Singapore | The Future of Agility: Supercharging Digital Transfor...Neo4j
Leonard Jayamohan, Partner & Generative AI Lead, Deloitte
This keynote will reveal how Deloitte leverages Neo4j’s graph power for groundbreaking digital twin solutions, achieving a staggering 100x performance boost. Discover the essential role knowledge graphs play in successful generative AI implementations. Plus, get an exclusive look at an innovative Neo4j + Generative AI solution Deloitte is developing in-house.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024Neo4j
Neha Bajwa, Vice President of Product Marketing, 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.
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
Enchancing adoption of Open Source Libraries. A case study on Albumentations.AIVladimir Iglovikov, Ph.D.
Presented by Vladimir Iglovikov:
- https://www.linkedin.com/in/iglovikov/
- https://x.com/viglovikov
- https://www.instagram.com/ternaus/
This presentation delves into the journey of Albumentations.ai, a highly successful open-source library for data augmentation.
Created out of a necessity for superior performance in Kaggle competitions, Albumentations has grown to become a widely used tool among data scientists and machine learning practitioners.
This case study covers various aspects, including:
People: The contributors and community that have supported Albumentations.
Metrics: The success indicators such as downloads, daily active users, GitHub stars, and financial contributions.
Challenges: The hurdles in monetizing open-source projects and measuring user engagement.
Development Practices: Best practices for creating, maintaining, and scaling open-source libraries, including code hygiene, CI/CD, and fast iteration.
Community Building: Strategies for making adoption easy, iterating quickly, and fostering a vibrant, engaged community.
Marketing: Both online and offline marketing tactics, focusing on real, impactful interactions and collaborations.
Mental Health: Maintaining balance and not feeling pressured by user demands.
Key insights include the importance of automation, making the adoption process seamless, and leveraging offline interactions for marketing. The presentation also emphasizes the need for continuous small improvements and building a friendly, inclusive community that contributes to the project's growth.
Vladimir Iglovikov brings his extensive experience as a Kaggle Grandmaster, ex-Staff ML Engineer at Lyft, sharing valuable lessons and practical advice for anyone looking to enhance the adoption of their open-source projects.
Explore more about Albumentations and join the community at:
GitHub: https://github.com/albumentations-team/albumentations
Website: https://albumentations.ai/
LinkedIn: https://www.linkedin.com/company/100504475
Twitter: https://x.com/albumentations
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfMalak Abu Hammad
Discover how MongoDB Atlas and vector search technology can revolutionize your application's search capabilities. This comprehensive presentation covers:
* What is Vector Search?
* Importance and benefits of vector search
* Practical use cases across various industries
* Step-by-step implementation guide
* Live demos with code snippets
* Enhancing LLM capabilities with vector search
* Best practices and optimization strategies
Perfect for developers, AI enthusiasts, and tech leaders. Learn how to leverage MongoDB Atlas to deliver highly relevant, context-aware search results, transforming your data retrieval process. Stay ahead in tech innovation and maximize the potential of your applications.
#MongoDB #VectorSearch #AI #SemanticSearch #TechInnovation #DataScience #LLM #MachineLearning #SearchTechnology
Communications Mining Series - Zero to Hero - Session 1DianaGray10
This session provides introduction to UiPath Communication Mining, importance and platform overview. You will acquire a good understand of the phases in Communication Mining as we go over the platform with you. Topics covered:
• Communication Mining Overview
• Why is it important?
• How can it help today’s business and the benefits
• Phases in Communication Mining
• Demo on Platform overview
• Q/A
GridMate - End to end testing is a critical piece to ensure quality and avoid...ThomasParaiso2
End to end testing is a critical piece to ensure quality and avoid regressions. In this session, we share our journey building an E2E testing pipeline for GridMate components (LWC and Aura) using Cypress, JSForce, FakerJS…
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!SOFTTECHHUB
As the digital landscape continually evolves, operating systems play a critical role in shaping user experiences and productivity. The launch of Nitrux Linux 3.5.0 marks a significant milestone, offering a robust alternative to traditional systems such as Windows 11. This article delves into the essence of Nitrux Linux 3.5.0, exploring its unique features, advantages, and how it stands as a compelling choice for both casual users and tech enthusiasts.
In the rapidly evolving landscape of technologies, XML continues to play a vital role in structuring, storing, and transporting data across diverse systems. The recent advancements in artificial intelligence (AI) present new methodologies for enhancing XML development workflows, introducing efficiency, automation, and intelligent capabilities. This presentation will outline the scope and perspective of utilizing AI in XML development. The potential benefits and the possible pitfalls will be highlighted, providing a balanced view of the subject.
We will explore the capabilities of AI in understanding XML markup languages and autonomously creating structured XML content. Additionally, we will examine the capacity of AI to enrich plain text with appropriate XML markup. Practical examples and methodological guidelines will be provided to elucidate how AI can be effectively prompted to interpret and generate accurate XML markup.
Further emphasis will be placed on the role of AI in developing XSLT, or schemas such as XSD and Schematron. We will address the techniques and strategies adopted to create prompts for generating code, explaining code, or refactoring the code, and the results achieved.
The discussion will extend to how AI can be used to transform XML content. In particular, the focus will be on the use of AI XPath extension functions in XSLT, Schematron, Schematron Quick Fixes, or for XML content refactoring.
The presentation aims to deliver a comprehensive overview of AI usage in XML development, providing attendees with the necessary knowledge to make informed decisions. Whether you’re at the early stages of adopting AI or considering integrating it in advanced XML development, this presentation will cover all levels of expertise.
By highlighting the potential advantages and challenges of integrating AI with XML development tools and languages, the presentation seeks to inspire thoughtful conversation around the future of XML development. We’ll not only delve into the technical aspects of AI-powered XML development but also discuss practical implications and possible future directions.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
Case Study: Migrating Hyperic from EJB to Spring from JBoss to Apache Tomcat
1. Chicago, October 19 - 22, 2010
SpringOne 2GX 2010. All rights reserved. Do not distribute without permission.
Case Study: Migrating
Hyperic from EJB to
Spring! !
Jennifer Hickey
SpringSource
2. SpringSource Hyperic
Application and Infrastructure Management
• Discover
– Automatically find all resources
• Monitor
– Availability, performance, capacity,
history
• Track
– Logs, configuration, change management
• Alert
– Advanced condition definition, notification
& escalation schemes
• Control
– Proactive, automated actions
• Analyze
– Answer questions, plan for the future
3. Basic HQ Architecture
machine 1
HQ
Agent
machine n
HQ
Agent
HQ
Server HQ
Web
Portal
Inventory,
Metric,
Audit, …
items
to
manage
items
to
manage
HQ
API
6. 0% 10% 20% 30% 40% 50% 60% 70%
Java Application Server Usage, Source: 2008 Evans Data Survey
Spring Applications
WebLogic 26%
JBoss 38%
WebSphere 43%
Apache Tomcat 68%
Today’s De Facto Standards
Spring and Tomcat
• Spring: Enterprise Java programming model
– Centralized configuration, declarative transactions, security,
messaging, remoting, Web MVC, Web Flow, persistence
integration, enterprise integration, batch, …
• Tomcat: Lean and powerful Web application server
7. How Does Lean Help?
• Installation and Provisioning
– 100X Smaller Install Footprint: Less than 50MB vs. multi-Gigabytes
• Hardware, software, lost productivity across Dev, QA, Staging, Production
• Simpler Configuration Improves Debugging and Quality
– Impact of complexity across Dev, QA, Staging, Production adds up
– “60% cite faster project completion and application quality as top reasons for
using Spring”
• Upgrade and Migration
– Lower complexity = faster migration / upgrade
• Developer Productivity
– Fast Server Startup/Shutdown
• One Developer coding/debugging an app (5 mins x 12 per day = 1 hr)
• Fluidity of Personnel
– Simpler systems = faster rampup
• License and Maintenance Costs
– tc Server is 33% to 75% savings vs. competitor annual maintenance;
additional savings when license costs are factored in
9. Planning a Migration
• Build an accurate picture of the candidate app
– Java EE APIs used
– 3rd party libraries
– Packaging
– Types and number of components
– Assess code quality (coupling, etc.)
• Analyze migration complexity
• Decide partial vs full migration
• Resource Estimation
9
10. Factors in Migration Complexity
Factor Effect on Complexity
Good documentation and clear
understanding of existing code,
database or requirements
Low complexity
Poor documentation and/or lack
of clear understanding of
existing code, database or
requirements
Low to medium complexity
Well architected, layered
application
Low complexity
Organically grown, non-layered
code and architecture, combined
with need to refactor
Low to medium complexity
11. Factors in Migration Complexity
Factor Effect on Complexity
Organization already familiar
with and using Tomcat/tc Server
and/or lightweight technologies
such as Spring Framework.
Low complexity
Strong organizational support of
legacy EJB and full stack Java
EE technologies; Tomcat/tc
Server and/or lightweight
technologies such as Spring
Framework not yet adopted
Medium complexity
No integration with proprietary
application server frameworks
or APIs
Low complexity
12. Factors in Migration Complexity
Factor Effect on Complexity
Integration with proprietary
application server
frameworks or APIs
Low to high complexity depending
on extent of usage
No reliance on Session
EJBs, or reliance on a
straightforward use of
Session EJBs (e.g. smaller
quantity or delegating to
plain Java business objects)
server frameworks or APIs
Low to high complexity depending
on extent of usage
Heavy use of Session EJBs Medium complexity
13. Factors in Migration Complexity
Factor Effect on Complexity
Reliance on stateful middle tier
clustering (EJB Stateful Session
Beans)
Medium complexity
True need for distributed
transactions
Medium to high complexity
Straightforward DAO-based
database access (using either JDBC
or ORM)
Low complexity
Reliance on Entity Beans Medium to high complexity
depending on amount of
code
14. Factors in Migration Complexity
Factor Effect on Complexity
Servlet-spec Security usage Low complexity
Declarative EJB (Container
Managed) Security usage
Medium complexity
With Spring Security: Low-
Medium
Using existing full stack
application server's built-in JMS
provider
Low to medium complexity
depending on ability to use
external commercial or open
source JMS container.
Generally only licensing (no
code changes) concern.
15. Project Evolution Complexity Analysis
• 80 Stateless Session Beans
• 0 Stateful Session Beans
• 3 MDBs
• 0 Entity Beans
• All Container-Managed Transactions, No XA
• JBoss Dependencies:
– JAAS
– Mail Service
– Deployment Scanner
– Schedulers
– HA
• SpringSource Migration Tool helps with analysis
15
16. Partial vs Full Migration
• Project worked in parallel with other releases
• Largest percentage of test coverage in system tests (vs
standalone unit and integration tests) necessitated a
partially migrated app
16
17. Extras
• Switch from svn to git
• Modularize monolithic codebase
• Add Java 5 constructs
• Add code conventions
• Switch from ant to maven
• Introduce Eclipse Groovy plugin
17
18. Resources
• Estimated 8 weeks for one person to do initial conversion
from EAR to WAR on Tomcat
• From beginning to functional complete (M5), project was
staffed with 1.5 full-time people.
• Initial conversion was done by 1.5 people in 12 weeks
18
20. M1 Goal
A JBoss-dependent EAR with no more Stateless Session
EJBs (all converted to POJOs and bootstrapped/
transaction-managed by Spring)
20
21. Preliminary Steps
• Changed ant to compile at Java 5 compliance
• Removed Xdoclet deployment descriptor and interface
generation from build
• Added “Local” interfaces to source control
• Added deployment descriptors to source control
• Added “Util” lookup classes to source control
• Introduced Eclipse projects for compiling UI plugin groovy
code
21
22. Dependency Injection
22
• Added temporary Bootstrap class for creation of Spring
ClasspathXmlApplicationContext
• Enabled component scanning and autowiring to
instantiate classes marked as @Service, @Repository,
and @Component
• Added @Repository to all DAOs and @Autowired to their
constructors for injection of Hibernate SessionFactory
• Added all EJBs to an app context file with factory-
method=”getOne”
25. Converted EJB Lookup
public class AgentManagerEJBImpl implements SessionBean {
public static AgentManagerLocal getOne() {
try {
return AgentManagerUtil.getLocalHome().create();
} catch (Exception e) {
throw new SystemException(e);
}
}
}
26. Application Context Instantiation
public class Bootstrap {
private static final String[] APP_CONTEXT_FILES = new String[]
{ "classpath*:/META-INF/spring/dao-context.xml" };
private static final String[] EJB_APP_CONTEXT_FILES = new String[]
{ "classpath*:/META-INF/spring/ejb-*context.xml" };
private static ApplicationContext APP_CONTEXT;
public synchronized static ApplicationContext getContext() throws
Exception {
boolean initialize = false;
if (APP_CONTEXT == null) {
initialize = true;
APP_CONTEXT = new ClassPathXmlApplicationContext
(APP_CONTEXT_FILES, false);
}
if (initialize) {
((ConfigurableApplicationContext) APP_CONTEXT).refresh();
}
return APP_CONTEXT;
}
27. Application Context Instantiation (2)
public static synchronized void loadEJBApplicationContext() throws
Exception {
APP_CONTEXT = new ClassPathXmlApplicationContext
(EJB_APP_CONTEXT_FILES, APP_CONTEXT);
}
public static <T> T getBean(Class<T> beanClass) throws Exception {
Collection<T> beans = getContext().getBeansOfType(beanClass).values();
... lookup from parent context if not found
return beans.iterator().next();
}
public static Object getBean(String name) throws Exception {
Object bean = getContext().getBean(name);
... lookup from parent context if not found
return bean;
}
28. Data Access and Transactions with Spring
and EJB
• Added Commons DBCP BasicDataSource
• Added TransactionAwareDataSourceProxy to allow legacy
code making direct use of DataSource to participate in
Spring-managed transactions
• Added a Spring JTATransactionManager and
@Transactional scanning to support transactions for
converted EJBs
28
29. Hibernate with Spring and EJB
• Moved creation of Hibernate SessionFactory to Spring's
LocalSessionFactoryBean
• Integrated Hibernate Session management with Spring
transaction management
• The following 4 ways of obtaining a Hibernate session will
all go through the same Spring-managed
SessionFactoryUtils to ensure that each thread will share
a single Hibernate session, regardless of which point was
entered first
1. Hibernate Session is opened during a web request
2. Hibernate Session is opened at beginning of a CMT through the
JBossInterceptor
3. Hibernate Session is opened at beginning of Spring-managed transaction
(currently those converted EJBs marked @Transactional)
4. Hibernate Session is opened by call to HQ SessionManager.runInSession
29
30. Hibernate with Spring and EJB(2)
hibernate.properties
hibernate.current_session_context_class=org.springframework.orm.hibernat
e3.SpringSessionContext
hibernate.transaction.factory_class=org.hibernate.transaction.JTATransaction
Factory
jta.UserTransaction=UserTransaction
• Hibernate Session is opened during a web request
- Spring OpenSessionInViewFilter
• Hibernate Session is opened at beginning of a CMT through
the JBossInterceptor
- Existing interceptor modified to obtain/start Hibernate sessions through
SessionFactory.currentSession()
• Hibernate Session is opened at beginning of Spring-
managed transaction (currently those converted EJBs
marked @Transactional)
- SpringSessionContext
31. Hibernate with Spring and EJB(3)
Session opened by call to HQ SessionManager
private void runInSessionInternal(final SessionRunner r) throws Exception {
boolean participate = false;
try {
! if (TransactionSynchronizationManager.hasResource(getSessionFactory())) {
! // Do not modify the Session: just set the participate flag.
! participate = true;
! } else {
! Session session = SessionFactoryUtils.getSession(getSessionFactory(), true);
! session.setFlushMode(FlushMode.MANUAL);
! TransactionSynchronizationManager.bindResource(getSessionFactory(), new
SessionHolder(session));
! }
! HibernateTemplate template = getHibernateTemplate();
! template.execute(new HibernateCallback() {...});
! } finally {
! if (!participate) {
! // single session mode
! SessionHolder sessionHolder = (SessionHolder)
TransactionSynchronizationManager.unbindResource(getSessionFactory());
! SessionFactoryUtils.closeSession(sessionHolder.getSession());
! }
32. EJB Conversion Checklist
Convert Local Interface
Remove "extends javax.ejb.EJBLocalObject" from the
Local interface
- i.e. AgentManagerLocal
1. Rename the Local interface implemented by the EJB by
removing "Local" from the name
- i.e. AgentManagerLocal becomes AgentManager
2. Replace fully-qualified type names with import-based type
names
- especially in the Local interface
3. Delete Util and LocalHome classes
- i.e. AgentManagerUtil and AgentManagerLocalHome
32
33. EJB Conversion Checklist
Convert Implementation
Rename the EJB (using Eclipse Refactor->Rename to
update dependencies) by removing "EJB" from the name
- i.e. AgentManagerEJBImpl becomes AgentManagerImpl
1. Remove "implements SessionBean" from EJB class
declaration and make class implement its corresponding
Local interface
2. Move initialization logic from ejbCreate() to an init method
annotated with @PostConstruct
33
@PostConstruct
public void initPager() throws Exception {
valuePager = Pager.getPager(VALUE_PROCESSOR);
}
34. EJB Conversion Checklist
Convert Implementation (2)
4. Remove all ejb* methods (i.e. ejbCreate) and
setSessionContext method
5. Convert getOne() method to the following:
34
public static AgentManager getOne() {
return Bootstrap.getBean(AgentManager.class);
}
6. Mark the converted EJB with @Service
7. Remove the converted EJBʼs entry from ejb-context.xml
35. EJB Conversion Checklist
Convert Implementation (3)
8. Remove all mention of the EJB from deployment
descriptors in the HQ/dd or HQ-EE/dd directories
9. If the class is marked with * @ejb:transaction
type="REQUIRED" (prior XDoclet markup for generating
CMT), mark the class @Transactional.
- If any methods are marked with a different ejb:transaction
type, (for example, ejb:transaction
type="REQUIRES_NEW), ignore them and document
10.Remove all the XDoclet markup from javadoc
35
36. EJB Conversion Checklist
Dependency Injection
1. Remove any EJB dependencies and helper classes
obtained through static lookup
Example:
36
public class SomeConvertedEJB {
private void doSomething() {
EscalationManagerLocal escMan =
EscalationManagerEJBImpl.getOne();
escMan.escalate();
}
Becomes:
public class SomeConvertedEJB {
private EscalationManagerLocal escalationManager;
private void doSomething() {
escalationManager.escalate();
}
37. EJB Conversion Checklist
Dependency Injection(2)
2. Inject DAOs, EJBs and converted EJBs, and helper
classes by auto-wiring the constructor
37
@Service
@Transactional
public class AgentManagerImpl {
private ResourceEdgeDAO resourceEdgeDAO;
private ServerManagerLocal serverManager;
@Autowired
public AgentManagerImpl(ResourceEdgeDAO
resourceEdgeDAO, ServerManagerLocal serverManager) {
this.resourceEdgeDAO = resourceEdgeDAO;
this.serverManager = serverManager;
}
38. Struts 1.x and Spring
Added Spring ContextLoader plugin to enable Spring
to manage Struts actions as Beans
struts-config.xml
38
<action path="/escalation/ListActiveEscalations"
scope="request"
type="org.springframework.web.struts.DelegatingActionProxy"/>
<plug-in
className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
! ! value="/WEB-INF/spring/action-servlet.xml" />
</plug-in>
<bean name="/escalation/ListActiveEscalations"
class="org.hyperic.hq.ui.json.action.escalation.finder.ListActiveEscala
tions" />
action-servlet.xml
40. M2 Goal
Convert the JBoss-dependent HQ EAR into a single
JBoss-dependent WAR
40
41. Message-Driven EJB Conversion
• Only 3 MDBs listening to a single JMS topic
• Applied conversion checklist to MDBs
• Subscribed newly converted POJOs to JMS topic using
Spring JMS
jms-context.xml
41
<bean id="registeredDispatcher"
class="org.hyperic.hq.bizapp.server.mdb.RegisteredDispatcherImpl"/>
<jms:listener-container destination-type="topic" concurrency="1"
acknowledge="dups-ok" >
<jms:listener destination="topic/eventsTopic"
ref="registeredDispatcher"/>
</jms:listener-container>
42. JMS Message Broker Conversion
42
• Introduced embedded ActiveMQ broker to replace
JBossMQ
- Easy to configure with Spring
- Often 10x faster than JBossMQ
• Conversion not technically necessary in this project phase,
but took very little time to implement
44. JMS Producer Conversion
Modified single Producer to use Spring JMSTemplate for
message publishing
jms-context.xml
44
<bean id="eventsJmsTemplate"
class="org.springframework.jms.core.JmsTemplate">
! ! <property name="connectionFactory" ref="connectionFactory" />
! ! <property name="defaultDestinationName" value="topic/
eventsTopic" />
! <property name="pubSubDomain" value="true" />
</bean>
45. JMS Producer: Before
45
public void publishMessage(String name, Serializable sObj) {
TopicConnection conn = null;
TopicSession session = null;
if (_ic == null)
_ic = new InitialContext();
if (_factory == null)
_factory = _ic.lookup(CONN_FACTORY_JNDI);
TopicConnectionFactory tFactory = (TopicConnectionFactory) _factory;
Topic topic = getTopic(name);
if (topic != null) {
// Now create a connection to send a message
if (_tConn != null)
conn = _tConn;
else
conn = tFactory.createTopicConnection();
if (conn == null)
_log.error("TopicConnection cannot be created");
if (_tSession != null)
session = _tSession;
else
session = conn.createTopicSession(false,
Session.AUTO_ACKNOWLEDGE);
// Create a publisher and publish the message
TopicPublisher publisher = session.createPublisher(topic);
ObjectMessage msg = session.createObjectMessage();
msg.setObject(sObj);
publisher.publish(msg);
46. JMS Producer: After
46
public void publishMessage(String name, Serializable sObj) {
eventsJmsTemplate.convertAndSend(name, sObj);
}
47. MBean Conversion
47
• EAR contained several JBoss SARs (Service Archive files)
registering MBeans with product functionality
• Most MBeans not actually used for runtime management
and monitoring
• JBoss Scheduler MBeans
- A few classes registered as MBeans just to integrate with
JBoss Schedulers
- Registered JBoss schedulers programmatically
• JBoss Mail Service MBean
- Registered JBoss mail service programmatically
• JBoss Deployment Scanner
- Used for hot deploy of product plugins. Temporarily disabled
48. JMX with Spring
48
<beans>
<context:mbean-export />
! <context:mbean-server />
Switched to Spring JMX for exposure of actual management
and monitoring interfaces
@ManagedResource("hyperic:type=Service,name=ProductPluginDeployer")
@Service
public class ProductPluginDeployer {
@ManagedMetric
public int getProductPluginCount() {...}
@ManagedAttribute
public ArrayList<String> getRegisteredPlugins(String type) {...}
@ManagedOperation
public void setProperty(String name, String value) {...}
49. Web Conversion
49
• Added Spring WebApplicationContext
• Kept Bootstrap class for static access to Web App Context
web.xml
<context-param>
! <param-name>contextConfigLocation</param-name>
! <param-value>
! ! classpath*:/META-INF/spring/*-context.xml
! </param-value>
</context-param>
!
<listener>
! <listener-
class>org.hyperic.hq.context.BootstrapContextLoaderListener</listener-
class>
</listener>
• Auto-wired Struts actions with Service dependencies
52. M3 Goal
Run the basic HQ and HQ EE wars on Tomcat, breaking
all EJB and JBoss dependencies
-Deferring some advanced functionality to a future milestone:
-Unidirectional agent (JBoss Remoting)
-HA
-Kerberos and LDAP authentication
-Plugin hot deploy
52
54. Scheduling Conversion
Replaced use of JBoss Scheduler MBeans with Spring
3.0 Scheduler/TaskExecutor abstraction
54
<task:scheduler id="scheduler" pool-size="10"/>
@Service("availabilityCheckService")
public class AvailabilityCheckServiceImpl implements
AvailabilityCheckService {
@Scheduled(fixedRate=120000)
public void backfill() {
...
}
}
55. The Last of EJB and JBoss....
• Merged JBoss logging config from custom jboss-log4j.xml
to single log4j.xml
• Removed EJB and Remote Exceptions from all method
throws clauses
• Replaced references to JBoss server home directory and
JBoss temp dir for File I/O
55
56. Final Steps
Deployed the WAR on Tomcat as the ROOT webapp
• When we ported the WAR from JBoss to Tomcat, we only
had to fix 2 small issues before it functioned properly:
- jsp-api.jar was causing conflicts and had to be removed
from WAR
- A few resources (such as images) were being loaded using
getResourceAsStream() from the WebAppClassLoader
(getClass().getClassLoader()). In JBoss, the ClassLoader
could load relative to top-level WAR dir. On Tomcat, the
ClassLoader is relative to WEB-INF/classes.
56
58. M4 Goal
• Fully installable server and agent distros for all supported
OS/DB combos
-Still missing features left un-implemented in M3
58
59. M4 Tasks
• Removed all static "getOne" accessor methods from EJBs
• Optimized performance by marking some @Transactionals
as "ReadOnly”
• Created installable servers/agents
- User-configurable properties in a single properties file
(aggregating several JBoss config files)
- Spring PropertyPlaceholderConfigurer makes property
injection easy
- Bundled Tomcat (.org) and tc Server (.com) with final distros
- Added custom config of Tomcat and tc Server
- catalina.properties extracts most container configuration to a
single file
- Modified ant-based installer program
• Developed an integration test of a converted EJB as
template for future testing (using a MySQL database)
59
60. SpringOne 2GX 2010. All rights reserved. Do not distribute without permission.
Demo
Integration Testing with Spring
62. M5 Goals
• Fully functional product achieving parity with previous
release
• Build system converted from Ant to Maven
62
63. M5 Tasks
63
• Replaced BasicDataSource with the Tomcat DataSource
(high concurrency connection pool)
• Added LazyConnectionDataSourceProxy
• Added hot deploy of plugins using Roo FileWatcher
• Implemented LDAP authentication with Spring LDAP
• Re-enabled JGroups to complete HA use cases
- Had to manually register a few JBoss MBeans as part of the
web app
• Implemented Kerberos AuthenticationProvider
• Re-enabled JBoss Remoting servlet for unidirectional
agent communications
• Converted build system from Ant to Maven (approx 2
weeks of one person’s time)
• Manual merge of changes made in previous product
releases
65. Some Final Tweaks
Data Access Before
65
public int getServicesCount(AuthzSubject subject) {
Statement stmt = null;
ResultSet rs = null;
Integer subjectId = subject.getId();
try {
Connection conn = getDBConn();
String sql = "SELECT COUNT(SVC.ID) FROM TBL_SERVICE";
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
if (rs.next()) {
return rs.getInt(1);
}
} catch (SQLException e) {
log.error("Caught SQL Exception finding Services by type: " + e, e);
throw new SystemException(e);
} finally {
DBUtil.closeJDBCObjects(LOG_CTX, null, stmt, rs);
}
return 0;
66. Some Final Tweaks
Data Access After
66
public int getServicesCount(AuthzSubject subject) {
String sql = "SELECT COUNT(SVC.ID) FROM TBL_SERVICE";
return jdbcTemplate.queryForInt(sql);
}
67. Some Final Tweaks
Replaced Tapestry with Spring MVC
67
Replaced a small number of Tapestry Components with
Spring MVC @Controller and @RequestMapping
@Controller
public class SearchController extends BaseController {
@RequestMapping(method = RequestMethod.GET, value = "/search")
! public @ResponseBody
! Map<String, List<String>> listSearchResults(
! ! ! @RequestParam(RequestParameterKeys.SEARCH_STRING)
String searchString,
! ! ! HttpSession session) {
...
}
68. Wrapping It Up
Improved maintainability, testability, and reliability
68
• Reduced code complexity
• Quicker application start time
• Easier to test product in isolation
• 18% and 12% improvement in unit/integration test code
coverage for .org and .com codebases, respectively
• Approx 7% code reduction in .org and .com codebases
• Faster turnaround time for bug fixes
• Easily extensible architecture allows quicker development
of new features
69. What’s Next?
69
• Finish conversion from Struts to Spring MVC
• Use MVC to provide WS endpoints, eliminating the need
for existing HQApi groovy controllers
• Eliminate remaining static lookup via the Bootstrap class
• Eliminate passing of auth tokens in method signatures
• Finish conversion of direct SQL in service layer to DAOs
using JdbcTemplate
• Improve scalability
70. SpringOne 2GX 2010. All rights reserved. Do not distribute without permission.
Q&A
71. Resources
71
• Hyperic 4.5 Beta Release
- Open Source
http://sourceforge.net/projects/hyperic-hq/files/
- Enterprise Edition
http://www.springsource.com/landing/vfabric-hyperic-45-beta
• Hyperic Development Resources
- Cloning source
- Building from source
- Building plugins
- Accessing maven repo
http://support.hyperic.com/display/EVO/Development+Resources
• tc Server Eval Download
http://www.springsource.com/products/tc-server-evaluation