Home
Versant enJin Redbook - Web Services and Service
Contents
1. examples ejb SessionManaged _HRManager_Stub createDepartment The method completed successfully amm g Figure 4 22 EJB test In the lower half of the Parameters pane in the test client you will notice that the method was created successfully You may now add other departments employees or execute any of the other methods that are visible in the EJB References pane 4 2 6 View the results in the database Till now you have experienced the ease of development deployment and testing with the enJin tools integrated with WSAD To continue to allow you to have the same ease with viewing the results of your EJB applications enJin provides powerful database utilities You have already used the DBAdmin to create a database Now you will use the other DB tool the DBInspector which can be launched either by clicking the DBInspector icon or selecting enJin Database Tools gt DBInspector as shown in Figure 4 23 78 Accelerating IBM WebSphere Application Server Performance with Versant enJin J2EE Application Developer L 3 f enlin Database Tool er A Figure 4 23 enjin database inspector ion This will launch the DBInspector tool with a list of databases as seen in Figure 4 24 Select the database we have created for this example ejbdb and select OK Figure 4 24 Database list A connection will be made to the database and you will be able to view the departm
2. 1 3 5 Availability enJin s proven technology is a result of over 500 years of development effort It provides support for application clustering synchronization of data between multiple application servers and fault tolerance with automatic failover and recovery 1 3 6 Transparent data distribution enJin enables seamless distribution of data in the middle tier which can be partitioned over multiple machines allowing developers to harness additional hardware for successful deployment and scaling Multiple sharing of enJin by application servers allows concurrent access to shared data facilities and workload balancing 1 4 Key features What follows are key features of Versant Corporation s enJin solution 1 4 1 Persistence for Java objects and EJBs Persistence for Java objects bean management and container management is a key feature of the enJin solution 8 Accelerating IBM WebSphere Application Server Performance with Versant enJin Java persistence Seamless persistence for Java objects has accelerated the development of e business applications by over 40 when compared to traditional JDBC based development Versant enJin provides Object Data Management Group ODMG compliant APIs and in the future will also support Sun Microsystem s Java Data Objects JDO APIs Versant enJin provides transparent persistence for Java objects without any changes to the class model Java objects are stored and shared between applications as is
3. Please perform the steps in sequential order as demonstrated in Figure 2 3 and you will have a database where the objects that you create will be stored Ensure that the server on which you to create your database has been selected Chapter 2 Key concepts 21 Create Database Select sener firraaenia Version 1 server Click if name for database Database name frutan C Personal Type io Group Options Enable logging Enable multi latch Enable locking Create front end protile Preallocate and initialize gt Template profile be Use template configuration file Jeivab Database Figure 2 3 Create database steps Now that we have a database to store persi persistent Person object we simply constru call the TransSession makePersistent met For example import com Versant trans public class CreatePerson public static void main String args if args length 3 System out printIn Usage java CreatePerson lt database gt lt name gt lt age gt 22 Accelerating IBM WebSphere Application Server Performance with 3 OK Click stent objects you will experience the ease and speed with which you can make objects persistent To create a ct a new TransSession object and hod Versant enJin System exit 1 String database args 0 String name args 1 int age Integer parseInt args 2 TransSession
4. The first set of measures taken as shown in Figure 6 1 used LoadRunner to execute requests using a single thread 2 concurrent threads 3 concurrent threads and so forth up to 10 concurrent LoadRunner threads making requests upon the application in each of the baseline and enJin conditions Each of these LoadRunner threads was simply a concurrently running test harness which when aggregated simulated the demand that would be expected from between 10 and 400 concurrent users depending on the test condition Each test harness thread waited until it had received an HTML response before making a new request Bhaseline BenJin Average Response Times seconds 1 2 3 4 5 6 7 8 9 10 Number of Test Harness Threads Figure 6 1 Response times for simple new trade transactions As the chart in Figure 6 1 shows as the amount of workload placed on the baseline WebSphere implementation grew response times began to suffer slowing down from 320 milliseconds with 1 test harness thread to 900 milliseconds with 10 concurrent threads In contrast the implementation which used enJin s object cache had far better response times averaging a mere 70 milliseconds with a single test harness thread to 160 milliseconds with 10 concurrent test harnesses So not only did the architecture using enJin s object cache give much better response times but it also showed much more stable response time performance as workload increased
5. To find the objects that satisfy your query string invoke the execute method on the VQLQuery object Using a VQL query requires four steps 1 Create a com Versant trans VQLQuery object passing the query string to the constructor The basic syntax of a SELECT statement in VQL is as follows SELECT SELFOID FROM class WHERE attribute operator value 2 Bind arguments to the substitution parameters 1 2 and so on in the query string If the query does not have substitution parameters then skip this step 3 Invoke the VQLQuery execute method This method returns an object that implements the com Versant trans VEnumeration interface 4 Use the Enumeration hasMoreElements and Enumeration nextElement methods to obtain all of the objects that satisfy the query The example shown below demonstrates the finding the Person objects we created earlier to using a VQLQuery object import com Versant trans import java util public class FindPersonWithVQL public static void main String args if args length 1 System out printIn Usage java FindPersonWithVQL lt database gt System exit 1 String database args 0 TransSession session new TransSession database VQLQuery query new VQLQuery session select selfoid from Person Enumeration e query execute if e hasMoreElements System out printIn No Person objects were found else while e hasMoreElement
6. which may not need to be stored in backend systems as well as persistence of middle tier only data However enJin also provides a middle tier object cache for information that is stored in backend enterprise information systems such as relational databases a cache which provides tremendous performance advantages This object cache provides transaction integrity and persistence capabilities to ensure consistency between data that is stored in this cache and the data contained in backend information systems It also ensures the integrity of transactions in cases of server failures and ensures consistency between multiple caches in an environment of clustered J2EE application servers As shown by the benchmarks presented within this chapter the addition of Versant s enJin to a standard Enterprise JavaBeans servlets and Java server pages application provides the following performance benefits gt Elimination of between 77 and 89 of the delay between a user making a request and receiving the response In other words application response times that are up to 9 6 times faster gt The ability to handle between 3 6 and 8 5 times the number of concurrent transactions per second Copyright IBM Corp 2002 95 96 Moreover these performance benefits are obtained while actually using fewer CPU resources and equivalent memory resources With enJin s dramatic performance and throughput gains with zero additional resource requirements the
7. Chapter 6 Benchmark results 97 In addition to producing much faster response times due to the nature of the LoadRunner test harness which waits for a response from a previous request before making a subsequent request enJin actually achieved these better response times under a greater load than the baseline architecture Table 6 1 shows the average number of transactions completed per second for the same test runs as shown in the Figure 6 1 previously Table 6 1 Throughput as measured by transactions per second Ei ee ee eee 10 46 20 06 28 70 36 31 44 12 47 70 50 02 48 74 50 69 49 77 So not only did enJin perform much better than the baseline condition in respect of response times but it was producing these better response times under much greater workload The results shown in Table 6 1 illustrate enJin s performance characteristics for a simple application scenario In order to gauge performance under more complex application demands the above measures were repeated for the complex transaction condition such as a request to add a new portfolio These results are shown in Figure 6 2 ow oO h N V D baseline mendin gt th Average Respons Times seconds oOo in 1 2 3 4 5 6 7 8 9 Number of Test Harness Threads Figure 6 2 Response times for complex new portfolio transactions 98 Accelerating IBM WebSphere Application Server Perf
8. and invoke different methods of the trader session bean and account entity bean The primary difference between the two scenarios in terms of complexity is contained entirely within the entity bean s access to the database Both scenarios use the same fairly simple and very standard J2EE sequence of interactions They merely differ in regards to the complexity and number of objects that are updated and so differ in the complexity of the JDBC SQL calls required to implement the updates For the enJin based implementation the two use cases have similar interactions When using enJin however rather than having the trader session bean invoke methods on an entity bean and the entity bean persist the object via a Data Access Object Helper class the enJin architecture instead treats the value objects as persistence capable classes themselves and so is able to bypass the entity bean and data access object layers This Session Bean Managed Persistence approach allows us to persist the objects directly to the enJin object cache using enJin s Java Versant Interface JVI API This requires no SQL update statement to map the objects to relational tables Java methods in enJin s Chapter 5 Benchmark methodology 89 Java API are simply invoked to tell enJin to persist the entire object as an object All other aspects of the interactions are the same The trader session bean returns control back to the trader servlet which then forwards control to a trade
9. results Java server page which then generates an HTML response to be returned to the LoadRunner client 5 2 Performance metrics So for the baseline application this sequence of interactions was the basis of all measurements taken The round trip response times detailed in the benchmark results represent all of the interactions above from the LoadRunner test harness making a request upon the servlet controller through to the EJB execution back to the JSP generating an HTML page and it being received by the LoadRunner test harness The measures of throughput are also based purely upon this measure Throughput is measured in terms of the average number of transactions per second that the WebSphere platform can handle in either the baseline or enJin scenarios Essentially what this measures is the number of client requests that can be completely processed and replied to in a given second on average It is important to emphasize that this is an average measure so that even if the average response time is more than 1 second if say 50 of the above interactions can be processed and responded to within 5 seconds then the average throughput measure will be 10 transactions per second In addition to response times and throughput CPU utilization and memory use were measured for each of these test conditions This allowed for the estimation of the resources both used and available to the WebSphere platform to handle greater workloads 5 3 We
10. 6 Availability 8 B Balanced client server network architecture 15 Benchmark application 84 Benchmark methodology 83 Benchmark results 95 benchmarking project IBM Silicon Valley Laboratory vii Benefits 7 Bindings 15 Business domain model 86 Cc caching of data 8 Categorize the persistent class 64 Class Enhancement 37 ClassEntityBeanHelper 45 ClassSessionBeanHelper 46 complex application scenarios 99 Configure the datasource and poolname 62 CPU utilization 101 CPU utilization for simple New Trade and complex New Portfolio transactions 101 Create database 21 70 Create database steps 22 Create the database 68 Create the Object Manager 19 Creating persistent objects 19 cut response times 99 D data access latency 100 Data replication 9 Database access with transparent bindings 15 Database create 69 Database example 80 Copyright IBM Corp 2002 All rights reserved Database list 79 DB2 RDBMS Server 93 DBAdministrator 20 Declare a static variable of type SessionBeanHelper 62 de coupling 8 default locking model 18 Deleting persistent objects 35 Deploy code 71 Deploying and testing the application 70 Developing applications with Versant enJin 49 E Ease of development 7 EJB import 57 59 EJB import open 58 EJB persistence 9 EJB test 75 78 Elimination of delay 95 Enhancement process 38 enJin architecture 6 enJin console 67 enJin database inspector 79 enJin database tool
11. This file specifies the persistence category of each of the classes that are being enhanced The configuration file for the example application above would look as follows c Person The letter c indicates that instances of the Person class are categorized as Persistent Capable This means that Person objects can be stored in the Versant Object Manager and the enhancer will modify the Person class so that persistence is possible The enhancer looks for class files in a directory and deposits modified class files after the process of enhancement You have the option of storing your enhanced class files in a separate directory example an input directory for your non enhanced class files and an output directory for your enhanced class files For this example we have used input and output directories The input and output directories for the tutorial examples can be found in your JVI installation as the gt enJin examples jvi tutorial trans in gt enJin examples jvi tutorial trans out 24 Accelerating IBM WebSphere Application Server Performance with Versant enJin The enhancer is itself a Java application Assuming the CLASSPATH is set as described above in the section on compilation and that you have a subdirectory named out run the enhancer java com Versant Enhance config config vj in in out out verbose The verbose flag causes the enhancer to indicate the persistence category of each class and to display status
12. be tested Therefore performance characteristics of applications of differing complexities could be examined by benchmarking these two particular operations within the stock trading application 5 1 2 Interactions measured by the benchmark tests 88 Figure 5 3 shows a high level view of the interactions within a single end to end test run of the application for the baseline architecture As shown the standard J2EE architecture was used for the application flow using EJBs JSPs and servlets to provide a model view controller architecture 1 New Trade 1 HTTP Pog 2 newt rade 3 addTrade eeServet gt gt TradeServiet seSessdonBean gt gt Trader cE rtityBean gt Account ae JSPe gt TradeResults 2 New Portfolio 1 HTTP Post 2 newPortfalio 3 addP artfoliog eeSeret gt gt s lt SessionBean gt gt TradeServiet Trader cE rtityBean gt Account 4 lt sforward gt gt lt a SP gt gt 5 HTML TradeResults Figure 5 3 Interactions Accelerating IBM WebSphere Application Server Performance with Versant enJin The collaboration diagrams shown represent a simplified view of the interactions that were measured for the purposes of these benchmarks these diagrams represent the baseline architecture where the enJin object caching service was not used Value objects data access objects Helper classes and container generated classes hav
13. cluster by maintaining cached objects both in an application server in memory cache for maximum performance as well as a shared cache accessible to all application servers so that cached data is guaranteed to be consistent between all application server instances Specific topics covered in this section include An overview of Versant enJin Architecture of enJin Benefits of using enJin Key features YYY Yy 1 1 Overview As application servers have become the platform of choice to build Web based distributed e business applications customers may find their traditional relational database a performance bottleneck Whether you are a global enterprise with vast stores of legacy data or an Internet startup the performance issue can hamper your ability to remain competitive in the new economy Versant enJin provides the additional performance and scalability you need to accelerate your e business transactions across the Internet Versant enJin is a flexible infrastructure platform that seamlessly persists Java objects and Enterprise JavaBeans EJB within the middle tier without otherwise overloading your existing database systems And your company can count on the reliability of Versant enJin with its fault tolerant architecture and support for high availability and clustered environments For global enterprises a key challenge is to propagate the business transaction from the application server or middle tier to the back end line
14. dakar eal EA in ates A a ade 4 1 2 AYCHITGCIUIG s i iit Bate Dae ad PO a We ed ae 6 1 3 Benefits ised eee ie Bee tlle Bed ete eee de eae 7 1 3 1 Ease of development 2 0 cee ee 7 1 3 2 Time to market 0 0 00 cee ee 7 13 3 Scalabllity io sce iw eee ee ee ee 8 Tot PeMOrManGe aeoe wa Aen eRe oie ee ENA albedo ENIES 8 1 3 5 Availability 0 ee eee 8 1 3 6 Transparent data distribution 0 000 eee eee eee 8 124 Key f6atures nti 2 vtind maak buses a e AEE babe ohare dad KAAS 8 1 4 1 Persistence for Java objects and EJBs 200 0 00 8 1 4 2 JavaServer pages and servlet support 000 200 ee 9 TAS Dala replication 2 4 0 iad bine aise eb eat Gh eee ete iin beige 9 1 4 4 Active data management 0 eee eee 10 1 4 5 XML interchange 0 cee ete tee 10 1 4 6 Hot standby for e business transactions 10 1 4 7 Integration with existing technology 0c eee eee 10 14 8 GULT S 20125 vitesse pennn aa aah Matha ad ia hee ehh 10 Chapter 2 Key concepts anaana eee 13 2 1 enJin s transparent Java language interface 000 14 2 1 41 OVE W ee EE a VE Fo bela ieee bit ale TE hale need 14 22 ATCHIOClUle ye ivia stew paana Melee cA Ais Meade dahl aie is 15 213 IVVOPSratiOns ws Reseed ares i ara es Rg ete ey 16 2 2 Class enhancement 000 eee tee 37 2121 OVINE W eaa ce eee esa wad GEO HO AE Sie Ree ONEEN 3
15. download index cfm Please note if you are using WSAD to develop and test your J2EE Applications you do not need to have WebSphere Application Server installed on your machine This chapter will introduce users to the integration of the tools with WSAD Specific topics in this chapter include gt Installation and configuration of Versant Integrated Tools gt Introduction to the enJin tools an User Interface gt Invoking the tools Accelerating IBM WebSphere Application Server Performance with Versant enJin 3 1 Installation configuration of Versant tools Before you can use the enJin tools integrated with WSAD the user must make sure that WSAD is configured to use enJin s IDE Toolkit This is done as follows Unzip the downloaded zip file Its contents include gt wsadscript bat gt enJinTools jar infoset xml infosetAction xml infosetConcepts xml infosetTopics xml plugin xml Icons directory Examples directory doc zip ReadMe html v vvvy Please run wsadscript bat as follows where lt WSAD INSTALL_DIR gt is the location of your WSAD Install directory wsadscript lt WSAD INSTALL_DIR gt This will create a directory com versant enJinTools_1_0_0 in the lt WSAD INSTALL_DIR gt plugins directory and will place all the aforementioned files in this directory The next time you launch WSAD you will have the integrated enJin tools accessible from the IDE Subsequent to the above step when brought up w
16. enJin You can explicitly enhance your application classes using the standalone enhancer utility This utility is the Java application com Versant Enhance When this application is executed it does the following gt Reads the configuration file specified on the command line gt Reads each class file or collection of class files within a directory specified on the command line gt Enhances each class file using the information given in the configuration file The enhancer can place modified class files in a separate directory or it can enhance class files in place The optional out flag is used to tell the enhancer where to place the modified class files For example when using the out option consider an application whose classes are contained in the mycorp myapp package The directory structure might look as follows myrootdir myconfigfile myrootdir in mycorp myapp Main java myrootdir in mycorp myapp Main class myrootdir in mycorp myapp MyObject java myrootdir in mycorp myapp MyObject class myrootdir out Invoke the enhancer utility as follows Cdmyrootdir java com Versant Enhance in in out out config myconfigfile These arguments instruct the Enhance application to look for classes in the in directory modify them according to the settings in myconfigfile and deposit them in the out directory This will cause the following directories and files to be created myrootdir out mycorp myapp Main class myrootdir out
17. language and no awkward interface is needed to access persistent objects Objects of nearly any Java class can be stored and accessed persistently Most kinds of objects can be stored including elemental values such as strings and integers and Java references to other objects With JVI you can access the fields of a persistent object directly in the application without writing tedious data mapping routines Java has built in support for multiple threads of execution working simultaneously in an application JVI allows each thread to operate in shared or independent transactions 14 Accelerating IBM WebSphere Application Server Performance with Versant enJin JVI is tightly integrated with the enJin s Versant object database with a comprehensive set of features that includes gt High performance fully transactional object storage access and query gt An advanced 2 tier architecture with full caching of objects on both client and server All cache synchronization occurs automatically at transaction boundaries gt Sophisticated locking models including standard and optimistic locking gt Event notifications such as creation deletion and modification gt Fault tolerant data replication with online fail over operation gt Support for rich object models including class inheritance and direct object references 2 1 2 Architecture What follows is a brief overview of the JVI architecture Bindings The JVI Transparent b
18. links work in enJin we will use simple Employee and Department classes The Employee class contains a reference to the Department class each employee belongs to one department Similarly the Department class contains a reference to the Employee class one employee manages each department The source code for the employee is as follows public class Employee extends Person Department department Chapter 2 Key concepts 31 double salary Employee String aName int anAge double aSalary super aName anAge salary aSalary public String toString return Employee name age age salary salary department Next we will define the Department class public class Department String name Employee manager Department String aName Employee aManager name aName manager aManager public String toString return Department name manager manager null nobody manager name Now let us create an application that creates some employee objects and stores them in the Object Manager import com Versant trans public class AddEmployees public static void main String args if args length 1 System out printIn Usage java AddEmployees lt database gt System exit 1 String database args 0 32 Accelerating IBM WebSphere Application Server Performance with Versant enJin TransSession session n
19. mycorp myapp MyObject class myrootdir out mycorp myapp MyObject_Pickler_Vj class Note the newly created MyObject_Pickler_Vj class Creation of this class depends on the configuration file in fact the pickler class will only be created if the class is categorized as c or p See the section Persistence Categorization for more information Alternatively class files can be modified in place This means that the enhanced class files replace the original class files To use in place enhancement omit the out flag When using in place enhancement separate in and out directories are not necessary For instance the directory structure for the mycorp myapp would simply be as follows myrootdir myconfigfile myrootdir mycorp myapp Main java Chapter 2 Key concepts 39 myrootdir mycorp myapp Main class myrootdir mycorp myapp MyObject java myrootdir mycorp myapp MyObject class Then the enhancer can be invoked in the following manner cd myrootdir java com Versant Enhance config myconfigfile Note the at the end of the command line This tells the enhancer to examine all classes in the current directory It is not possible to enhance a class more than once The enhancer places a special marker inside the class file so that it can determine whether a class has already been enhanced If a class file has already been enhanced then it will not be modified Important A persistent class is changed in such a way that other cla
20. return on an investment in enJin for a J2EE based application is easily shown to be on the order of 53 61 savings in hardware and software platform costs alone based on very conservative estimates Depending on the scale of an application s deployment these savings are likely to translate into platform cost reductions anywhere between 175 000 for modest deployments to around 675 000 in savings for enterprise scale deployment topologies The following metrics were metrics were evaluated in this project gt Mean Response Time Time taken from LoadRunner making an HTTP request to LoadRunner receiving an HTML reply for that particular request gt Throughput in mean number of transactions per second Average number of round trip interactions that could be responded to within 1 second gt Mean CPU utilization Average CPU activity for each of the 4 processors in the WebSphere Application Server machine as well as each of the 4 processors in the Data Server machine gt Mean Memory Utilization Average amount of memory used by the WebSphere Application Server and database server machines The subsequent section will detail the results of the project Specifics that will be discussed include gt Response Time performance and application server throughput gt Resource Utilization gt Scalability Accelerating IBM WebSphere Application Server Performance with Versant enJin 6 1 Response time and application server throughput
21. simply clicking the button You will use view the database contents In addition there are three other powerful tools that you will use while developing with enJin These are gt Persistence Tool Used to mark the persistence category of classes Upon categorization of your classes another tool automatically gets invoked and result is that your classes are now enhanced gt enJin Wizards You may use this to generate templates for applications using serviets or Bean Managed Persistence Accelerating IBM WebSphere Application Server Performance with Versant enJin Session managed persistence This approach is a powerful design approach It gives the developer the full flexibility while using enJin s transparency while allowing the IBM WebSphere to manage resources thereby leveraging enJin features such as session pooling and load balancing You can use enJin s transparent Java language interface JVI to store and access persistent objects from Session Beans The persistent data in your application can be directly stored in the enJin database using the object model that you create Once the java classes that represent persistent objects have been created you can develop the EJB interfaces using session beans The helper classes give you an easy way to tie in with the application server session pooling and transaction management functionality and allow you to work with objects just as you would in any Java program and use of en
22. sites are provided for convenience only and do not in any manner serve as an endorsement of those Web sites The materials at those Web sites are not part of the materials for this IBM product and use of those Web sites is at your own risk IBM may use or distribute any of the information you supply in any way it believes appropriate without incurring any obligation to you Information concerning non IBM products was obtained from the suppliers of those products their published announcements or other publicly available sources IBM has not tested those products and cannot confirm the accuracy of performance compatibility or any other claims related to non IBM products Questions on the capabilities of non IBM products should be addressed to the suppliers of those products This information contains examples of data and reports used in daily business operations To illustrate them as completely as possible the examples include the names of individuals companies brands and products All of these names are fictitious and any similarity to the names and addresses used by an actual business enterprise is entirely coincidental COPYRIGHT LICENSE This information contains sample application programs in source language which illustrates programming techniques on various operating platforms You may copy modify and distribute these sample programs in any form without payment to IBM for the purposes of developing using marketing or distributing ap
23. to add the following within the servers tag to your server cfg xml file for successful deployment This must be done prior to running the HRManagerBean on the server lt customServices xmi id enJinStartupPool_1 enable true externalConfigURL lt wsadtoolszip_dir gt examples vec config xml classname com versant ejb websphere VECInitializer displayName VEC Startup Pool classpath lt ENJIN ROOT gt lib enjin jar gt 72 Accelerating IBM WebSphere Application Server Performance with Versant enJin Note Please ensure that you specify the configuration for your installation of enJin For example if you have installed enJin on your D drive substitute lt ENJIN_ROOT gt with d enjin Similarly lt wsadtoolszip_dir gt refers to the directory where downloaded zip file contents have been placed If you do not have an instance of the server you will have to create one One way of doing this is by running the server and then stopping it This can be done by from the J2EE view by right clicking after the bean had been selected from the project and selecting Run on Server as shown in Figure 4 17 CF Enterprise Applications GY Application Client Modules a G Web Modules E O EJB Modules S exemples ejb SessionManaged a A SewverCont Mew B E Server inste oad aesan Generate Deploy Code Quick Links Delete Navigator J2EE View Figure 4 17 Run on Server Chapter 4 Session managed persistence 73 Upon doin
24. with IBM to deliver WebSphere Consulting Services The Versant WebSphere Consulting Practice consists of WebSphere experts in EJB application architecture WebSphere back end developers VisualAge for Java consultants and WebSphere systems administration experts Through this consulting practice Versant supports IBM s explosive growth in the application server business by helping their customers design architect implement and roll out WebSphere applications Some examples of the type of WebSphere Java application projects where these consultants help our clients gt Application architecture design gt Object oriented analysis and design gt e business application development using Java 2 technologies such as EJB JSP and Servlet technologies gt WebSphere performance and tuning consulting gt Application project management gt VisualAge for Java mentoring gt WebSphere deployment Copyright IBM Corp 2002 105 gt WebSphere installation setup and systems administration gt Managing roll out of WebSphere systems for production implementation For more information please see the following URL for the WebSphere consulting practice at Versant is http www versant com services profservices index htm 106 Accelerating IBM WebSphere Application Server Performance with Versant enJin Index A Active data management 10 Application architecture 85 Application Server running within WebSphere 91 Architecture
25. your objects This is a good way to find a starting point into your object graph In the next section you will be able to use navigation to then traverse to other objects This combination that enJin provides can dramatically improve performance and provides greater flexibility when building applications There are two basic ways of finding existing objects in the Object Manager gt Finding objects with roots gt Finding objects with queries Once a persistent object has been found by either of these two methods its fields can be read and modified and its methods can be invoked Any changes made will be written back to the Object Manager at the transaction commit Finding objects with roots A root is a persistent object that has been given a name This name can be used to find the object later A root name is a bit like a file name although the system of roots in enJin s JVI is much simpler than a true file system In particular there is one space for root names in each database Root names should be applied to only a relatively small number of objects in a database Many database applications have complex connected graphs of objects a root provides a simple entry point into these graphs 26 Accelerating IBM WebSphere Application Server Performance with Versant enJin There are three fundamental root operations gt Making a new root by giving an object a name gt Finding an object with a given root name gt Deleting a root na
26. 5 1 Benchmark application 2 0 0 0 cee ee 84 5 1 1 Business domain model 0000 e eee eee 86 5 1 2 Interactions measured by the benchmark tests 88 5 2 Performance metrics 0 0 0 tt eee 90 5 3 WebSphere deployment configurations 000000005 90 5 4 Other runtime parameters uasan 0 0 0 0 cece eee 92 5 5 Hardware configuration 00 eae 92 Chapter 6 Benchmark results 0 0 eee ee eee 95 6 1 Response time and application server throughput 97 6 2 Resource utilization 20 ees 100 6 2 1 CPU utilization 6 ee 101 6 2 2 Memory utilization 0 0 0 ee 102 6 3 Scalabillity arera ia na Lake ae IR KALAT cane avila weg le ee ads moe habe ea 103 Appendix A Versant WebSphere Consulting Practice 105 Index waclece ele ntl a Rae ie ee ee ed eee ee eee 107 iv Accelerating IBM WebSphere Application Server Performance with Versant enJin Notices This information was developed for products and services offered in the U S A IBM may not offer the products services or features discussed in this document in other countries Consult your local IBM representative for information on the products and services currently available in your area Any reference to an IBM product program or service is not intended to state or imply that only that IBM product program or service may be used Any functionally equivalent product program o
27. 68 enJin IDE Toolkit 51 enJin interface 52 enJin persistence tool 65 enJin s Java Versant Interface JVI 14 enJin s performance characteristics 98 enJin s Versant Object Database 15 enJin s transparent Java language interface 14 Enterprise Java Beans EJBs 50 F Finding objects 26 Finding Objects with Queries 29 Finding objects with roots 26 G Generate 72 GUI tools 10 107 H Hardware configuration 92 Helperclasses 45 Hot standby for e business transactions 10 How to choose a persistence category 42 HRApplication 54 l IBM High Volume Web Sites team vii Implementation of enJin session managed persis tence 61 Import select 56 Import selection 60 Import the jar file 55 Initialize the SessionBeanHelper 62 Installation and configuration of Versant integrated tools 51 Integration with existing technology 10 Interactions 88 Interactions measured by the benchmark tests 88 Internal timing of data access component of round trip transaction times 100 Introduction to the enJin tools and user interface 51 J Java build settings 61 Java persistence 9 JavaServer pages and servlet support 9 JVI operations 16 JVI transparency 37 K Key concepts 13 Key features 8 L LoadRunner Client 92 Locking 17 M manage middle tier services 5 Mean CPU utilization 96 Mean Memory Utilization 96 Mean Number of Transactions per Second 96 Mean Response Time 96 Memory utilization 102 Memory utilization for s
28. 7 2 2 2 Running the enhancer 0 00 ee 38 2 3 Persistence categorization 0 cee eee 41 Copyright IBM Corp 2002 All rights reserved iii 2 3 1 Persistence categories 0 eee ee 41 2 3 2 How to choose a persistence category 05 42 2 4 Versant enterprise container 2 0 es 43 2 4 1 Session manager 0 ee eae 43 2 4 2 Transaction management saaana eeruan 44 2 4 3 Helper classes 000000 45 Part 2 Developing an enJin application 0 0 0 c eee ee 47 Chapter 3 Developing applications with VersantenJin 49 3 1 Installation configuration of Versant tools 00 eee 51 3 2 Introduction to the enJin tools and user interface 51 Chapter 4 Session managed persistence 53 4 1 Outline of the example 0 00 ee 54 4 2 Running the example 0 cece eee 54 4 2 1 Impor the jarfile 0 0 eee 55 4 2 2 Implementation of enJin session managed persistence 61 4 2 3 Categorize the persistent class 0 0 0c eee eee eee 64 4 2 4 Create the database ee es 68 4 2 5 Deploying and testing the application 70 4 2 6 View the results in the database 00000 78 Part 3 The benchmarking project 0 0 0 cece ae 81 Chapter 5 Benchmark methodology 000 ee aes 83
29. ATH To execute the CreatePerson application java CreatePerson tutdb Bob 28 The above command adds a single Person object to the tutdb Object Manager with name Bob and age 28 This can be seen using the db2tty utility or by using the DB Inspector by selecting Start gt Programs gt enJin gt DB Inspector db2tty d tutdb i Person Chapter 2 Key concepts 25 Reading persistent objects The transparent binding seamlessly inter operates with the Versant Object Manager Persistent objects are automatically fetched and locked as your application accesses them by traversing object references or using the VERSANT query mechanism All access to persistent objects occurs within an enJin transaction so that changes to an object can be atomically committed or rolled back Both queries and navigation can be used to read objects Queries are select statements similar to SQL statements used with relational databases Navigation is following the references from one object to another object In both cases you can retrieve your destination object However they have different strengths and weaknesses In general enJin has the best flexibility and performance if you use queries mostly for finding starting objects and then use navigation traverse the references to retrieve relevant objects from the object graph This section will cover gt Finding objects gt Object navigation Finding objects In this section you will learn how to locate
30. Accelerating IBM WebSphere Application Server Performance with Versant enJin eS Improve data access by more than 50 times Speed transaction throughput by 10 times Eliminate object to relational mapping code Sanjiv Chhabria Versant Solution Team ibm com redbooks Red b ooks International Technical Support Organization Accelerating IBM WebSphere Application Server Performance with Versant enJin November 2002 SG24 6561 00 Note Before using this information and the product it supports read the information in Notices on page v First Edition November 2002 This edition applies to Versant enJin 2 1 0 2 2 3 and WebSphere Studio Application Developer 4 0 2 on Windows NT 4 0 SP 6 Copyright International Business Machines Corporation 2002 All rights reserved Note to U S Government Users Restricted Rights Use duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp Contents Notices si iade iie onen L iad whale bee ede eee ed v Tr demaikKS oradi min a ee ea e a ted aoe a n kas Taa Ge Dea vi Preface e o ca ice a E dR on N dn Sei vii The team that wrote this redbook 0 00 e eee eee viii Become a published author 0 0 e eee eee viii Comments welcome 0 0 nett ix Part 1 Introduction to VersantenJin 00 00 eee 1 Chapter 1 Overview ofenJin aeaaea 3 Hal OVORVIOW itt Saath eth a ce ea siineed bead seme
31. Aware The methods of Not Persistent Aware classes cannot directly access the fields of an FCO The methods of Not Persistent Aware classes can call methods on an FCO 2 3 2 How to choose a persistence category Choosing the correct persistence category for each of the classes in your enJin application is an important part of the development process To properly categorize your classes it is helpful to have an understanding of how the classes will function within your application as well as what changes the enhancer will make to these classes Persistent capable You should assign a class the Persistent Capable category if you want instances of that class to be stored in the Object Manager as independent persistent objects A Persistent Capable object can be either transient or persistent A transient object behaves essentially as it would have before the enhancer modifies the class A persistent object however is considered a First Class Object It takes advantage of the changes made by the enhancer to enable the object to be stored in the Object Manager For example gt The Versant Object Manager assigns each persistent object a unique object identity its LOID gt The enhancer generates additional methods that automatically read and write the object when the attributes of the object are read or changed Not persistent aware The enhancer does not modify a Not Persistent Aware class Classes that do not directly manipulate
32. Figure 6 5 range from 3 GB to 4 GB of in use memory and so the slight differences that can be seen are visible primarily due to the expanded scale For both the application server and data server memory use ranged from 3 31 to 3 43 Gigabytes with a mere 3 variation So the use of enJin requires no additional memory resources when compared to a traditional architecture 102 Accelerating IBM WebSphere Application Server Performance with Versant enJin 6 3 Scalability The benchmarks show that by adding enJin to the WebSphere platform we can achieve much faster response times and much higher throughput The application server spends fewer CPU resources executing each transaction and so it can make itself available for further work more quickly This does not actually make our application more scalable the application s scalability is still guaranteed by WebSphere s ability to cluster many application servers to share increased workloads as user demands increase Even though enJin s performance characteristics do not make our application more scalable they do provide our application the ability to scale to meet a given demand with fewer resources Chapter 6 Benchmark results 103 104 Accelerating IBM WebSphere Application Server Performance with Versant enJin Versant WebSphere Consulting Practice Versant s core competency in object oriented applications and expertise in Java for the application server has lead to a strategic partnership
33. Jin s APIs for transparent object persistence In this chapter we will demonstrate the process of developing an EJB Application using Session Managed Persistence You will notice that for most parts if you are familiar with the J2EE standards enJinizing your applications is not much different You will however be able to develop your applications faster and will notice an improvement in the performance Copyright IBM Corp 2002 53 Since we used SMP in the benchmarking project to measure the performance we have chosen to focus demonstration of this method of persistence You may also use enJin and leverage its powerful features to implement Bean Managed Persistence Java server pages and servlets On the CD accompanying this Redbook we have included a jar file which contains the source Java classes that demonstrate SMP Topics covered in this chapter include gt The outline of the example gt Running the example 4 1 Outline of the example This is a HRApplication which allows a human resource manager to enter and retrieve employee and department information When a request is submitted it calls ManagerServlet which invokes the appropriate bean method This application provides the following functionalities gt CREATE New Department Creates a new department gt CREATE New Employee Creates a new employee The department of the employee needs to be specified If the specified department does not exist then a ne
34. The workbench contare one ot mote perspectrves Each perspectrve correite of wees such as the Navigator end editors for working on 6 particular type of task The buttons on the shortcut bear at the fer left allow you to open new perspectives and move between open per The tithe bar tells you which perspective you me culrentiy walking wth You have t Opaning each new perspective n ite own Hardon thet te Configured from Window enJin Database Tools Customizing your workbench You can move views and editors around the workbench by dragging thes title bars You can alto add wews lo the caweni perspective by choking Perspective gt Show View and you can corer views to lest views by dregging them to the shortcut ber on the lelt of the windore fast view opens and closes when you click ts button on the shortcut bar You can save yout changes by clicking Perspective gt Save As To reset ary perspective to its ongina hd J2EE View Nawigato 4 f Outtine x T enlin Console Fx An outhne i not avadable r enJin Console ww j 7 i enlin Console Properties Tasks 1 tem velected Figure 3 1 enjin interface gt The DBAdministrator can be invoked either by using the menu item enJin Database Tools gt DBAdministrator or by simply clicking the button You may use it to create delete and perform other operations on the databases gt The DBlinspector can be invoked either by using the menu item enJin Database Tools gt DBinspector or by
35. VI uses the enhancer to achieve transparent object management The process of enhancement is represented in Figure 2 4 Chapter 2 Key concepts 37 Normal Java Unenhaneced com versant Enhance Enhanced Java Compiler Byte Code Utility Byte Code Class Files Figure 2 4 Enhancement process The enhancer makes several changes to the class files depending on the specifications in a configuration file For an explanation of this configuration file see 2 3 Persistence categorization on page 41 These class file changes include gt Code is generated to automatically define the schema for the class gt Code is generated to read and write the persistent objects to and from the Object Manger gt Code that accesses gets and puts fields of an object is modified to first perform additional checks gt When a field of an object is read or modified the object is fetched from the Object Manager lazily gt When a field of an object is modified the object is marked dirty Changes will then be written to the Object Manager when the transaction is committed The objects are re rooted to extend a common base class This base class is an internal detail of the implementation of Transparent JVI and should not have a direct affect 2 2 2 Running the enhancer The enhancer can be invoked as a separate standalone utility in the following way 38 Accelerating IBM WebSphere Application Server Performance with Versant
36. addition to this enJin offers a fault tolerant capability that provides automatic fail over and recovery This means that Internet transactions continue to run uninterrupted even in the event of a major system failure On recovery enJin performs an automatic re synchronization before recommencing normal fault tolerant operation 1 4 7 Integration with existing technology Versant enJin supports today s heterogeneous enterprise ensuring preservation of investment as platform and technology choices change Versant enJin integrates with IBM s WebSphere and BEA s WebLogic Application Servers and in addition can work with any Java application server using its generic integration framework Versant enJin runs on Microsoft and all major UNIX platforms 1 4 8 GUI tools Your learning curve associated with utilizing enJin s powerful utilities is minimal We provide a set of GUI tools that can be used from the Developer Console with enJin or allows you to develop your application using the leading IDE s Jbuider and WSAD simply by point and click These include 10 Accelerating IBM WebSphere Application Server Performance with Versant enJin Persistent Tool which allows you to specify the classes you want to mark as persistent and access transparently Class Enhancement Easy to use wizards that allow you to implement enJin specific code DBAdministrator allowing you to create delete and perform a number of database operations DBlnspector
37. allowing you to inspect the contents of your database Chapter 1 Overview ofenJin 11 12 Accelerating IBM WebSphere Application Server Performance with Versant enJin Key concepts Versant enJin is a powerful and comprehensive transaction accelerator With the integrated Java and EJB development and runtime environment that is provided building high performance scalable and robust enterprise applications need not take the hundreds of man years that developers were used to enJin provides the platform for you to do this with up to 40 less code and 50 times better performance enJin readily integrates with leading application servers like IBM WebSphere thereby providing a complete so ution in a box for your component based development and deployment enJin leverages the proven abilities of Versant s object database to handle Java objects data complexity and transactions throughout the middle tier enJin s object relational mapping can provide direct access to relational data where required and coupled with replication techniques can be used to propagate business transactions near synchronously or asynchronously depending on the need As a new user we can understand your excitement in deciding to use enJin But before you start developing with enJin there are some concepts that we feel you need to familiarize yourself with so that you have a good understanding of what happens behind the scenes These concepts are integral to your succes
38. ation Serwr p Backend Ter Entrprise ntormaton Systems Figure 1 1 endJin architecture 6 Accelerating IBM WebSphere Application Server Performance with Versant enJin A variety of approaches can be used to update the relational database tier but typically the backend is not touched until a business transaction is completed Since the object to relational updates are performed asynchronously the processing time required to do this work of backend updates is not incurred within the context of a user s transaction but rather it is delayed until after the application server has responded to the user s request This enables response times to be dramatically improved Furthermore since the resources within the application server do not have to be locked waiting for the enterprise information systems to be updated these resources can be freed more quickly and can be utilized for other transactions more quickly This faster freeing up of application server resources also enables the throughput to be greatly improved All of these performance gains come primarily from the delaying of the object to relational translation work and reading and writing to the enterprise back end systems and these gains are made without sacrificing any transactional integrity Versant s Persistent Object Cache guarantees the ACID properties of the transactions atomicity concurrency isolation and durability are all maintained 1 3 Benefits What foll
39. bSphere deployment configurations The following list shows all of the parameters that were used to configure the EJBs servlets and JSPs for both the baseline test runs as well as the enJin test runs Since WebSphere provides a vast array of configuration parameters for application tuning only the primary configuration options as well as all of the properties which may have had any impact on performance have been shown DB2 Datasource gt JDBC Driver com iobm db2 jdbc app DB2Driver type 2 JDBC Driver gt Minimum pool size 10 gt Maximum pool size 500 90 Accelerating IBM WebSphere Application Server Performance with Versant enJin gt Connection timeout 180 milliseconds gt Idle timeout 1800 milliseconds gt Orphan timeout 1800 milliseconds Application Server running within WebSphere Tracing none Object level tracing enabled False Debugging enabled False Transaction timeout 2 minutes Transaction inactivity timeout 1 minute Thread pool size 20 Security enabled False EJB container Cache size 2 MB Trader lt Session Bean gt e State Management Stateless e JNDI Home Name com versant benchmarkbmp ejb Trader e Minimum Pool Size 2 e Maximum Pool Size 100 e Transaction Attributes TX_NOT_SUPPORTED all methods of remote interface e Transaction Isolation SERIALIZABLE for all methods of remote interface vvvvvvvy Account lt Entity Bean gt e JNDI home name com versant b
40. ble Send us your comments about this or other Redbooks in one of the following ways gt Use the online Contact us review redbook form found at ibm com redbooks gt Send your comments in an Internet note to redbook us ibm com gt Mail your comments to IBM Corporation International Technical Support Organization Dept 1WLB Building 80 E2254 650 Harry Road San Jose California 95120 6099 Preface ix x Accelerating IBM WebSphere Application Server Performance with Versant enJin Part 1 Introduction to Versant enJin In this part we will describe and familiarize the reader with the methodology used in developing J2EE applications using Versant enJin as well as provide information about enJin that will enable your team to fully understand the components architecture benefits and features of enJin Copyright IBM Corp 2002 1 2 Accelerating IBM WebSphere Application Server Performance with Versant enJin Overview of enJin Versant enJin is a scalable robust infrastructure platform offering advanced object management for Application Servers Versant enJin provides core object management services of persistence and intra tier replication that are essential in building Java middle tier applications The platform is ideal for applications that have complex object models and require high performance scalability and fault tolerance Versant Corporation s enJin provides a middle tier object cache which allows J2EE applica
41. d click on HRManager create as the constructor IBM EJB Test Client Asaa af References 8 Parameters Ea z a EJB References 4 method or constructor has not been selected ES HRManager ENB HRManagerHome 2 i i0 HRManager create Ela object References gt No object references available Ela Class References j i No object references available Load Class li Results w No results Figure 4 19 EJB test 2 Upon doing so the right pane of your test client changes as displayed below Click on the Invoke button as shown in Figure 4 20 Chapter 4 Session managed persistence 75 a EJB Test Chertin examples ejb SessionManaged HRManager create References i Mo object references available 2 Class References Figure 4 20 EJB test 3 Upon invoking the method in the Parameters pane a Work with Object button will appear as shown in Figure 4 21 Please click this button 76 Accelerating IBM WebSphere Application Server Performance with Versant enJin s EJB Test Cliath Q IBM E28 Test Client HBeelA amp o amp K8 References 39 Parameters Ba EJB References i examples ejb SessionManaged HRManager create f El HRManager Bet HRManagerHome i iB HRManager create EP Object References 1 No object references available Elm Class References i i No object references available Load Class js Result
42. demarks of Microsoft Corporation in the United States other countries or both Java and all Java based trademarks and logos are trademarks or registered trademarks of Sun Microsystems Inc in the United States other countries or both C bus is a trademark of Corollary Inc in the United States other countries or both UNIX is a registered trademark of The Open Group in the United States and other countries SET SET Secure Electronic Transaction and the SET Logo are trademarks owned by SET Secure Electronic Transaction LLC Other company product and service names may be trademarks or service marks of others vi Accelerating IBM WebSphere Application Server Performance with Versant enJin Preface Application servers have become the choice technology for companies building Web based distributed e business applications Although this has proven to be successful in a number of areas many organizations still struggle with several performance bottlenecks Using IBM WebSphere and Versant enJin provides a framework for a solution that addresses some of these challenges especially the complex object oriented models of enterprise applications Versant enJin integrates seamlessly with IBM WebSphere and provides the performance and scalability you need to accelerate your e business transactions The integration of Versant enJin with IBM WebSphere can result in up to 50 times improvement in the performance of your e business application T
43. e been omitted in order to provide a clear overview of the interactions that were measured The first of the diagrams shows the new trade use case the simple transaction condition In this interaction the LoadRunner test harness makes a request on the TradeServlet which takes parameters present in the HTTP request and builds a trade value object a simple JavaBean encapsulating the data to be used for creation of the new trade The type of the value object created is determined by a parameter of the HTTP post request which informs the servlet of which of the use cases to execute here the New7rade use case The trade serviet then looks up the trader stateless session bean and invokes the newTrade Trade method of the session bean s interface passing the newly created instance of the trade object The trader session bean then invokes one of the finder methods of the account entity bean s home interface based on information in the trade value object in order to locate the appropriate entity bean to be updated The trader session bean then invokes the addTrade Trade method passing the trade value object The entity bean uses a Data Access Object Helper class which uses SQL and JDBC to flatten the object and save it to the RDBMS The flow of control then returns to the servlet which forwards to a Java server page to generate an HTML response The new portfolio use case has similar interactions they simply create different value objects
44. e of the section below is to expose the user to some of the features of enJin s VEC such as gt enJin provides automatic transaction management based on the transaction property specified in the deployment descriptor gt Association of every Entity Bean with an object stored in the Object Manager when the bean is activated When a transaction completes commits or aborts the Object Manager object is released from the enJin session 44 Accelerating IBM WebSphere Application Server Performance with Versant enJin gt Ashared session is typically used to handle non transactional requests or to handle methods that only read data are not mutators As commits are disabled for shared sessions in order to manage memory over a span of multiple transactions enJin automatically releases objects from the shared session based on a user configurable parameter gt There is no requirement that the user create a shared session pool Even non transactional methods such as finder methods can be executed in exclusive sessions For non transactional user methods it is up to the user to ensure that the method does not mutate the state of an entity bean ora persistent object gt enJin generates a call to get a session from the session pool in the EntityBean Implementation class before any method on the bean is invoked If the bean method is transactional the get session will ensure that the same exclusive session is returned to the user for all ca
45. ects 34 Using the command line to create the database 19 Using the WSAD IDE to Create the database 20 V Versant enterprise container 43 Versant Object Manager 36 Versant Query Language VQL 15 Versant WebSphere Consulting Practice 105 View the results in the database 78 W Web amp WebSphere Server 93 WebSphere deployment configurations 90 WebSphere experts in EJB application architecture 105 WebSphere Studio Application Developer WSAD 50 Write the code for your business logic 63 WSAD IDE 55 X XML interchange 10 Index 109 110 Accelerating IBM WebSphere Application Server Performance with Versant enJin Accelerating IBM WebSphere Application Server Performance with Versant enJin 0 2 spine 0 17 lt gt 0 473 90 lt gt 249 pages Accelerating IBM WebSphere Application Server Performance with Versant enJin Improve data access by more than 50 times Speed transaction throughput by 10 times Eliminate object to relational mapping code This IBM Redbook is an in depth guide for implementation of Versant enJin methodologies and practices for development and deployment of your J2EE applications using IBM WebSphere Application Server Versant enJin is a flexible infrastructure platform that persists Java objects and EJBs within the middle tier without overloading your existing database systems Details of the benchmarking project that was a joint undertaking with IBM and Versan
46. ed with the transparent binding are cached in Java memory To create a Java class for persistent objects first write the java source code file as usual Note that there is no special syntax necessary when defining the classes No changes are necessary to allow objects of this class to be stored in the Versant object database These changes are done automatically for you in the enhancement process Our first example will use a Person class which is included in the lt ENJIN_ROOT gt examples JVI tutorial trans directory To indicate that instances of Person are persistent objects a corresponding line will be added to the configuration file that is read during the enhancement process Enhancement will be described in greater detail in the section on Class Enhancement Note This and the subsequent examples requires enJin s object database in which to store objects Thus our first step is to create this The name of the database is arbitrary we will use the name tutdb This can be easily changed since all of the examples take the database name as a command line parameter Creating a new Versant Object Manager can be accomplished in two ways gt Using the command line gt Using WSAD IDE with the enJin s Integrated tools Using the command line to create the database There are two steps to creating the database using the command line Make the Object Manager Directory Before creating a new Object Database you must create a subdirectory fo
47. enchmarkbmp ejb AccountWrapper e Find for update False e Minimum pool size 2 e Maximum pool size 100 e DB exclusive access False e Transaction attributes TX_REQUIRED for all methods of remote interface e Transaction Isolation READ_COMMITTED all methods of remote interface e Read only methods none used Servlet engine e Maximum connections 100 e Transport type OSE Open Servlet Engine e OSE transport INET Sockets since running on SunOS Web application e Auto reload True e Reload interval 9 seconds e Shared context False Chapter 5 Benchmark methodology 91 TraderServiet lt Servlet gt e Code versant benchmark serviets Controller e Load at startup True e Debug mode False JSP 1 1 Compiler lt Servlet gt e Code org apache jasper runtime JspServlet e Load at startup True e Debug mode False Session manager e Enable sessions True e Enable URL Rewriting False e Enable cookies True e Shared context False All of the configuration parameters shown above were kept the same between both the baseline architecture as well as the enJin based test architecture All of the WebSphere configuration parameters not shown have little or no impact on the performance characteristics of the test application but were also kept the same between both the baseline and enJin deployments in order to ensure accurate benchmarking 5 4 Other runtime parameters Befo
48. ent we have just created Simply double click the class in this case examples ejb SessionManaged Department and you will see the department we just created Marketing as shown in Figure 4 25 Chapter 4 Session managed persistence 79 Swperclasses Attributes examples ejb SessionManaged Employee Double click on the class Figure 4 25 Database example You can now continue to test your application Create as many departments and employees as you like 80 Accelerating IBM WebSphere Application Server Performance with Versant enJin Part 3 The benchmarking project In this part we will share with the user the details of the benchmarking project that was done including the methodology the application architecture the performance metrics and hardware configuration The final part of this section is dedicated to present the users with the test results and analysis as well as a summary of the project Copyright IBM Corp 2002 81 82 Accelerating IBM WebSphere Application Server Performance with Versant enJin Benchmark methodology The benchmark testing was performed using IBM s WebSphere Application Server and DB2 RDBMS but since the performance bottleneck that enJin overcomes is merely the latency between middle tier business objects and back end tier relational data these performance benefits apply equally well to all enterprise class J2EE platforms This chapter is dedicated to describing in detail the methodolog
49. ew TransSession database VQLQuery query new VQLQuery session select selfoid from Person Enumeration e query execute if e hasMoreElements System out printIn No Person objects were found else while e hasMoreElements 34 Accelerating IBM WebSphere Application Server Performance with Versant enJin Person person Person e nextElement person aget System out printIn Increasing person name s age to person age session endSession Now do the usual such as compile update the configuration file enhance and run Compile the java source file javac IncreaseAge java Update the configuration file tutorial trans config vj a IncreaseAge Note You may have noticed in this instance we are categorizing the class as persistence aware This is necessary since we have accessing public attributes This however is not necessary but if you do choose to engage in similar programming practices you will be able to access these attributes by classifying your class as persistent aware For more details on Persistence Categorization please refer to your JVI User s Manual Enhance the class file java com Versant Enhance config config vj in in out out verbose Run the application java IncreaseAge tutdb This shows the following output Increasing Bob s age to 29 Increasing Mary s age to 44 You can now use the FindPersonWithVQL program to in fact ver
50. ew TransSession database Employee the_boss new Employee The Boss 42 110000 Employee jane_jones new Employee Jane Jones 24 80000 Employee john_doe new Employee John Doe 25 75000 Employee lois_line new Employee Lois Line 36 70000 Department engineering new Department Engineering the_boss Department marketing new Department Marketing lois_line the_boss department engineering jane_jones department engineering john_doe department marketing lois_line department marketing session makePersistent the_boss session makePersistent jane_jones session makePersistent john_doe session makePersistent lois_line session endSession The next steps are identical such as compile and update the configuration file and enhance and run the program Compile the java source file javac Employee java Department java AddEmployees java Update the configuration file tutorial trans config vj p Employee p Department Enhance the class file java com Versant Enhance config config vj in in out out verbose Run the application java AddEmployees tutdb Running the application will add four Employee objects to the Object Manager To see that the four objects exist you can use the db2tty utility db2tty d tutdb I Employee You will now be able to witness traversing of objects using references by running the FindPersonWithVQL application that we created in the earlie
51. g so WSAD will automatically change your perspective to the server perspective Of course you will not be successful in running the application since you have not configured your server yet Select the Server Control Panel tab and select the Server Instance that has just been created Now right click with the instance selected and select the Stop option Run on server You are now ready to run your application on the server To do this please ensure that you are in the J2EE view select the HRMangerBean that we have been building right click and select Run on Server as shown in Figure 4 18 E g Enterprise Applications a E Application Client Modules a E Web Modules 5 6 EJB Modules i i examples eib SessionManaged yo rnanan E SewerCon New E Server inste tee mem Generate Deploy Code Quick Links Delete Navigator J2EE View Figure 4 18 Run on Server A test client will now appear upon successful deployment on the server Please proceed to view the test client as well as view the actual testing 74 Accelerating IBM WebSphere Application Server Performance with Versant enJin Testing the application You will now be presented with a test an EJB Test client with which you can test your application as shown in Figure 4 19 There are several steps involved in proceeding We will step through each of these The first screen informs you that a constructor has not been selected 1 Expand the HRManager an
52. g technical and user manuals and has developed the documentation suite for Versant enJin His previous experience includes writing user manuals data modeling and writing applications for small businesses His current area of expertise includes application servers and EJB Thanks to the following people for their contributions to this project gt The team at Versant without whose contributions this book would not have been possible gt Tom Miura Executive Vice President and Chief Operating Officer Versant Corporation Fremont California gt Joe DeCarlo Manager IBM International Technical Support Organization San Jose California Become a published author Join us for a two to six week residency program Help write an IBM Redbook dealing with specific products or solutions while getting hands on experience with leading edge technologies You ll team with IBM technical professionals Business Partners and or customers viii Accelerating IBM WebSphere Application Server Performance with Versant enJin Your efforts will help increase product acceptance and customer satisfaction As a bonus you ll develop a network of contacts in IBM development labs and increase your productivity and marketability Find out more about the residency program browse the residency index and apply online at ibm com redbooks residencies html Comments welcome Your comments are important to us We want our Redbooks to be as helpful as possi
53. hancer utility gets automatically executed If you select the enJin Console window you will see the categorization of the classes as seen in Figure 4 10 66 Accelerating IBM WebSphere Application Server Performance with Versant enJin Enhance utility JVI 6 0 2 Copyright c 2000 versant Corperaton examples eb SessionManaged Departmert Persistent Capable examples eb SessionMonaged Employee Persistent Capable examples ef SessionManaged HRManager Not Persistent Aware examples eb SessionMonaged HRMsnogerBean Not Persistent Aware fexamples ejo SessionManaged HRManagerHome Not Persistent Aware Figure 4 10 enJin console Also in the Navigator view as shown in Figure 4 11 you will notice two new class files as seen below Department_Pickler_Vj and Employee_Pickler_Vj These are used by the Versant system to provide transparency of access and updates to persistent objects examples Eb ejb SessionManaged E Department_Pickler_ Vj class i Department class Employee_Pickler_ j class Employee class HRManager class HRM anagerBean class i i HRManagerHome class B amp S METAANF B S ejbModule f examples gt Eb ejb SessionManaged J Department java J Employee java J HRManager java D HRManagerBean java i J HRManagerHome java E META ANF classpath Figure 4 11 Navigator Chapter 4 Session managed persistence The next step involves creating a database where the objects that you have ide
54. has a persistence category A persistence category describes the Object Manager related capabilities of the class For example can objects be stored in the Object Manager If so when do the objects become persistent A persistence category also determines the modifications the enhancer must make to the class file for a class A configuration file is used to specify the persistence category for each class Each line of the configuration file contains a category specifier and a class name pattern When the enhancer encounters a class it looks for the first matching pattern in the configuration file and gives the class the category specified for that pattern In this section we will discuss gt Persistence categories gt How to choose a persistence category 2 3 1 Persistence categories Transparent JVI has five persistence categories Table 2 1 demonstrates two of these For the purposes of your applications these two categories will suffice For a more detailed explanation of this concept and to learn about the other three categories please refer to your JVI User Manual Table 2 1 Persistence categories c Persistent Capable Objects of classes that are Persistent Capable can become persistent either explicitly or implicitly Persistent Capable objects that have not yet become persistent are called transient Chapter 2 Key concepts 41 n Not Persistent Aware The enhancer does not modify classes that are Not Persistent
55. hat we have provided you with has all of the necessary Java files that you will need for running the example From the WSAD IDE select File gt Import as shown in Figure 4 1 J2EE Application Developer ezsetecserectrecececelsselesestieserecer NOROL O OORO git Figure 4 1 WSAD IDE Chapter 4 Session managed persistence 55 This will bring up the Import dialog box as shown in Figure 4 2 There are several steps to successfully importing the example The first step involves selecting the resource that you would like to import From this dialog box select EJB JAR as shown in Figure 4 2 and select Next Select Nij Import an external EJB JAR file into an EJB project E 1 Select an import source fel Application Client JAR file amp EAR file fr FEJB JAR file E File system fe FTP http HTTP Profiling file Server Configuration 5 UDDI Ea WAR file Zip file fore Cancel Figure 4 2 Import select Upon selecting Next a new dialog box as shown in Figure 4 3 will appear representing the second step of the import process Here you will be asked to provide the location of the EJB JAR file which can be found at http www versant com developer redbook 56 Accelerating IBM WebSphere Application Server Performance with Versant enJin arnet nice Figure 4 3 EJB import Select the Browse button and locate enjinSMPjar as shown in Figure 4 4 Chapter 4 Ses
56. he data server machine however much less processor time was used in the enJin condition since we were not performing updates to the RDBMS in real time The complex transaction scenario however shows that for both the application server and data server fewer CPU cycles were needed to service the complex transaction requests when using enJin rather than the baseline architecture Chapter 6 Benchmark results 101 So again we can see from Figure 6 4 that even though the enJin based architecture was servicing between 4 and 9 times as many requests and responding to each of these requests much faster than the baseline WebSphere architecture as shown in Figure 5 1 it produced this performance improvement while actually using generally fewer application server and data server CPU cycles 6 2 2 Memory utilization Figure 6 5 displays memory utilization for the same test runs as presented above Baseline AppSerer m enJinAppServer Baseline DataServer endin Data Serv er o Oo WwW WwW WwW wD Ww w pao NDD Lf Memory Utilization Gigabytes K wo ww z LA Simple Transaction Number of Test Harness Threads Complex Transaction Figure 6 5 Memory utilization for simple New Trade and complex New Portfolio transactions Figure 6 5 showing the simple and complex transactions clearly show that memory utilization was not at all a factor in the benchmark results The scales for
57. his is done by elimination of mapping objects to and from the relational world In addition enJin also enables you to get your products to the market faster by eradicating the need to know or develop in any language other than Java no SQL no JDBC or relational database programming Versant enJin is a flexible infrastructure platform that persists Java objects and EJBs within the middle tier without overloading your existing database systems enJin gives you J2EE capabilities combined with a transparent Java object persistence implementation It gives you the performance and scalability you need to accelerate your e business transactions across the Internet Use Versant enJin with IBM WebSphere Application Server to increase system throughput time to market and transactional response time This IBM Redbook is an in depth guide for implementation of Versant enJin Session Bean Persistence methodology development and deployment of your J2EE applications using IBM WebSphere Application Server It describes in detail the benchmarking project that was a joint undertaking with IBM and Versant In the latter part of the book you will learn about the benchmarking project that was conducted at the IBM Silicon Valley Laboratory in San Jose California in cooperation with the IBM High Volume Web Sites team In Part 1 we will describe and familiarize the reader with the methodology used in developing J2EE applications using Versant enJin as well as pro
58. hus far simply select Next The final dialog box will now appear This allows the user to specify the source and output folders as well as the Java classpath in the appropriate order Ensure you are in the Libraries tab as shown in Figure 4 7 Select the Add External JARs button and locate enjin jar which can be found at lt ENJIN_ROOT gt lib enjin jar and then select Finish 60 Accelerating IBM WebSphere Application Server Performance with Versant enJin Define Java Build Settings Specify the source and output folders as well as the Java classpath in the ES appropriate order 4 G Source tas Projects W Libraries TL Order JARs and class folders on the build path SERVERJDK_PLUGINDIR ire lib tt jar D WSAD_4 02 plugins ___Ereate Folder WAS_PLUGINDIR Jlib csicpi jar D7 AWSAD_4 02 plugins com it Add Folders 2 WAS_PLUGINDIR dlib ejbcontainer jar D AwWSAD_4 02 plugins WAS_PLUGINDIR Aib ivjejb35 jar D AWSAD_4 02 plugins com Add JARs 2 WAS_PLUGINDIRlib j2ee jar D WSAD_4 02 plugins com ibn Agd Extemal JARs WAS PLUGINDIFR dlib ras jar BD 4W SAD_4 02 plugins com ibm WAS_PLUGINDIR lb utils jar D WSAD_4 02 pluains com ibr dd Variable 2 W4S_PLUGINDIR lib vaprt jar D WSAD_4 02 plugins com ib z h enjinSMP imported_classes jar enjinSessionManagedEJB Aisen Build output folder reniins essionM anagedEJB bin Finish Cancel Figure 4 7 Java b
59. ify that the ages have indeed increased Deleting persistent objects You will continue to exploit the Transparency of enJin to delete objects This task is just as effortless as creating reading or updating objects Chapter 2 Key concepts 35 Persistent objects in the Versant Object Manager remain in the Object Manager until explicitly deleted To delete objects from the Object Manager use the TransSession deleteObject method The following program will delete an object with a given root name import com Versant trans public class DeletePersonWithRoot public static void main String args if args length 2 System out printIn Usage java DeletePersonWithRoot lt database gt lt root gt System exit 1 String database args 0 String root args 1 TransSession session new TransSession database Person person Person session findRoot root session deleteObject person session deleteRoot root session endSession Java does not support a delete operation for dynamically allocated objects Instead Java relies on garbage collection to rid memory of unreferenced objects However enJin does not use garbage collection since all objects are reachable via a query The deleteObject method deletes the persistent object from the Object Manager only not from memory To permanently delete an object each object must be explicitly deleted this way After deletion the object in memory
60. ilization In addition to measuring improvements in response times and transaction throughput utilization statistics for application server and database server resources were also collected This data was captured in order to determine what effect if any would occur in regards to the availability of system resources 100 Accelerating IBM WebSphere Application Server Performance with Versant enJin Does enJin place a greater burden on system resources or does it actually free up system resources because transactions are executed so much more quickly CPU utilization and available system memory were measured to investigate enJin s resource utilization characteristics 6 2 1 CPU utilization Figure 6 4 displays CPU utilization for simple and complex transaction conditions for the same test runs as presented in the analysis of response times and throughput 100 90 80 70 60 50 40 30 20 10 CPU Utilization T 2 Bi ko G E F 8B W E 2 Bf amp Pi Be wer ve Simple Transaction Number of Test Harness Threads Complex Trareaction Figure 6 4 CPU utilization for simple new trade and complex new portfolio transactions In Figure 6 4 we can see in the simple transaction scenario that enJin uses slightly more application server CPU time than the baseline in some conditions but overall there was no significant difference with the 10 threads condition actually using marginally less CPU time with enJin For t
61. imple New Trade and com plex New Portfolio transactions 102 Modify server configuration file 72 N Navigator 67 Network 93 Not persistent aware 42 O Object Manager Directory 19 Object model 87 Object navigation 31 Optimistic locking 18 Other runtime parameters 92 Overview of enJin 3 P Performance 8 performance benefits 95 Performance metrics 90 Persistence categories 41 Persistence categorization 41 persistence for Java objects 50 Persistence for Java objects and EJBs 8 Persistence tool 66 Persistent capable 42 Pessimistic locking 18 R Reading persistent objects 26 Redbooks Web site Contact us ix Resource Utilization 96 Resource utilization 100 response time gains 99 Response time performance and application server throughput 97 Response times for complex New Portfolio trans actions 98 Response times for simple New Trade transac tions 97 Response Time Performance and Application Serv er Throughput 96 Run on server 73 74 Running the enhancer 38 108 Accelerating IBM WebSphere Application Server Performance with Versant enJin S Scalability 8 103 scale of application s deployment 96 separate back end data 5 Session managed persistence 53 Session manager 43 simple application scenario 98 T Testing the application 75 The TransSession class 16 Time to market 7 Transaction management 44 Transparent data distribution 8 TransSession class 16 Types of locks 18 U Updating persistent obj
62. inding unifies the Java language with the Versant object database It allows applications to be written in a very natural way where some of the Java objects are completely persistent and transactional Persistent Java classes do not use any special syntax or conventions instead you declare classes to be persistent using a special tool the enhancer Your Java program can use a persistent object just like any other Java object For example you can call its methods read and write its fields use object references and collections and let other possibly persistent objects reference it Balanced client server network architecture JVI is an application interface to the Versant object database whose structure consists of multiple servers connecting to remote application clients The Versant client library caches objects providing fast object access and navigation within the application server while queries can be executed at the server using the Versant Query Language VQL Unlike a relational database system the server will not ship an object to the client if the object is already contained in the object cache Database access with transparent bindings Transparent binding helps to solve this problem of writing laborious mapping code by merging the Java and database object spaces With transparent binding persistent objects are seen in the application as regular Java objects JVI automatically manages the reading writing and locking of persis
63. information as the enhancement process proceeds If separate directories for enhanced classes are not required enJin can simply perform the enhancement in place and overwrites the non enhanced classes and replaces them with the enhanced class files The method of invoking the enhancer can be simply executed with the following command java com Versant Enhance Now that you have some exposure to the knowledge of how enJin makes objects persistent it is time to run the simple application we have developed In subsequent parts of this chapter you will continue to explore the transparency that enJin provides To run the application after having enhanced the class files simply invoke the Java interpreter as usual However it is very important to include the directory containing the enhanced class files in the CLASSPATH Failure to do so will result in run time errors Since your CLASSPATH contains the current directory represented by this can be accomplished simply using the command cd tutorial trans out In addition since the JVI libraries are implemented using native methods functions written in the C language the operating system must be able to locate the enJin s JVI dynamic link libraries These are located in the enJin bin subdirectory of your enJin installation On Unix machines the enJin lib directory is normally added to your LD_LIBRARY_PATH environment variable On Windows machines this directory is added to your P
64. ith the uenJin IDE Toolkit you will notice a new menu item enJin Database Tools two new buttons with enJin icons an enJin console With this integration that we have provided is also included a Template Generator that will enable developers to rapidly enJinify Applications utilizing Servlets and Bean Managed Persistence Utilization of these tools as well as developing your J2EE applications that leverage the power of enJin are described in subsequent sections 3 2 Introduction to the enJin tools and user interface After running the script that we have provided the next time you launch the WSAD IDE direct your attention to the toolbar You will notice a new menu item enJin Database Tools which are also represented as buttons on the toolbar as displayed in Figure 3 3 Chapter 3 Developing applications with Versant enJin 51 z a 52 J2EE App cation Developer Eie Edi Penpectwe Project enlin Dgtebe e Toos Window Hiep id o 5 gap s amp s wm 7 fe J2EE Vie Welcodie X Admi ER BE poca Welcome o bSphere Studio Appication Developer DB min Te l Gj Apphostian Dient Modules a Gp Web Modde The pge left you what pou shoukl know before pou stal developing anpicatone wih WebSphere GE J M hues Studicgipplicston Developer Click the highlighted inks to perform the described tasks Oder C Server Configurations DB Inspector CY Server instances DN 2 Navig 9 the woukbe Gp Databases
65. ject at a time Read and Write locks will block each other A read lock will block a request for a write lock and the request will be queued until all the read locks are released A write lock will block a request for a read lock and will be queued until the write lock is released Of course a read lock will not block any other request for a read lock Pessimistic locking As mentioned earlier this is the default locking model with enJin When an object is first read into cache a default lock typically a read lock is placed on the object When it is first modified the lock is implicitly upgraded to a write lock With pessimistic locking locks are held for the duration of the transaction and only released after a transaction is committed or aborted Optimistic locking The default pessimistic locking model is appropriate under most circumstances however suppose you have the following scenarios gt You want to read a large number of objects over a long period of time but update only a few gt But holding locks on all the objects could interfere with the work of others For situations such as these enJin provides optimistic locking that allows you to work with objects without holding locks For a more detailed description please see your ODB Documentation provided in your installation of enJin 18 Accelerating IBM WebSphere Application Server Performance with Versant enJin Creating persistent objects Persistent objects creat
66. lls made in the same transaction After the method has been executed the session is released gt Asan optimization enJin attempts to get the same session from the session pool across multiple transactions The same is true when invoking a non transactional method after a transaction method 2 4 3 Helper classes The purpose of this section is to introduce you to the concept of Helper classes enJin has been designed to augment your abilities to develop enterprise applications To augment your application performance and to accelerate the development process enJin s VEC provides Helper classes The Helper classes do a lot of the work in the background for you All you actually have to do is make the calls to these Helper classes By using these Helper classes provided in enJin you can leverage your current knowledge to start the process of development immediately You need not be an expert at using either Versant enJin s Object Manager or a seasoned JVI user To explain the intricacies of these classes is beyond the scope of this document Please review the accompanying documentation with your enJin installation enJin provides two Helper classes gt ClassEntityBeanHelper gt ClassSessionBeanHelper ClassEntityBeanHelper This class is the helper class to manage the session context BMP beans can use this class to implement EJB methods to Chapter 2 Key concepts 45 gt Allow the user to quickly develop bean managed entity bea
67. marking project and you will be able to utilize the same principles for your own example Copyright IBM Corp 2002 47 48 Accelerating IBM WebSphere Application Server Performance with Versant enJin Developing applications with Versant enJin Sphere MAGAZINE EDITORS CHOICE AWARDS Copyright IBM Corp 2002 49 50 Versant works with leading vendors to simplify the development and speed performance of applications using enJin Versant has integrated tools for enJin with WebSphere Studio Application Developer The integration of tools makes it easy and fast to use the enJin application accelerator in J2EE applications built using WebSphere Studio Application Developer WSAD enJin provides transparent persistence for Java objects in JSPs servlets sessions SMP and for BMP Enterprise Java Beans EJBs enJin lets you minimize tedious error prone and rigid mapping of Java objects Use enJin s transparent persistence instead of JDBC code Get faster development faster performance at run time and greatly increased ability to evolve your application as requirements change by using enJin Note Please download the enJin WSAD integration from the URL identified below This guide assumes that WebSphere Studio Application Developer as well as Versant enJin 2 2 3 for IBM WebSphere 4 0 for Windows NT is installed on your machine To download a trial version of Versant enJin please visit http www versant com products
68. me First let s make a new root by giving a name to an object The following example application CreatePersonWithRoot creates a new Person object and gives it a root name import com Versant trans public class CreatePersonWithRoot public static void main String args if args length 4 System out printIn Usage java CreatePersonWithRoot lt database gt lt name gt lt age gt lt root gt System exit 1 String database args 0 String name args 1 int age Integer parseInt args 2 String root args 3 TransSession session new TransSession database Person person new Person name age session makeRoot root person session endSession This application is exactly like the previous CreatePerson program except that it calls the TransSession makeRoot method instead of makePersistent This allows us to give the object a root name which is taken from the command line To run this application go through the same steps as described in the previous part of the tutorial Compile the java source file javac CreatePersonWithRoot java Enhance the class file and put output in subdirectory out java com Versant Enhance config config jvi in in out out verbose Run the application java CreatePersonWithRoot tutdb Mary 43 mary_root Chapter 2 Key concepts 27 This creates a persistent Person object identified by the root name mary_root This root name can be
69. n Persistence Tool You will now see the basic enJin Persistence Tool dialog box which allows you to categorize your classes in the basic categories as shown below The basic screen presents two options Not Persistent or Persistent The basic screen s Persistent option maps to the Persistent Capable option in the Advanced screen as well as in Versant s categorization system This categorization will suffice for the project we have been building thus far Simply select the Department and Employee class and move them to the Persistent section by using the arrows as shown in Figure 4 9 Chapter 4 Session managed persistence 65 fas Persistence Tool Not Persistent Persistent examples ejb SessionManaged HRManagerBean examples ejb SessionManaged Department examples ejb SessionManaged HRManager examples ejb SessionManaged Employee examples ejb SessionManaged HRManagerHome Figure 4 9 Persistence Tool The other classes are automatically categorized as Not Persistent Click OK after the categorization Upon identifying the categories of your classes and clicking OK the Persistence Tool generates a config jvi file which is then used as the input in the next step For the purpose of this example save this file in the same default directory You will now notice that the warning regarding the enhancer not being executed has disappeared This is because upon categorization the config jvi file gets generated and the en
70. ng the application Within the WSAD environment deployment and testing your application is relatively effortless You are just a few clicks away from running the Session Managed Example we have provided with Versant enJin Without further comment let us commence the process of deployment and testing There are four steps involved in this process They include 1 Deploy code 2 Modify server configuration file 70 Accelerating IBM WebSphere Application Server Performance with Versant enJin 3 Run on server 4 Test application Deploy code Select the project we have been building in the navigator view Right click with the project selected and select Generate from the choices presented Upon doing so you will be presented with three choices select Deploy and RMIC Tie code as shown in Figure 4 15 Figure 4 15 Deploy code This brings up another dialog box that allows you to select the bean you want to deploy Select HRManager as depicted in Figure 4 16 Chapter 4 Session managed persistence 71 Deploy and RMIC selected enterprise bean s Generate deployment code and RMIC stub and tie code The beans which changed during this session and need to be redeployed are selected Figure 4 16 Generate Select Finish Upon doing so WSAD performs numerous tasks for you behind the scenes The work that WSAD does allows you to now run and test your application Modify server configuration file You will need
71. ns and session beans that access persistent objects managed by enJin gt Makes it easy for EJB developers to store and query BMP entity beans by Managing the session context Implement EJB methods ejbLoad ejbStore ejbRemove and ejbCreate ClassSessionBeanHelper Helper class that may be used by SessionBeans to handle the persistence of objects The three scenarios for using this class could be gt When the SessionBean methods are being executed using container managed transaction gt When the SessionBean method being executed is non transactional gt When the SessionBean method being executed is using a user transaction Now that you know about yet another of enJin s unique features you are ready to start building an Enterprise Application the enJin way 46 Accelerating IBM WebSphere Application Server Performance with Versant enJin Part 2 Developing an enJin application In this part you will learn how to implement a methodology for developing and deploying a typical J2EE application using IBM WebSphere and endJin This will be done building and deploying a fully developed typical EJB application using Session Managed Persistence This will be done using WebSphere Studio Application Developer A downloadable JAR file will allow you to run and explore the example rapidly In presenting the example that we use you will learn the same methodology that resulted in the performance that we accomplished in the bench
72. nstead of explicitly creating a TransSession you request one from the pool The Session Manager provides gt Session Pooling Chapter 2 Key concepts 43 gt Default shared and exclusive session types also allows for custom session types gt Load balancing within a session pool gt Automatic cache management for the Versant Object Manager sessions A session pool can consist of any combination of the following types of Object Manager sessions as shown in Table 2 2 Table 2 2 Session pool i ae Read only shared Used for read only operation These sessions are not exclusively bound to a transaction These are typically used to process non transaction read only methods Read write exclusive Used for Read and Write operations Only one transaction can use this type of session for the duration of a transaction As sessions are shared resources once the transaction completes any client for a subsequent transaction can use the session This type of session would typically be used for transactional methods This is the default session type Custom You can create a class that implements any kind of session supported by enJin JVI 2 4 2 Transaction management Transaction Management is yet another feature that enJin offers that makes it easier and faster for developers to build applications As mentioned earlier in the document it is beyond the scope of this document to expose all of the functions of enJin The purpos
73. nt was run within the LoadRunner test harness package Chapter 5 Benchmark methodology 85 Configuration 2 shows that Versant enJin the enJin Object Manager has been added to WebSphere s EJB Container In this enJin based test architecture Versant s enJin takes over coordination of all of the persistence and transaction management services from WebSphere s EJB Container therefore reads and writes are made to the objects in the persistent store provided by the enJin object server This persistent state could then in turn be asynchronously propagated to a DB2 RDBMS but since the asynchronous mechanism of updating such enterprise data stores does not happen in real time these updates do not affect round trip benchmark times and so it was decided to simplify the benchmarking process and leave these updates out of the tests Of course since such updates can be configured to occur asynchronously the performance times detailed in this document apply equally to a configuration where updates are propagated from Versant enJin to a DB2 relational database The baseline architecture was implemented by an independent IBM business partner using J2EE standards IBM best practices for implementing WebSphere applications and using bean managed persistence techniques in order to gain the best performance for the baseline implementation The enJin based implementation was completed by Versant staff using best practices for J2EE and WebSphere as well as bes
74. ntified that are persistent will be stored You are just a few minutes away from deploying and testing your application 4 2 4 Create the database 68 To create the database run the DBAdministrator tool by either clicking the DBAdministrator icon or select enJin DatabaseTools gt DBAdministrator as shown in Figure 4 12 BIZ2EE Application Developer File Edit Perspective Project EME E ESAE Window Help Sy EG ae og Bis F I Epy ania asi isn Figure 4 12 enJin Database Tools Doing so launches a new window as seen in Figure 4 13 Select File gt Create Database and this will display a new dialogue box Accelerating IBM WebSphere Application Server Performance with Versant enJin EN DBAdmin Remove Database Properties Es enJin odb ENenJin odb 8_O_1 p 10 254 11 4 Bical ace a a a ae Exit Figure 4 13 Database create Please perform the steps in sequential order as demonstrated and you will have a database where the objects that you create will be stored as shown in Figure 4 14 Ensure that the server on which you to create your database has been selected Chapter 4 Session managed persistence 69 i435nt4 Figure 4 14 Create Database panel Note To eliminate any error please restrict the name of your database to ejbdb This will allow the example that we have provided to be deployed and run without any error 4 2 5 Deploying and testi
75. of business system which is typically a relational database The line of business system has no built in ability to handle the complexities of the object oriented models deployed in the application server Therefore an impedance mismatch occurs in moving from one model to the other A direct impact aside from the development testing and maintenance overhead imposed is the effect on performance Reconstituting an object from relational tables will involve n way joins and sorting a time consuming process not in line with today s real time processing requirements 4 Accelerating IBM WebSphere Application Server Performance with Versant enJin Next generation Web applications such as B2B exchanges aggregated portals and wireless workforce applications also require a robust and highly performing infrastructure These applications have the ambitious goal of providing differentiated user experiences while aggregating information from a variety of disparate sources They also use the Internet to integrate information from several sources such as internal applications partner applications and third party services To meet these challenges and support the emerging requirements we now need a set of middle tier services that help the application developer rapidly implement Web based applications that are reliable robust and scalable Middle tier solutions are being used today to manage transactions security and data access greatly reducing the prog
76. of different functions some of which are administrative in nature and allow the pre population of stock data as well the viewing of current data in the system For the purposes of obtaining a clear and concise set of benchmarks though two particular functions within the application were focused upon These functions were designed to examine the differences in performance characteristics between the traditional EJB RDBMS architecture versus the enhanced enJin based architecture when these two implementations were exposed to various operational complexities More precisely two application functions were designed so that performance could be examined for gt A simple operation gt A complex operation By testing the enJin based and traditional implementations under these differing conditions it was possible to determine the performance characteristics of the two approaches in the context of different application requirements These two operations were Chapter 5 Benchmark methodology 87 gt New trade simple gt New portfolio complex The new trade transaction is a fairly simple operation since it merely involves the alteration of one of the positions within an account and the addition of a new trade entry In contrast the new portfolio operation involves the creation of a new portfolio a new position a new trade and an association between the position and a stock Instrument and so provides a more complex set of interactions to
77. operator as usual The TransSession makePersistent method causes the given object to be stored persistently in enJin s Versant Object Manager Ending the session causes the active transaction to commit To commit a transaction without ending the session use the TransSession commit method To compile the classes of an enJin application simply invoke the Java compiler as usual No special action needs to be taken However it is Chapter 2 Key concepts 23 necessary to correctly set the environment variable CLASSPATH so that the enJin classes can be accessed by the compiler These classes are located in the enjin jar file in the ENJIN_ROOT Iib directory Add the enjin jar file to your CLASSPATH environment variable In addition it is necessary to add the directory containing the Java source files to your CLASSPATH This can be done by including the current directory represented by a single period The exact method for setting CLASSPATH depends on the system being used Please refer to your Java documentation for correctly setting CLASSPATH To compile the two Java classes javac Person java CreatePerson java Note The process of enhancement is explained in more detail later in this chapter However for the purpose of this section we will demonstrate enhancement of the class Person and CreatePerson files we have just compiled on the next page A configuration file usually named config jvi controls the behavior of the enhancer
78. ormance with Versant enJin Figure 6 2 shows the response time performance gains are even greater for more complex application scenarios and again enJin s performance was more stable as workload increased enJin was 9 6 times faster for a single test harness thread 190 milliseconds versus 1820 milliseconds and 6 2 times faster with 10 concurrent test harness threads 600 milliseconds versus 3730 milliseconds Again these response time gains were made even though enJin was responding to many more requests up to 8 3 times as many requests as shown in Table 6 2 Table 6 2 Throughput as measured by transactions per second for complex Fear DA a Sa a a a ed 10 82 12 42 13 49 14 00 14 15 14 16 13 54 So for both Simple and Complex transactions adding enJin to a standard WebSphere J2EE application can cut response times by as much as 89 while simultaneously improving the number of requests that can be serviced by as much 755 both of these estimates taken from complex 1 thread condition All of the response time data presented above is purely for round trip response times in other words the response times that an end user will experience In order to get a better picture of the internal performance differences log timings were also taken at key points within the internal application execution in order to isolate just the data access times Figure 6 3 shows the performance of the baseline and enJin enhanced implementa
79. ows is a list of the benefits of Versant Corporation s enJin solution 1 3 1 Ease of development enJin allows you to leverage its transparent object persistence capabilities It allows developers to use Bean or Container Managed Persistence JavaServer pages or serviets You can define complex data models without the need for mapping code In addition as enJin allows the developer to utilize its resource and connection pooling capabilities for integrated connections and transaction management 1 3 2 Time to market With enJin the development effort can focus on modelling of business objects Due to it s transparent object persistence capabilities there can be up to a 40 reduction in development time since there is object sharing and reuse and the resultant significantly less code that is required Chapter 1 Overview ofenJin 7 1 3 3 Scalability enJin s enables caching of data within the application server environment This can reduce the load on existing business systems and allows for 1000 s of concurrent users accessing common data EnJin scales way beyond the limitations of simple in memory caching solutions and is able to handle hundreds of gigabytes of data 1 3 4 Performance enJin significantly reduces response and wait times by de coupling completion of transactions form back end systems It is advanced navigational access mechanism allows traversing from one object to another eliminating the use of expensive joins
80. persistent objects can be categorized as Not Persistent Aware For example all standard Java classes are categorized as Not Persistent Aware by default In general third party classes that do not access the fields of persistent objects can be given the n category 42 Accelerating IBM WebSphere Application Server Performance with Versant enJin 2 4 Versant enterprise container Versant Enterprise Container VEC is the integration of enJin s JVI with your Application Server It provides transaction management concurrency control and persistence for entity beans in the Versant Object Manager or allows you to use enJin s transparent object management capabilities directly from your SessionBeans You will be exposed to several of the functions of VEC when you begin to build your EJB Applications in the subsequent chapters Specific topics covered in this section include gt Session manager gt Transaction management gt Helper classes 2 4 1 Session manager enJin s VEC Session Manager maintains and manages one or more Object Manager session pools A session pool is a collection of Object Manager sessions of a particular session type An enJin session is similar in concept to a JDBC connection with the key differences that enJin sessions cache objects and they can be connected to several Versant Object Managers In the default configuration the Session Manager simplifies the job of managing instances of the TransSession class i
81. plication programs conforming to the application programming interface for the operating platform for which the sample programs are written These examples have not been thoroughly tested under all conditions IBM therefore cannot guarantee or imply reliability serviceability or function of these programs You may copy modify and distribute these sample programs in any form without payment to IBM for the purposes of developing using marketing or distributing application programs conforming to IBM s application programming interfaces Copyright IBM Corp 2002 All rights reserved v Trademarks The following terms are trademarks of the International Business Machines Corporation in the United States other countries or both Balance Redbooks Redbooks logo Cd DB2 SP VisualAge IBM VisualAge WebSphere Netfinity WebSphere Perform IBM eServer The following terms are trademarks of International Business Machines Corporation and Lotus Development Corporation in the United States other countries or both Lotus Word Pro The following terms are trademarks of other companies Versant and enJin are trademarks or registered trademarks of the Versant Corporation in the United States and or other countries ActionMedia LANDesk MMX Pentium and ProShare are trademarks of Intel Corporation in the United States other countries or both Microsoft Windows Windows NT and the Windows logo are tra
82. plication between multiple instances of enJin located over a LAN or a WAN The flexible configuration allows batch or transactional replication driven automatically or explicitly via API and supports conflict detection and resolution in the case of duplicate updates Chapter 1 Overview ofenJin 9 1 4 4 Active data management You often need the ability to build solutions that are able to react to changes Versant enJin provides an automatic notification capability that you can use to register interest in changes to your Java objects and automatically receive notification as these changes happen This capability is at the core of enJin s data replication feature and is available to you to develop your own event driven solutions 1 4 5 XML interchange The ability to handle XML data is vital to many e business applications Versant enJin supports conversion to and from Java objects stored in the middle tier and XML XML documents can be generated from object graphs and object graphs can be generated from XML documents This capability can be used to exchange information with different and disparate sources and or provide a means of simplifying manipulation of complex XML documents by first converting them to objects 1 4 6 Hot standby for e business transactions Today s e businesses require 100 uptime Versant enJin can be used in conjunction with application server clustering and or hardware clustering and high availability solutions In
83. program illustrates the use of deleteRoot import com Versant trans public class DeletePersonWithRoot public static void main String args if args length 2 System out printIn Usage java DeletePersonWithRoot lt database gt lt root gt System exit 1 String database args 0 String root args 1 TransSession session new TransSession database session deleteRoot root session endSession Finding objects with queries enJin provides a query language VQL Versant Query Language to search for persistent objects that match certain criteria VQL is a language that is very similar to the SQL that is used to query relational databases enJin supports simple VQL queries These queries can be used to find objects that have been stored using the Object Manager The purpose of this section is to introduce you to using VQL to access objects For more information on using VQL with enJin see the VQL section in the J VERSANT Interface Users Manual Transparent JVI expresses VQL queries by creating a VQLQuery object The constructor accepts a query string argument Some values such as arrays and strings are difficult or impossible to express in VQL To solve this problem use substitution parameters A substitution parameter is written as 1 2 and so on in the query string You can then substitute the values with the bind method on the VQLQuery object Chapter 2 Key concepts 29
84. r it under the VERSANT root database directory To create the database directory for the Object Manager tutdb run the makedb utility makedb tutdb This creates a subdirectory owned by you under the VERSANT root database directory To see the location of this root directory use the oscp utility oscp d In addition the makedb utility creates front end and backend profiles we will not be using these profiles in the tutorial Consult your VERSANT Database Administration Manual for more information on database profiles Create the Object Manager To create the Object Manager use the createdb utility createdb tutdb Chapter 2 Key concepts 19 This creates the database data volumes and log files in the database directory tutdb Using the WSAD IDE to Create the database To create the database run the DBAdministrator tool by either clicking the DBAdministrator icon or select enJin DatabaseTools gt DBAdministrator as shown in Figure 2 1 g J2 E Application Develope DBAdministrator CHKJZ200W The field is static but not final Read section 18 1 2 of the EJB 1 1 spec cation Figure 2 1 DBAdministrator Doing so launches a new window as shown in Figure 2 2 Simply select File gt Create Database and this will display a new dialogue box 20 Accelerating IBM WebSphere Application Server Performance with Versant enJin Peeves List tor Site localhost f somre Figure 2 2 Create database
85. r section This application will also find these employee objects Chapter 2 Key concepts 33 Java FindPersonWithVQL tutdb Running the application will display the following output Found Person Bob age 29 Found Employee The Boss age 42 salary 11000 0 Department Engineering manager The Boss Found Employee Jane Jones age 24 salary 80000 0 Department Engineering manager The Boss Found Employee John Doe age 25 salary 75000 0 Department Marketing manager Lois Line Found Employee Lois Line age 36 salary 70000 0 Department Marketing manager Lois Line Since the Employee class extends Person these Employee objects are also Person objects This is why the VQL query above matched the Employee objects as well Updating persistent objects You will notice that the transparency of enJin makes changes to objects that have been created effortless The example illustrated below shows how to modify persistent objects Like the previous program it finds all person objects This time however instead of simply displaying the contents of the object the age of each Person object is increased by one since we are all getting older every year import com Versant trans import java util public class IncreaseAge public static void main String args if args length 1 System out printin Usage java IncreaseAge lt database gt System exit 1 String database args 0 TransSession session n
86. r service that does not infringe any IBM intellectual property right may be used instead However it is the user s responsibility to evaluate and verify the operation of any non IBM product program or service IBM may have patents or pending patent applications covering subject matter described in this document The furnishing of this document does not give you any license to these patents You can send license inquiries in writing to IBM Director of Licensing IBM Corporation North Castle Drive Armonk NY 10504 1785 U S A The following paragraph does not apply to the United Kingdom or any other country where such provisions are inconsistent with local law INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION AS IS WITHOUT WARRANTY OF ANY KIND EITHER EXPRESS OR IMPLIED INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF NON INFRINGEMENT MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE Some states do not allow disclaimer of express or implied warranties in certain transactions therefore this statement may not apply to you This information could include technical inaccuracies or typographical errors Changes are periodically made to the information herein these changes will be incorporated in new editions of the publication IBM may make improvements and or changes in the product s and or the program s described in this publication at any time without notice Any references in this information to non IBM Web
87. ramming burden on application developers But to be successful your company needs to support the following advanced middle tier services Content management Workflow Personalization Real time analysis Publish subscribe YYYY Y Versant s approach unique in the industry manages these middle tier services by separating the back end data typically stored in a relational database from the middle tier Versant calls data found only in the middle tier intermediate data to support the application logic running there Examples include gt Business intelligence data data captured in the middle tier and used to provide personalized marketing gt Meta data data that describes how to interact with back end systems and legacy databases gt Workflow data data that describes business rules and the state of ongoing business processes gt Session data data that is relevant only to the on going interaction with an e business application for example shopping cart data While many tools exist for managing business data intermediate data is often created in an inefficient and ad hoc manner And while in memory caching solutions provide an object layer on top of an existing relational database they lack the agility needed to scale and develop new applications rapidly Versant enJin lets developers isolate the transactional load to the middle tier and alleviates the impact of the Internet on business logic Additionally Versant enJin au
88. re Application Server Performance with Versant enJin 1 Baseline Web Sphere Architecture 2 Enhanced Architecture using enJin LoadRunner Test Client Machine A LoadRunner Test Client Web Server Web Server WebSphere Servet Engine Machine B WebSphere Serie Engine E JB E JB E JB a x e 2nin Objed Manager WebSphere EJB Container WebSphere Application Server WebSphere EJB Container WebSphere Application Server z enJin Object Server DB2 RDBMS Machine C a Figure 5 1 Application architecture The representation above shows both the standard benchmark architecture as well as the architecture enhanced by adding Versant s enJin The standard architecture provided the baseline for measuring performance improvements due to the use of enJin s object caching facilities As can be seen in Configuration 1 the standard architecture consisted of IBM WebSphere Application Server running on a machine being served requests by IBM s HTTP server WebSphere was configured to run both a servlet engine as well as an EJB Container running several session and entity beans The entity beans had their persistent state managed via Bean Managed Persistence code and this persistent state was maintained in a DB2 relational database RDBMS on a separate machine In order to take round trip performance measurements a third machine accessed the Web server and made HTTP requests for certain test actions to be made This test clie
89. re running any of the benchmark tests the application database was pre configured with data for 500 different users as well as other context data including companies accounts and other related information This context data totaled approximately 10 MB of pre test data 5 5 Hardware configuration The hardware configuration is as follows LoadRunner Client gt IBM Netfinity 8500R 4x PIll Xeon 550Mhz 2560 MB SDRAM ECC 10 100 Mbps Ethernet Microsoft Windows NT 4 0 Service Pack 6 LoadRunner 6 5 client software 92 Accelerating IBM WebSphere Application Server Performance with Versant enJin Web amp WebSphere Server gt Sun Ultra 80 4x UltraSparc ll 450 Mhz 4MB Level 2 cache 4096 MB RAM 10 100 Mbps Ethernet SunOs 5 8 IBM HTTP Server v1 3 19 IBM WebSphere Application Server Advanced Edition v3 5 3 Versant enJin 2 1 DB2 RDBMS Server gt Sun Ultra 80 4x UltraSparc ll 450 Mhz 4MB Level 2 Cache 4096 MB RAM 10 100 Mbps Ethernet SunOS 5 8 IBM DB2 6 1 fixpack6 Versant enJin 2 1 Network gt All machines on 100 Mb s switched fast Ethernet Chapter 5 Benchmark methodology 93 94 Accelerating IBM WebSphere Application Server Performance with Versant enJin Benchmark results Versant s enJin provides a unique way of managing such new demands by providing facilities for high speed persistence of intermediate application data
90. rent session and implicitly commits the current transaction commit public void commit This commits the current transaction and implicitly starts a new one This method commits all object modifications within the session and releases any related locks held by this transaction An object modification could be an update of any field of an existing persistent object or an update or creation of a persistent object Objects explicitly made persistent through the makePersistent method call or those deleted through the deleteObject method call would also become committed Locking enJin provides several options for locking Locks provide guarantees that allow multiple processes to access the same objects at the same time in a cooperative controlled and predictable manner There are two types of locking models optimistic and pessimistic Pessimistic locking is the default locking model in enJin This section will provide a brief description on both models For a more detailed description please see your ODB documentation provided in your installation of enJin gt Types of locks Chapter 2 Key concepts 17 gt Pessimistic locking gt Optimistic locking Types of locks Two types of locks are used for concurrency control A read lock RLOCK is a shared lock and any number of applications can read the same object at the same time A write lock WLOCK is an exclusive lock and only one application is allowed to write an ob
91. rsant Interface and in this instance the TransSession class However to be able to leverage the transparency provided by enJin users do need to have to some knowledge about this class and its methods A brief introduction to this class and its methods are presented below For more details please refer to the JVI User s Manual which can be found in the lt ENJIN_ROOT gt doc jvi directory This class embodies the Transparent Session concept and provides methods that allow application programs to interact with the Object Database Listed below are the methods that we will be using in subsequent sections as well as some that we will not use but may be useful to you when using enJin makePersistent public void makePersistent java lang Object obj 16 Accelerating IBM WebSphere Application Server Performance with Versant enJin Makes an object persistent after commit makeRoot public void makeRoot java lang String rootName java lang Object obj Associates an object with a unique name and makes the object persistent after commit findRoot public java lang Object findRoot java lang String rootName Returns the object with the given root name after commit deleteRoot public void deleteRoot java lang String rootName Deletes the named root association after commit deleteObject public void deleteObject java lang Object obj Deletes a persistent object after commit endSession public void endSession Ends the cur
92. s Person person Person e nextElement System out print n Found person session endSession 30 Accelerating IBM WebSphere Application Server Performance with Versant enJin The following program finds all Person objects located in a database Compile enhance and run this application using steps similar to those shown previously Compile the java source file javac FindPersonWithVQL java Enhance the class file java com Versant Enhance config config vj in in out out verbose Run the application java FindPersonWithVQL tutdb Running the application gives the following output Found Person Bob age 28 Found Person Mary age 43 Object navigation Navigation retrieves objects by traversing object references Starting with an object obtained prior to navigation that contains a reference the referenced object is retrieved based on its unique object ID that was assigned by the Object Manager Rather than retrieving all objects with queries or only by using navigation a combination of the two with a predominance of navigation is the best combination for flexibility and performance References are extremely easy to use You simply define your classes in exactly the same way that you would when writing a normal application The enhancer takes care of all of the work of converting references to links and fetching objects from the Object Manager when they are accessed To illustrate how
93. s Write the code for your business logic For transactional business methods that need to access enJin objects add this call at the beginning of each business method in every method of the session bean you can get hold of a session bean helper using the call Transession session helper getSession this The session is accessed from the pool that was initialized at the startup of the application server This session bean helper maintains a reference to the enJin session that has been assigned to the current transaction This method below creates instances of the Department object public void createDepartment String depName throws Exception say Session Bean gt createDepartment called try TransSession session helper getSession this Department currentDepartment new Department depName session makePersistent currentDepartment catch Exception e say Exception in creation of Department throw e For non transactional methods vejbPreMethod must be invoked which basically does the same job as getSession but returns com versant ejb common VEJBSessionContext To get hold of an enJin session TransSession for doing database operations getTransSession method can be invoked on VEJBSessionContext You can get the session referenced by the session helper by VEJBSessionContext sc helper vejbPreMethod this TransSession session sc getTransSession Every vejbPreMethod should be follo
94. s w examples ejb SessionManaged _HRManagerHome_Stub create HRManager examples ejb SessionManaged HRManager_Stub Work with Object Figure 4 21 EJB test You will now notice that References pane on the left side of your screen will have changed Upon expanding the HRManager you will be able to call upon the methods Of course the first method would be to CreateDepartment in which you can then add employees newEmployees Enter a department name and click the Invoke button again You will see in the Results pane as shown in Figure 4 22 showing that the method was created successfully You may now add other departments employees or execute any of the other methods that are visible in the EJB References pane Chapter 4 Session managed persistence 77 IEM EJB Test Client A Gea eoa J References D RS Parameters T References Void createDepartment String ES HRManager i HRManagerHome 5 3 HRManager 1 2 java lang String Marketing oF als mO void createDepartment boolean findDepartment String findDeptOFEmplo boolean findEmployee S Vector getDepartments ie Vector getEmployees Str l void hewEmployee Strind i HO void removeDepartmentt D Object References No object references available B P Class References H No object references available Load Class li Results
95. s with using enJin The remaining of this chapter will cover these concepts some that you may already be familiar with and some that may be new to you the unique features of enJin Copyright IBM Corp 2002 13 The topics covered in this chapter include enJin s transparent Java language interface Class enhancement Persistence categorization Versant enterprise container YYY Yy 2 1 enJin s transparent Java language interface enJin s Java Versant Interface JVI provides complete transparent persistence for Java objects without any changes in the Java class model Java objects are stored and shared between applications without mapping In addition JVI provides a rich interface allowing developers to take full advantage of the performance benefits of enJin s object management capabilities Topics included in this section include gt Overview of JVI gt Architecture of JVI gt JVI operations 2 1 1 Overview JVI combines the features of the Java programming language and the enJin s Versant Object Database to provide efficient easy to use storage of persistent objects It is built on Java a language whose flexibility and performance has proven valuable on all levels of complex two and three tier applications JVI embraces the Java philosophy providing persistence that fits naturally in the Java language All JVI programs are written using pure Java syntax and semantics No special keywords have been added to the
96. session new TransSession database Person person new Person name age session makePersistent person session endSession The example demonstrated above makes a persistent object using the following process 1 Importing the JVI TransSession class To import this class into the namespace of the application program use the Java import directive This class is located in the package com Versant trans Before any persistent objects can be created you must connect to the Versant Object Manager by starting an Object Manager session Starting an Object Manager session initiates enJin processes that allow you to access the enJin Object Manager You can then use enJin Object Manager methods and persistent objects only within the session In the Transparent binding starting an Object Manager session is achieved by creating a new instance of the TransSession class The constructor for this class takes the name of the Object Manager as a parameter For more information on the available options when starting a session see the reference to the TransSession class in the JVI User Manual Starting a session also implicitly starts a transaction All changes to persistent objects are written to the Object Manager only if the transaction successfully commits Since the Person class will be designated as a persistent class in the configuration file no special code must be written to create persistent Person objects Simply invoke the new
97. should not be accessed The object will be deleted from the Object Manager at transaction commit Deleting an object is not the same as deleting a root deleting a root simply removes the root name associated with the object and does not delete the object from its database Now compile enhance and run this program as we have been doing earlier Compile the java source file javac DeletePersonWithRoot java Enhance the class file 36 Accelerating IBM WebSphere Application Server Performance with Versant enJin java com Versant Enhance config config vj in in out out verbose Run the application java DeletePersonWithRoot tutdb mary_root Running the same program a second time generates an exception because the object was deleted and the root name removed 2 2 Class enhancement Enhancement is where the magic of the JVI transparency takes place The enhancer is a tool that post processes Java class files by modifying the classes after they are compiled so that your Java objects can be managed in the Object Manager To get a true understanding of the process of enhancement we will discuss the following topics gt Overview This will describe what happens when you enhance gt Running the Enhancer 2 2 1 Overview The enhancer is termed a postprocessor because it manipulates Java class files not java source files The enhancer accepts Java class files as input and produces modified class files as output enJin s J
98. sion managed persistence 57 58 ESI Figure 4 4 EJB import open Provide a name we will use enjinSessionManagedEJB in the text box titled EJB Project and Enterprise Application project name we will use enjinSessionManagedEAR The dialog box when completed will appear as shown in Figure 4 5 Accelerating IBM WebSphere Application Server Performance with Versant enJin Import EJB Import Import an EJB JAR from the file system e prinsessorna Figure 4 5 EJB import Select Next after completing the fields as shown above Figure 4 6 shows the dialog box that appears allows the user to select specific files that they would like to select Since all of the Java files within enjinSMP jar are required simply select the radio button titled All Files and then select Next Chapter 4 Session managed persistence 59 EJB Selected Import Selective resources import ES y Which files do you want to import All Files Selected files by enterprise beans All Files in JAR examples ejb S essionM anaged Departme E examples ejb SessionManaged Employee examples ejb SessionManaged HRMana E examples ejb SessionManaged HRMana E examples ejb SessionManaged HAMana zl SelectAll Beselect All SelectAll Figure 4 6 Import selection The next step allows the user to establish if there are any module dependencies Since there are none for the project that we have been building t
99. sses that refer to the fields of the persistent class will no longer compile correctly when using in place enhancement Hence it is necessary to compile all of these classes simultaneously to ensure correct compilation As an example consider the following classes class PersistentCapable int x class NotPersistent int foo PersistentCapable pc return pc x 3 The following would not work correctly javac PersistentCapable java java com Versant Enhance PersistentCapable class javac NotPersistent java Here the PersistentCapable class has been enhanced in place Now when NotPersistent is compiled a compilation error will result because the field x has been changed to private The access control is changed to prevent unenhanced persistent aware classes from accidentally accessing the fields of a persistent object at run time By making the field private this situation can result in an IllegalAccessError instead of silently giving invalid results 40 Accelerating IBM WebSphere Application Server Performance with Versant enJin Instead you should do this javac PersistentCapable java NotPersistent java java com Versant Enhance PersistentCapable class NotPersistent class For more information on the enhancer including command line arguments and the syntax of the configuration file see the description of com Versant Enhance in the JVI User Manual 2 3 Persistence categorization Each class in enJin s
100. t conducted at the IBM Silicon Valley Lab in San Jose are covered Part 1 describes the methodology used in developing J2EE applications using Versant enJin Part 2 covers how to implement the methodology into developing and deploying a typical J2EE application using IBM WebSphere and enjin Part 3 describes the details of the benchmarking project that was done including the methodology the application architecture the performance metrics and hardware configuration SG24 6561 00 ISBN 0738425109 Redbooks INTERNATIONAL TECHNICAL SUPPORT ORGANIZATION BUILDING TECHNICAL INFORMATION BASED ON PRACTICAL EXPERIENCE IBM Redbooks are developed by the IBM International Technical Support Organization Experts from IBM Customers and Partners from around the world create timely technical information based on realistic scenarios Specific recommendations are provided to help you implement IT solutions more effectively in your environment For more information ibm com redbooks
101. t practices for enJin based development This included the use of session managed persistence techniques in order to optimize enJin performance 5 1 1 Business domain model 86 The object model shown in Figure 5 2 shows that users are managers of stock trading accounts The users that this application models are fund managers for corporate stock trading accounts Each account contains all of the portfolios that are managed on behalf of a particular company by one of the fund manager users Each stock trading account is composed of a number of portfolios each of which represent the composition of a set of stock positions for a particular industry or market segment A position represents a holding of shares each share option or other type of stock entity being modeled as a stock Instrument Each position is also composed of a history of trades and each instrument or stock is composed of a single specific current price quote The dotted line boxes shown in the diagram represent the grouping of business objects into course grained entity beans producing a set of four entity beans for the application user instrument account and company entities Accelerating IBM WebSphere Application Server Performance with Versant enJin Figure 5 2 Object model This object model was used as the basis of both implementations of the stock trading application used for the present benchmarking tests The application is comprised of a number
102. tent objects as they are accessed by the application Chapter 2 Key concepts 15 2 1 3 JVI operations This section of the document will demonstrate the ease of using enJin s transparent object management into your applications The complete transparent persistence for Java objects makes object management effortless If you are familiar with object oriented development and Java you can immediately start to use the power of enJin to enhance your application performance In this section we will build a simple application through which you will learn how to use enJin to First steps Create persistent objects Read accessing persistent objects Update to write changes persistent objects Delete persistent objects YYYY Y First steps Prior to proceeding with enJin s JVI operations there are two concepts that we would like to introduce as both of these concepts are unique to enJin these will provide a foundation that will facilitate comprehension of enJin s Transparent Java Interface This section will cover gt The TransSession class gt Locking The TransSession class enJin provides the TransSession class to encapsulate a connection with the Versant object database similar to what you may have experienced with JDBC while establishing connectivity with your relational database except the TransSession class does much more It is not the intention of this document to coach users on how to be experts at using enJin s Java Ve
103. tions at the point where enJin actually targets its performance optimizations the time taken within the application just to access the persistent store Chapter 6 Benchmark results 99 200 180 160 140 120 Sendin 80 60 40 20 Average Response Times milliseconds Number of Test Harness Threads Figure 6 3 Internal timing of data access component of round trip transaction times As shown in Figure 6 3 when the data access component of response times is isolated from all of the other activities within a full round trip execution of a transaction the performance benefits of enJin are highlighted even further This data is taken from the complex transaction executions for the same test runs as shown in Figure 6 2 Comparing just the data access times then enJin cuts between 96 4 and 97 4 of the data access latency for complex transactions Similar data was found for simple transactions not shown where data access times within the application were cut by between 90 4 and 94 4 when comparing enJin to the baseline RDBMS only architecture So at a minimum data access latency within an applications execution is only 9 6 the amount of time needed for an update or query to a relational database and may be as little as 2 6 the time taken to query or update a relational database rather than query or update enJin s object cache and have the relational database updated asynchronously 6 2 Resource ut
104. tions to access enterprise data without having to synchronously store or retrieve this data from a relational database during every transaction So within each business transaction the user does not need to wait for the information to be retrieved from or propagated to backend systems before the application can respond to the user s request For this reason Versant calls its enJin product a transaction accelerator enJin however does not merely provide a copy of relational data in each application server Instead enJin transparently replaces the persistence and transaction management capabilities of its host application server in order to provide transparent state management of objects such as Entity Beans without the developer having to write enJin specific code This object cache is built upon Versant s sixth generation object oriented database technology the Versant ODBMS and so provides a robust object caching facility with well proven persistence capabilities Copyright IBM Corp 2002 3 A simple in memory caching mechanism would lose committed data if the application server failed or would become inconsistent between application servers within a cluster Since enJin is built upon the persistence mechanisms of an enterprise class ODBMS however all committed data is stored in a persistent object cache which is able to survive server crashes enJin also overcomes any possibility of data inconsistency between application servers in a
105. tomatically propagates the business transaction to the relational database upon completion or through rules based policies The upshot is increased Chapter 1 Overview ofenJin 5 flexibility and scalability without compromising robustness or reliability Customers can realize up to 50 times application performance improvements and can speed time to market by up to 40 reduction in development time frames 1 2 Architecture As illustrated in Figure 1 1 enJin exists in the middle tier in conjunction with the business logic provided by Session and Entity Beans running within a J2EE Application Server environment When Session or Entity Beans read data they simply read the objects from the in memory cache running within the same application server and this data is guaranteed to be consistent with the object caches of all other application servers within the cluster by virtue of the synchronization mechanism between the in memory cache and the shared persistent object cache Similarly when a Session or Entity Bean updates an object it is transparently updated to the in memory object cache and within the boundaries of the transaction is updated to the shared persistent cache this guarantees the integrity of the transaction Cent Ter Meo Spliere Servet Engine Middle Ter Builne n Obpet P endin Object Cache P endin Object Cache heb Splisns El 6 Contan i ha hspli ere EJE Container ebSpliers Application serwer p a Opplic
106. uild settings At this point you will have a fully developed enterprise application with enJin Session Bean Implementation Prior to proceeding to the next step in running this application let us examine what is involved in using this powerful approach 4 2 2 Implementation of enJin session managed persistence The process for development using this approach is no different from traditional SessionBean development When you examine the code in any of the classes you may notice that there is nothing different from what would normally appear in these classes The only difference is in the HRManagerBean java code The steps required for implementation of Session Bean Persistence the enJin way involves the following Chapter 4 Session managed persistence 61 Configure the datasource and poolname The VEC configuration file vec config xml is an XML file that is used to specify the session pool properties and other properties such as logging level This configuration file is used by the VEC Startup class to initialize Versant session pools during WebSphere startup A Versant session is similar in concept to a JDBC connection with the key differences being that Versant sessions cache objects and a Versant session can be connected to several Versant databases The following are the parameters for initializing VEC Session Pools Datasource name Session pool name Initial number of sessions Maximum number of sessions YYY Yy A sample
107. used to subsequently retrieve the object using the TransSession findRoot method The findRoot method returns an instance of Object so a typecast must be used to recover the actual type Person If no root has the given root name then findRoot throws an exception Please proceed to the next page for the demonstration of findRoot method The following program illustrates the use of findRoot import com Versant trans public class FindPersonWithRoot public static void main String args if args length 2 System out printIn Usage java FindPersonWithRoot lt database gt lt root gt System exit 1 String database args 0 String root args 1 TransSession session new TransSession database Person person Person session findRoot root System out println Found person session endSession Now compile enhance and run the FindPersonWithRoot application Compile the java source file javac FindPersonWithRoot java Enhance the class file java com Versant Enhance config config vj in in out out verbose Run the application java FindPersonWithRoot tutdb mary_root Running the application gives the output Found Person Mary age 43 28 Accelerating IBM WebSphere Application Server Performance with Versant enJin Deleting a root is just as effortless simply use the TransSession deleteRoot method to delete an associated root name The following
108. vec config xml file is displayed below lt DOCTYPE vec config View Source for full doctype gt lt vec config gt lt log 1level gt debug lt 1log level gt lt session pool gt lt pool name gt ejbPool lt pool name gt lt data source gt ejbdb lt data source gt lt session pool gt lt vec config gt For our example we have used ejbdb and ejbPool You may choose to specify the initial number of sessions as well as the maximum number of sessions in the pool Declare a static variable of type SessionBeanHelper Versant enJin provides a helper class com versant ejb generic SessionBeanHelper that makes it easy for non expert users of enJin API s to take advantage of enJin s object management capabilities and handle the persistence of objects In your Bean class declare a static variable say helper of type SessionBeanHelper as follows static SessionBeanHelper helper null Initialize the SessionBeanHelper Instantiate the class in your setSessionContext method as follows public void setSessionContext SessionContext ctx throws RemoteException 62 Accelerating IBM WebSphere Application Server Performance with Versant enJin say setSessionContext called _ctx ctx helper SessionBeanHelper GetInstance this POOLNAME say setSessionContext got SessionHelper The instantiation of this class makes the coding of the business methods that need to be executed within Versant transactions effortles
109. vide information about enJin that will enable your team to fully understand the components architecture benefits and features of enJin In Part 2 you will learn how to implement the methodology in developing and deploying a typical J2EE application using IBM WebSphere and endJin This will Copyright IBM Corp 2002 All rights reserved vii be done building and deploying a fully developed typical EJB Application using Session Managed Persistence This will be done using WebSphere Studio Application Developer A downloadable JAR file will allow you to run and explore the example rapidly In presenting the example that we use you will learn the same methodology that resulted in the performance that we accomplished in the benchmarking project and you will be able to utilize the same principles for your own example In Part 3 we will share with the user the details of the benchmarking project that was done including the methodology the application architecture the performance metrics and hardware configuration The final part of this section is dedicated to present the users with the test results and analysis as well as a summary of the project The team that wrote this redbook This redbook was produced by a team of Versant specialists from around the world working with the IBM International Technical Support Organization San Jose Center Sanjiv Chhabria is a technical writer at Versant Corporation His experience includes writin
110. w department is also created gt REMOVE Department Removes the specified department gt FIND Employees Finds all employees of the specified department gt FIND All Employees Finds all the employees in all departments This example demonstrates a SessionBean directly accessing the persistent objects It illustrates a SessionBean using SessionBean helper classes and Java Versant Interface JVI to access the persistent objects This SessionBean accesses the persistent objects directly and provides the required interfaces by the client Since the SessionBean accesses the persistent entities directly it provides a much faster execution when compared to accessing entity beans which has high overheads of locating and accessing beans 4 2 Running the example Upon completion of this section you will successfully build deploy and test a typical EJB Session Managed Persistence Application This means you will utilize and witness the features of enJin as well as learn about specific enJin implementation 54 Accelerating IBM WebSphere Application Server Performance with Versant enJin The six steps are as follows Import the jar file Implementation of Session Managed Persistence Categorize the persistent classes Create the database Deploy and test the application View the results in the database odi e OD 4 2 1 Import the jar file Launch your WSAD IDE Rather than having to write every line of code the JAR file t
111. wed by a vejbPostMethod in order to release the session back to the pool Chapter 4 Session managed persistence 63 helper vejbPostMethod sc this The vejbPostMethod should be invoked in the finally block of the bean s methods to ensure that the resources used are released even if an exception is encountered in the processing of the method 4 2 3 Categorize the persistent class 64 Once the class files are created the Persistence Tool can be used to mark the persistence category of each class The basic persistence categories are Not Persistent and Persistence Capable There are other more advanced persistence categories that may be used under certain circumstances and include Persistence Aware Persistent Always or Transparent Dirty Owned For details on these categories and appropriate use of each of them please refer to the Java Versant Interface Usage Manual which may be accessed directly from your enJin installation lt ENJIN_ROOT gt doc jvi usage html frame html or from our Web site at http www versant com developer _docs vds jvi doc index html In this section we will merely demonstrate the utilization of the enJin Persistent tool The enJin Persistence tool can be invoked by selecting the project we have created in the navigator view and by right clicking once the project has been selected as shown in Figure 4 8 Accelerating IBM WebSphere Application Server Performance with Versant enJin Figure 4 8 enJi
112. without any mapping to from a relational data model EJB persistence For integration with leading EJB Application Servers Versant enJin supports both Bean Managed Persistence BMP and Container Managed Persistence CMP in accordance with the EJB 1 1 specification This enables programmers to take full advantage of Versant enJin s high performance object storage without having to explicitly manage database connections transactions or persistence In the future Versant enJin will support the Java Transaction API JTA to ensure co ordination of transactions with other compliant data sources 1 4 2 JavaServer pages and servlet support A key component of today s e business application is to provide highly customized information and presentation to end users enJin integrates seamlessly with the Web components of the J2EE standard and provides compliant APIs to fully leverage the functionality of building Web based applications that serve dynamic content and allow access to seamless persistence to your Java objects 1 4 3 Data replication Increasingly as e business applications are deployed to multiple sites and data centers the ability to replicate data is crucial This is true for performance reasons as well as to provide for high availability of service Support for intra tier replication is achieved using Versant enJin s asynchronous replication capability This capability provides an open framework for master slave or peer to peer re
113. y of the benchmark project Specific topics that will be covered include The Benchmark Application Performance metrics WebSphere configuration Hardware configuration YYY Yy Copyright IBM Corp 2002 83 5 1 Benchmark application 84 The trade management application used for the benchmarking project was designed to reflect the performance metrics is intended to model the basic services required of a common financial application that manages account positions on investment The basic use cases surround a theoretical company representing a brokerage whose employees manage corporate 401K plans A particular employee of the brokerage will act as the custodian of several corporate portfolios and make trades to change the position of the corporation within several market segments In order to provide performance measures that would be able to accurately reflect the performance characteristics of real world applications a stock trading application was designed and implemented for the benchmark tests This trade management application was intended to model the basic services required for a common financial application managing account positions on investments Based on the application architectures shown in Figure 5 1 two separate implementations of this application were developed one for the baseline WebSphere RDBMS architecture and another separate implementation for the WebSphere enJin RDBMS architecture Accelerating IBM WebSphe
Download Pdf Manuals
Related Search
Related Contents
Digitus DK-1641-A-150 networking cable V7 Metro Anti-slip Case for iPhone 5s 設計図書 Plus Library Manual Tutoriel d`inscription d`élèves sur OPUSS Copyright © All rights reserved.
Failed to retrieve file