Source: https://patents.google.com/patent/US7287247B2/en
Timestamp: 2019-11-18 15:03:54
Document Index: 211019830

Matched Legal Cases: ['art 200', 'art 200', 'art 200', 'art 300', 'art 300', 'art 300', 'art 400', 'art 400', 'art 400', 'art 500', 'art 500', 'art 500', 'art 600', 'art 600', 'art 600', 'art 700', 'art 700', 'art 700', 'art 800', 'art 800', 'art 800']

US7287247B2 - Instrumenting a software application that includes distributed object technology - Google Patents
US7287247B2
US7287247B2 US10/293,626 US29362602A US7287247B2 US 7287247 B2 US7287247 B2 US 7287247B2 US 29362602 A US29362602 A US 29362602A US 7287247 B2 US7287247 B2 US 7287247B2
US10/293,626
US20040093588A1 (en
2002-11-12 Priority to US10/293,626 priority Critical patent/US7287247B2/en
2003-02-12 Assigned to HEWLETT-PACKARD COMPANY reassignment HEWLETT-PACKARD COMPANY ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: GSCHWIND, THOMAS, GARG, PANKAJ K.
2004-05-13 Publication of US20040093588A1 publication Critical patent/US20040093588A1/en
2007-10-23 Publication of US7287247B2 publication Critical patent/US7287247B2/en
238000005516 engineering processes Methods 0 abstract claims description title 16
The software applications that operate on computer systems may be implemented in many different ways. For example, a programming language such as the Java™ 2 Platform, Enterprise Edition (J2EE™) developed by Sun Microsystems may be utilized in order to create useable software applications. Within J2EE there are distributed objects which are referred to as Enterprise JavaBeans™ (EJB™). It should be appreciated that a software application can include multiple Enterprise JavaBeans. As such, as part of a transaction, one Enterprise JavaBean (or distributed object) of a software application can invoke or call another Enterprise JavaBean within the same or another application. Furthermore, the called Enterprise JavaBean (or object) can then call or invoke a third Enterprise JavaBean and so on: Additionally, the third Enterprise JavaBean may subsequently return a value to the second Enterprise JavaBean. Consequently, the second Enterprise JavaBean may then do some computations with the received value in order to provide a value to the first Enterprise JavaBean. It should be understood that this transaction may have been initiated by a call issued by a client computer to the software application operating on a server.
FIG. 1 is a block diagram of an automated dynamic interface adaptation system in accordance with an embodiment of the present invention.
FIG. 2 is a flowchart of steps performed by the extractor module of FIG. 1 in accordance with an embodiment of the present invention.
FIG. 3 is a flowchart of steps performed by the modifier module of FIG. 1 in accordance with an embodiment of the present invention.
FIG. 4 is a flowchart of steps performed by the wrapper module of FIG. 1 in accordance with an embodiment of the present invention.
FIG. 5 is a flowchart of steps performed by the class name changer module of FIG. 1 in accordance with an embodiment of the present invention.
FIG. 6 is a flowchart of steps performed by a dynamic interface adapter in accordance with an embodiment of the present invention.
FIG. 7 is a flowchart of steps performed by a dynamic interface adapter in accordance with another embodiment of the present invention.
FIG. 8 is a flowchart of steps performed by a dynamic interface adapter in accordance with yet another embodiment of the present invention.
FIG. 9 is a block diagram of an exemplary network that may be utilized in accordance with an embodiment of the present invention.
FIG. 1 is a block diagram of an automated dynamic interface adaptation system 100 in accordance with an embodiment of the present invention for implementing management instrumentation within compiled software applications (e.g., 102) that include distributed object technology. For example, the automated dynamic interface adaptation system 100 may be utilized with distributed object technologies such as, but is not limited to, the Microsoft®.NET programming language and the Java™ 2 Platform, Enterprise Edition (J2EE™) developed by Sun Microsystems. The management instrumentation implemented by the automated dynamic interface adaptation system 100 may be utilized for, but is not limited to, measuring the amount of time spent by a distributed object during a transaction of the compiled software application (e.g., 102). In one embodiment, the automated dynamic interface adaptation system 100 may be a software system implemented in a computer system. Alternatively, the automated dynamic interface adaptation system 100 may be implemented by hardware or by any combination of hardware and software.
FIG. 2 is a flowchart 200 of steps performed by the extractor module 104 of FIG. 1 in accordance with an embodiment of the present invention. Although specific steps are disclosed in flowchart 200, such steps are exemplary. That is, the extractor module 104 is well suited to performing various other steps or variations of the steps recited in FIG. 2. It should be appreciated that the steps of flowchart 200 may be performed by software, by hardware or by any combination of software and hardware.
interface WeatherHome extends EJBHome { Weather create( ) throws javax.ejb.CreateException, java.rmi.RemoteException; }
interface Weather extends EJBobject { int getTemp(String city) throws java.rmi.RemoteException; }
FIG. 3 is a flowchart 300 of steps performed by the modifier module 106 of FIG. 1 in accordance with an embodiment of the present invention. Although specific steps are disclosed in flowchart 300, such steps are exemplary. That is, the modifier module 106 is well suited to performing various other steps or variations of the steps recited in FIG. 3. It should be understood that the steps of flowchart 300 may be performed by software, by hardware or by any combination of software and hardware.
interface WeatherHome extends Instrumented, EJBHome { Weather create( ) throws javax.ejb.CreateException, java.rmi.RemoteException; }
interface Weather extends Instrumented, EJBobject { int getTemp(String city) throws java.rmi.RemoteException; int getTemp(Info info, String city) throws java.rmi.RemoteException; }
FIG. 4 is a flowchart 400 of steps performed by the wrapper module 112 of FIG. 1 in accordance with an embodiment of the present invention. Although specific steps are disclosed in flowchart 400, such steps are exemplary. That is, the wrapper module 112 is well suited to performing various other steps or variations of the steps recited in FIG. 4. It should be appreciated that the steps of flowchart 400 may be performed by software, by hardware or by any combination of software and hardware.
public class WrappedWeatherBean implements SessionBean { Weather Bean aggregate=null; public WrappedWeatherBean( ) { aggregate=new WeatherBean( ); } public int hashCode( ) { return aggregate.hashCode( ); } public boolean equals(Object p0) { return aggregate.equals(p0); } public java.lang.String toString( ) { return aggregate.toString( ); } public void setSessionContext(javax.ejb.SessionContext p0) { aggregate.setSessionContext(p0); } public void ejbCreate( ) { aggregate.ejbCreate( ); } public void ejbRemove( ) { aggregate.ejbRemove( ); } public void ejbActivate( ) { aggregate.ejbActivate( ); } public void ejbPassivate( ) { aggregate.ejbPassivate( ); } public int getTemp(String p0) { return aggregate.getTemp(p0); } public int getTemp(Info info, String p0) { /* * report and process additional information * provided by client in info object */ return aggregate.getTemp(p0); } }
FIG. 5 is a flowchart 500 of steps performed by the class name changer module 118 of FIG. 1 in accordance with an embodiment of the present invention. Although specific steps are disclosed in flowchart 500, such steps are exemplary. That is, the class name changer module 118 is well suited to performing various other steps or variations of the steps recited in FIG. 5. It should be understood that the steps of flowchart 500 may be performed by software, by hardware or by any combination of software and hardware.
FIG. 6 is a flowchart 600 of steps performed by an automatic dynamic interface adapter in accordance with an embodiment of the present invention for instrumenting a compiled software application that includes distributed object technology. Although specific steps are disclosed in flowchart 600, such steps are exemplary. That is, the automatic dynamic interface adapter is well suited to performing various other steps or variations of the steps recited in FIG. 6. It should be appreciated that the steps of flowchart 600 may be performed by software, by hardware or by any combination of software and hardware.
public final class WeatherHomeAdapter implements Instrumented, WeatherHome { WeatherHome home; public WeatherHomeAdapter(WeatherHome home) { this.home=home; } public void remove(Object p0) throws java.rmi.RemoteException, javax.ejb.RemoveException { home.remove(p0); } public void remove(javax.ejb.Handle p0) throws java.rmi.RemoteException, javax.ejb.RemoveException { home.remove(p0); } public javax.ejb.EJBMetadata getEJBMetadata( ) throws java.rmi.RemoteException { return home.getEJBMetadata( ); } public javax.ejb.HomeHandle getHomeHandle( ) throws java.rmi.RemoteException { return home.getHomeHandle( ); } public Weather create( ) throws java.rmi.RemoteException, javax.ejb.CreateException { return new WeatherAdapter(home.create( )); } }
public final class WeatherAdapter implements Instrumented, Weather { Weather remote; public WeatherAdapter(Weather remote) { this.remote=remote; } public void remove( ) throws java.rmi.RemoteException, javax.ejb.RemoveException { remote.remove( ); } public javax.ejb.EJBHome getEJBHome( ) throws java.rmi.RemoteException { return remote.getEJBHome( ); } public javax.ejb.Handle getHandle( ) throws java.rmi.RemoteException { return remote.getHandle( ); } public Object getPrimaryKey( ) throws java.rmi.RemoteException { return remote.getPrimaryKey( ); } public boolean isIdentical(javax.ejb.EJBObject p0) throws java.rmi.RemoteException { return remote.isIdentical(p0); } public int getTemp(String p0) throws java.rmi.RemoteException { /* * additional information is injected with new Info( ). */ return remote.getTemp(new Info( ), p0); } public int getTemp(Info info, String p0) throws java.rmi.RemoteException { return remote.getAddress(info, p0); } }
FIG. 7 is a flowchart 700 of steps performed by an automatic dynamic interface adapter in accordance with another embodiment of the present invention for instrumenting a compiled software application that includes distributed object technology. Although specific steps are disclosed in flowchart 700, such steps are exemplary. That is, the automatic dynamic interface adapter is well suited to performing various other steps or variations of the steps recited in FIG. 7. It should be understood that the steps of flowchart 700 may be performed by software, by hardware or by any combination of software and hardware.
FIG. 8 is a flowchart 800 of steps performed by an automatic dynamic interface adapter in accordance with yet another embodiment of the present invention for instrumenting a compiled software application that includes distributed object technology. Although specific steps are disclosed in flowchart 800, such steps are exemplary. That is, the automatic dynamic interface adapter is well suited to performing various other steps or variations of the steps recited in FIG. 8. It should be understood that the steps of flowchart 800 may be performed by software, by hardware or by any combination of software and hardware.
FIG. 9 is a block diagram of an exemplary network 900 that may be utilized in accordance with an embodiment of the present invention. Within networking environment 900, client programs (e.g., web browsers) may operate on client devices 902 and 904 which are able to communicate with one or more software applications operating on server 908 via network 906. Specifically, network 900 includes server 908 and client devices 902 and 904 which are each communicatively coupled to network 906. It is appreciated that server 908 and clients 902 and 904 may be communicatively coupled to network 906 via wired and/or wireless communication technologies. The network 906 may be implemented in a wide variety of ways in accordance with the present embodiment. For example, network 906 may be implemented as, but not limited to, a local area network (LAN), a wide area network (WAN) and/or the Internet.
deriving an interface and an implementation class of at least one object utilized by said compiled software application;
providing an instrumented interface of said at least one object to include a communication functionality, said communication functionality enabling a client to communicate with said object;
providing an instrumented implementation of said object to include a performance measuring instrumented function with said at least one object, said performance measuring instrumented function utilized to measure a performance aspect of said at least one object;
utilizing said instrumented interface and said instrumented implementation to form at least one instrumented object; and
redirecting said compiled software application to utilize said at least one instrumented object instead of said at least one object, wherein said redirecting is performed by instrumenting an environment said client operated within.
4. The method as described in claim 1 wherein said forming said at least one instrumented object includes wrapping said instrumented interface and said instrumented implementation of said at least one object in a wrapper.
5. The method as described in claim 1 wherein said redirecting a call to said at least one object from said compiled software application to said at least one instrumented object includes changing a class name within a deployment descriptor associated with said at least one object.
an extractor module that derives an interface and an implementation class of at least one object utilized by said compiled software application;
a modifier module that modifies said interface of said at least one object to include a communication functionality, said communication functionality enabling a client to communicate with said at least one object;
a wrapper module that utilizes a wrapper to wrap an instrumented function with said at least one object to form at least one wrapped object, said instrumented function including a performance measuring functionality enabling said instrumented function to measure a performance aspect of said at least one object; and
a class name changer module that replaces a class name of said at least one object within the at least one object's deployment descriptor to a class name of said at least one wrapped object, such that a call to said at least one object is redirected to said at least one wrapped object, wherein said redirect is performed by an environment module that instruments an environment said client executes within.
9. The system of claim 8 wherein said instrumented function measures the amount of time spent by said object during a transaction of said compiled software application.
10. The system of claim 8 wherein said interface is a home interface or a remote interface.
11. The system of claim 8 wherein said class name changer module changes said class name of said at least one object within a deployment descriptor of said compiled software application to a class name associated with said at least one wrapped object.
12. The system of claim 8 wherein said client includes a software application.
13. The system of claim 8 wherein said distributed object technology includes a .NET programming language or a Java programming language.
means for acquiring an interface and an implementation class of at least one distributed object utilized by said compiled software application;
means for modifying said interface to generate an instrumented interface of said at least one distributed object to include a communication functionality, said communication functionality enabling a client to communicate with said at least one distributed object;
means for providing an instrumented implementation class of said distributed object to include a performance measuring functionality with said at least one distributed object, said performance measuring functionality enabling an instrumented function to measure a performance aspect of said at least one distributed object;
means for forming at least one instrumented distributed object comprising said instrumented interface and said instrumented implementation; and
means for capacitating said compiled software application to use said instrumented distributed object that includes said instrumented function instead of said distributed object, wherein said capacitating means is performed by an environment module that instruments an environment said client executes within.
15. The system as described in claim 14 wherein said instrumented function measures the amount of time spent by said at least one distributed object during a transaction of said compiled software application.
16. The system as described in claim 14 wherein said interface is a home interface or a remote interface.
17. The system as described in claim 14 wherein said client includes a software application.
18. The system of claim 14 wherein said means for capacitating said compiled software application to use said at least one instrumented distributed object includes changing a class name within a deployment descriptor associated with said distributed object.
19. The system of claim 14 wherein said means for providing said at least one instrumented distributed object includes wrapping said instrumented interface and said instrumented implementation of said at least one distributed object in a wrapper.
20. The system of claim 14 wherein said distributed object technology includes a .NET programming language or a Java programming language.
US10/293,626 2002-11-12 2002-11-12 Instrumenting a software application that includes distributed object technology Active 2024-08-31 US7287247B2 (en)
US10/293,626 US7287247B2 (en) 2002-11-12 2002-11-12 Instrumenting a software application that includes distributed object technology
US20040093588A1 US20040093588A1 (en) 2004-05-13
US7287247B2 true US7287247B2 (en) 2007-10-23
US10/293,626 Active 2024-08-31 US7287247B2 (en) 2002-11-12 2002-11-12 Instrumenting a software application that includes distributed object technology
WO2008040084A1 (en) * 2006-10-05 2008-04-10 Waratek Pty Limited Cyclic redundant multiple computer architecture
US9256511B2 (en) 2012-09-04 2016-02-09 International Business Machines Corporation Computer software application self-testing
2002-11-12 US US10/293,626 patent/US7287247B2/en active Active
"ATOM: a system for building customized program analysis tools", Amitabh Srivastava, Alan Eustace , Conference on Programming Language Design and Implementation archive, 1994, pp. 196-205, ISBN:0-89791-662-X. *
US20040093588A1 (en) 2004-05-13
Forman et al. 2005 Java reflection in action
US8490050B2 (en) 2013-07-16 Automatic generation of user interfaces
EP1727041A2 (en) 2006-11-29 Pipeline architecture for use with net-centric application program architectures
JP2009515252A (en) 2009-04-09 IT operation / policy modeling method
US7849445B2 (en) 2010-12-07 Remote user interface for external connections