Prosecution Insights
Last updated: October 02, 2026
Application No. 18/670,954

MULTI-LEVEL RECORD AND REPLAY OF JAVA APPLICATIONS

Final Rejection §103
Filed
May 22, 2024
Priority
Feb 06, 2024 — provisional 63/550,104
Examiner
PAN, HANG
Art Unit
2193
Tech Center
2100 — Computer Architecture & Software
Assignee
ORACLE INTERNATIONAL Corporation
OA Round
2 (Final)
75%
Grant Probability
Favorable
3-4
OA Rounds
11m
Est. Remaining
99%
With Interview

Examiner Intelligence

Grants 75% — above average
75%
Career Allowance Rate
481 granted / 644 resolved
+19.7% vs TC avg
Strong +26% interview lift
Without
With
+25.6%
Interview Lift
resolved cases with interview
Typical timeline
3y 3m
Avg Prosecution
23 currently pending
Career history
679
Total Applications
across all art units

Statute-Specific Performance

§101
16.8%
-23.2% vs TC avg
§103
62.9%
+22.9% vs TC avg
§102
7.6%
-32.4% vs TC avg
§112
9.0%
-31.0% vs TC avg
Black line = Tech Center average estimate • Based on career data from 644 resolved cases

Office Action

§103
DETAILED ACTION Notice of Pre-AIA or AIA Status The present application, filed on or after March 16, 2013, is being examined under the first inventor to file provisions of the AIA . This office action is in response to applicant’s amendment filed on 07/22/2026. Claims 1-21 are pending and examined. Claim 21 is newly added. Response to Arguments Applicant’s arguments filed on 07/22/2026 have been fully considered. Per claims 1, 2 and 9, applicant’s arguments are moot in light of new grounds of rejection with new reference applied (Lindo). Per claim 10, applicant argued The Office action says "Daudel configuring a system class loader [0057]; the replay core emits both (a) the loaded class's name and (b) the class loader index of the class loader that loaded the class)." Here, cited "emits" means announcing an observation, not claimed "configuring". The examiner respectfully disagrees. The replay core announces such information after the class loader is configured and loaded. Thus, this announcement implies the configuring and loading is completed. Per claim 12, applicant argued The Office action says "Daudel a first identifier that identifies said first invoking [0146]-[0148] assigns a unique identifier to the object". An invocation is not an "object". Daudel is mischaracterized. The examiner respectfully disagrees. An object instance is the result of an invocation. Thus, Daudel described an object with a unique identifier after invocation. Per claims 3-4, applicant’s arguments are persuasive, rejection is withdrawn. The examiner is available for a phone interview with applicant. Claim Rejections - 35 USC § 103 The following is a quotation of 35 U.S.C. 103 which forms the basis for all obviousness rejections set forth in this Office action: A patent for a claimed invention may not be obtained, notwithstanding that the claimed invention is not identically disclosed as set forth in section 102, if the differences between the claimed invention and the prior art are such that the claimed invention as a whole would have been obvious before the effective filing date of the claimed invention to a person having ordinary skill in the art to which the claimed invention pertains. Patentability shall not be negated by the manner in which the invention was made. Claims 1-2, 5, 7-21 are rejected under 35 U.S.C. 103 as being unpatentable over Daudel et al. (US PGPUB 2014/0229947) hereinafter Daudel, in view of Lindo et al. (US patent 7506318) hereinafter Lindo. Per claim 1, Daudel discloses “a computer-implemented method comprising: configuring for nondeterminism recording all of: the particular subroutine as a recorded subroutine, a native subroutine that is not a Java method, and a Java method that invokes the native subroutine;” (paragraphs [0022][0102][0107]; an application program's execution which might be subject to non-determinism are performed in a deterministic manner while the application program's execution is being recorded in a virtual machine environment so that the application program's behavior, when played back in that virtual machine environment, will duplicate the behavior that the application program exhibited when originally executed and recorded; i.e. subroutines of a program are recorded for deterministic replay; program code within application program, including any program code within development kits, is non-native code (i.e. Java code), while code within virtual machine and operating system is native code, when an instruction within application invokes code within JVM, this invocation is called a native call, a JAVA bytecode might make a native call (i.e. a Java method invokes a native subroutine); whenever a native function calls back into application program, the native function does so through the JAVA Native Interface; i.e. a native call); “invoking the native subroutine by invoking the Java method; detecting, for the native subroutine, that the Java method has activated nondeterminism recording” (paragraphs [0102][0106]; when an instruction within application invokes code within JVM, this invocation is called a native call, a JAVA bytecode might make a native call (i.e. a Java method invokes a native subroutine); in order to ensure that an application program's execution is faithfully and consistently reproduced during replay time, the replay core records, during record time, (a) return values and (b) output parameter values of native function calls, each function call may indicate (a) a return variable that is to receive the result returned by the function call, (b) a method or function name, and (c) a list of parameters; i.e. during record time, nondeterminism recording is enabled to record subroutine parameter values to ensure correct replay); “invoking, after said invoking the Java method finished, the recorded subroutine; and detecting, for the recorded subroutine, that nondeterminism recording is inactive” (paragraph [0108]; at replay time (i.e. at a time after invoked Java method finished), the replay core again detects whenever a native function call is going to be made, instead of permitting the call to be made, the replay core instead reads the previously recorded return value (invoking recorded subroutine) and provides that value to the instruction that would have made the call; during replay time, the nondeterminism recording is inactive). Daudel does not explicitly teach detecting that a particular subroutine can throw an exception; configuring, in response to said detecting, for nondeterminism recording all of: the particular subroutine as a recorded subroutine. However, Lindo suggests the above (Fig. 2B, column 10, line 60 - column 11, line 15; a replay system installs an exception handler for each application function, the exception handler monitors whether an exception is thrown (detecting if a function throws an exception); in response to the detecting, in a record mode, record the nondeterministic data for the function (particular subroutine) that threw the exception). It would have been obvious to one of ordinary skill in the art before the effective filing date of the claimed invention to combine Daudel and Lindo to only enable non-deterministic recording of functions after an exception is detected, this would increase application performance (and saves unnecessary recorded debug data when no exception is happening). Per claim 2, Daudel in view of Lindo further discloses configuring the native subroutine comprises registering an interceptor that performs said detecting that the Java method has activated nondeterminism recording (Daudel, paragraphs [0028][0039]; during record time of a Java program, the replay core listens for and intercepts each invocation of the getResourceAsStream method of each class loader, the replay core replaces the invocation of each class loader's getResourceAsStream method with an invocation of the replay core's own (different) implementation of the getResourceAsStream method; Lindo, column 10, line 60 - column 11, line 15; a replay system installs an exception handler (registering an interceptor) for each application function, the exception handler monitors whether an exception is thrown (detecting if a function throws an exception); in response to the detecting, if in a record mode (record mode is activated), record the nondeterministic data for the function that threw the exception). Per claim 5, Daudel further discloses said invoking the native subroutine comprises a first Java virtual machine recording a unique identifier of a Java object; the computer-implemented method further comprises a second Java virtual machine performing: recreating the Java object as a replayed object, and associating the unique identifier of the Java object with a reference of the replayed object. (paragraphs [0026][0146][0152]; a Java application executes in a virtual machine; the replay core assigns a unique identifier to an object in the application; the replay core stores the mapping between the object and the object's assigned identifier; during replay time, the finalizeFlush method, called at the same deterministic point as on record, replays the identifiers of the objects that were previously finalized during the corresponding record time). Per claim 7, Daudel further discloses the Java method is built into a Java virtual machine; said configuring the Java method comprises instrumenting the Java method (paragraph [0035]; core JVM classes loaded by the bootstrap class loader are instrumented in such a way that causes these core JVM classes to be executed in a deterministic manner; all of the core Java Virtual Machine classes that loaded before the loading of the replay core are statically instrumented and stored in a JAR file called “ReplayJVM.jar”). Per claim 8, Daudel further discloses the Java method consists of first bytecode; said instrumenting the Java method comprises inserting second bytecode into said first bytecode. (paragraphs [0035][0046][0065]; core JVM classes loaded by the bootstrap class loader are instrumented in such a way that causes these core JVM classes to be executed in a deterministic manner; during record time, the transformClass function modifies a class's bytecodes and then stores the modified class in the local cache (i.e. modifying a first bytecode with a second bytecode)). Per claim 9, Daudel in view of Lindo further suggests detecting that a particular method can experience an input/output (I/O) failure; the particular method is selected from a group comprising the recorded subroutine, the native subroutine, and the Java method; said configuring for nondeterminism recording the particular method is responsive to said detecting that the particular method can experience the I/O failure (Daudel; paragraph [0104]) disk I/O accesses and network communications may be sources of non-determinism in a program's execution; Lindo, Fig. 2B, column 10, line 60 - column 11, line 15; column 8, line 35-42; sources of nondeterminism may include I/O events, a replay system installs an exception handler for each application function, the exception handler monitors whether an exception is thrown (detecting if a function throws an I/O exception); in response to the detecting, in a record mode, record the nondeterministic data for the function that threw the exception). Per claim 10, Daudel further discloses wherein said configuring the Java method comprises configuring a system class loader (paragraph [0057]; the replay core emits both (a) the loaded class's name and (b) the class loader index of the class loader that loaded the class, which indicates the completion of configuring and loading of a system class loader). Per claim 11, Daudel further discloses the computer-implemented method further comprises a particular method throwing an exception in a first Java virtual machine; the particular method is selected from a group comprising the recorded subroutine, the native subroutine, and the Java method; the computer-implemented method further comprises replaying the exception in a second Java virtual machine (paragraphs [0065]-[0067]; a class (a java method) fails verification, the JVM (first JVM) throws an exception; The replay core invokes the “load class” method of each such class loader, passing the name of the class to be loaded as input. This causes the same classes that were loaded (by a second JVM during replay time) during the verification process at record time to be loaded during the verification process at replay time, and in the very same order. As a result, classes loaded during the verification process are loaded in a deterministic manner, thereby eliminating variance between record and replay). Per claim 12, Daudel further discloses said invoking the Java method is a first invoking; said first invoking comprises generating a first identifier that identifies said first invoking; the first identifier is not based on a timestamp; the computer-implemented method further comprises second invoking the Java method, said second invoking comprises generating a second identifier that identifies said second invoking (paragraphs [0146]-[0148]; the replay core assigns a unique identifier to the object, the replay core does not add any reference to the object, the replay core stores the mapping between the object and the object's assigned identifier; i.e. if a Java method is invoked two times, two object instances are created, each object instance would be assigned its own unique identifier). Claims 13-21 recite similar limitations as claims 1-2, 5, 7, 9-12. Therefore, claims 13-21 are rejected under similar rationales as claims 1-2, 5, 7, 9-12. Objected Claim Claims 3-4, 6 are objected to as being dependent upon a rejected base claim, but would be allowable if rewritten in independent form including all of the limitations of the base claim and any intervening claims. Conclusion Applicant's amendment necessitated the new ground(s) of rejection presented in this Office action. Accordingly, THIS ACTION IS MADE FINAL. See MPEP § 706.07(a). Applicant is reminded of the extension of time policy as set forth in 37 CFR 1.136(a). A shortened statutory period for reply to this final action is set to expire THREE MONTHS from the mailing date of this action. In the event a first reply is filed within TWO MONTHS of the mailing date of this final action and the advisory action is not mailed until after the end of the THREE-MONTH shortened statutory period, then the shortened statutory period will expire on the date the advisory action is mailed, and any nonprovisional extension fee (37 CFR 1.17(a)) pursuant to 37 CFR 1.136(a) will be calculated from the mailing date of the advisory action. In no event, however, will the statutory period for reply expire later than SIX MONTHS from the mailing date of this final action. Any inquiry concerning this communication or earlier communications from the examiner should be directed to HANG PAN whose telephone number is (571)270-7667. The examiner can normally be reached 9 AM to 5 PM. Examiner interviews are available via telephone, in-person, and video conferencing using a USPTO supplied web-based collaboration tool. To schedule an interview, applicant is encouraged to use the USPTO Automated Interview Request (AIR) at http://www.uspto.gov/interviewpractice. If attempts to reach the examiner by telephone are unsuccessful, the examiner’s supervisor, Chat Do can be reached at 571-272-3721. The fax phone number for the organization where this application or proceeding is assigned is 571-273-8300. Information regarding the status of published or unpublished applications may be obtained from Patent Center. Unpublished application information in Patent Center is available to registered users. To file and manage patent submissions in Patent Center, visit: https://patentcenter.uspto.gov. Visit https://www.uspto.gov/patents/apply/patent-center for more information about Patent Center and https://www.uspto.gov/patents/docx for information about filing in DOCX format. For additional questions, contact the Electronic Business Center (EBC) at 866-217-9197 (toll-free). If you would like assistance from a USPTO Customer Service Representative, call 800-786-9199 (IN USA OR CANADA) or 571-272-1000. /HANG PAN/Primary Examiner, Art Unit 2193
Read full office action

Prosecution Timeline

May 22, 2024
Application Filed
Apr 29, 2026
Non-Final Rejection mailed — §103
May 18, 2026
Examiner Interview Summary
May 18, 2026
Applicant Interview (Telephonic)
Jul 22, 2026
Response Filed
Sep 22, 2026
Final Rejection mailed — §103 (current)

Precedent Cases

Applications granted by this same examiner with similar technology

Patent 12743364
WORKFLOW IMPACT ANALYSIS
2y 7m to grant Granted Sep 22, 2026
Patent 12730741
SERVICE CONFIGURATION METHOD AND APPARATUS
3y 5m to grant Granted Sep 08, 2026
Patent 12730629
LIVE FIRMWARE UPDATE SWITCHOVER
3y 0m to grant Granted Sep 08, 2026
Patent 12718106
SOFTWARE TEST CASE MAINTENANCE
2y 9m to grant Granted Aug 25, 2026
Patent 12711044
System and method to dynamically configure cloud resources
2y 6m to grant Granted Aug 18, 2026
Study what changed to get past this examiner. Based on 5 most recent grants.

Strategy Recommendation AI-generated — please review before filing

Get a prosecution strategy drawn from examiner precedents, rejection analysis, and claim mapping.
Typically takes 5-10 seconds — AI-generated, attorney review required before filing

Prosecution Projections

3-4
Expected OA Rounds
75%
Grant Probability
99%
With Interview (+25.6%)
3y 3m (~11m remaining)
Median Time to Grant
Moderate
PTA Risk
Based on 644 resolved cases by this examiner. Grant probability derived from career allowance rate.

Sign in with your work email

Enter your email to receive a magic link. No password needed.

Personal email addresses (Gmail, Yahoo, etc.) are not accepted.

Free tier: 3 strategy analyses per month